STM32通信协议 总集篇 (速记版)

名称引脚常用在双工时钟电平设备
USARTTX、RX单片机和pc,单片机和单片机全双工异步单端点对点
I2CSCL、SDA单片机和单片机半双工同步单端多设备
SPISCLK、MOSI、MISO、CS单片机和单片机全双工同步单端多设备
CANCAN_H、CAN_L智能汽车半双工异步差分多设备
USBDP、DM半双工异步差分点对点

串口通信(RS232/485等)

RS232/422/485的公母头

现在电脑上一般都没有RS-232(DB9)接口,俗称串口接口,使用USB接口进行串口通信。

        RS-232电平直接连接到STM32上会烧掉芯片,也就是COMS/TTL电平不能与RS-232电平直接交换信息,需要一个电平转换芯片,阿波罗开发板选择的是 TP3232(也可以用 SP3232)。同时需要USB/串口转换电路芯片(CH340)

USART和RS232/485的联系和区别

狭义串口:指串口协议,就是时序图、数据收发先后顺序等,是抽象出来的协议;
广义串口:指符合串口协议的接口,UART、RS232、RS485在实际工作中都叫串口;
UART:主要指Soc端的串口控制器和引脚,也是串口编程主要考虑的;
RS232/485是两个Soc的串口引脚相连的中间电路,负责解决传输距离和电压不匹配问题;

串口协议规定了数据的传输时序

UART 是指 SOC 端 串口控制器 和 引脚

RS232/485 是电平标准,具体的通信协议都是串口协议,但是使用的电压范围、是电平信号还是差分信号等不同

USART

USART基本介绍

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)

通用同步/异步收发器。

UART 就是异步收发器。通常很少用到 USART 的同步功能。

比特率每秒钟传输多少个比特位。对于接收方来说,意味着多久取一次电平数据。

波特率:每秒传输多少个码元。USART的码元就是比特,故比特率=波特率。

起始位下降沿+1bit低电平 代表起始位

数据位低位先行。可选5~9位,常用 8 位

校验位:奇/偶校验,数据位1的个数为奇/偶则置位。

停止位1bit高电平代表停止位

0x55,串口通信先传低位再传高位
0xff

        STM32的USART的同步功能只是多了个IO口支持时钟信号输出,但是不支持时钟信号输入,这个同步模式更多的是为了,兼容别的协议或者特殊用途而设计的,并不支持两个USART之间进行同步通信。

STM32的USART基本结构

image-20231204160825276
USART基本结构

波特率发生器 的时钟来源是 APB2/APB1

STM32F1有5个串口3个USART2个UART

USART1挂载在APB2总线(72MHZ),其他挂载在APB1总线(36MHZ)

        经过波特率发生器分频后的总线信号通向发送控制器接收控制器 。

        发送控制器和接收控制器用来控制发送数据寄存器发送移位寄存器接收数据寄存器接收移位寄存器(右移)。通过GPIO口的复用输出倒TX、RX引脚。

        当数据由数据寄存器转移

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[php7系列]--php7里的返回类型声明和标量类型声明及不要用isset判断数组是否定义某个KEY-最好使用array_key_exists

一、[php7系列]--php7里的返回类型声明和标量类型声明 php7里增加了返回类型声明和标题类型声明,可以理解为对一个方法的输入输出进行了类型验证,在PHP7之前,方法里的数组、对象参数是有类型声明的,但其它的整数、字符串等类型声明…

【海贼王航海日志:前端技术探索】HTML你学会了吗?(一)

目录 1 -> HTML概念 2 -> HTML结构 2.1 -> 认识HTML标签 2.2 -> HTML文件基本结构 2.3 -> 标签层次结构 3 -> 快速生成代码框架 4 -> HTML常见标签 4.1 -> 注释标签 4.2 -> 标题标签 4.3 -> 段落标签 4.4 -> 换行标签 4.5 ->…

ES(ElasticSearch)倒排索引

目录 正排与倒排索引 1.正排索引 作用: 优点: 缺点: 2.倒排索引 原理: 倒排索引的构建流程: 倒排索引的搜索流程: 优点: 缺点: 3. 应用场景 倒排索引中有几个非常重要的概念…

OpenCV库学习之cv2.magnitude函数

OpenCV库学习之cv2.magnitude函数 一、简介 cv2.magnitude是OpenCV库中的一个函数,用于计算两个相同尺寸的单通道数组的逐元素乘积的欧几里得范数。在图像处理中,这个函数通常用来结合两个方向上的梯度图像(例如,通过Sobel算子得…

快速了解jQuery

jQuery是一个快速、简洁且功能强大的JavaScript库,旨在简化HTML文档操作、事件处理、动画设计和Ajax交互。 通过其“写得更少,做得更多”的核心宗旨,jQuery极大地减少了开发者的代码编写工作量。 以下将从几个方面介绍jQuery: 1.…

【二叉树的锯齿形层序遍历】python刷题记录

R2-树与二叉树篇 层序遍历双端队列deque # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def zigzagLevelOr…

【读代码】高斯掩模

目录 问题: 主要功能: 问题: 看不懂实现的功能 主要功能: 从输出张量中提取与边界框对应的区域,并计算该区域与高斯核之间的均方误差(MSE)损失 例子 假设我们有以下输入: boxe…

Spring容器启动时执行代码(数据预热)

文章目录 静态代码块PostConstructInitialzingBeanCommandLineRunner和ApplicationRunnerServletContextListener执行顺序 在Java项目中,有时我们需要在应用启动时执行一些初始化代码,比如加载配置、初始化数据库连接池、预热数据等。这些操作对于应用的…

我的创作纪念日(一)——Giser?Noder?不如“Computer”

目录 Giser?Noder?不如“Computer” 一、根源:保持学习习惯的刚需 二、机缘:processOn的另类替代 三、日常:对技术栈丰富的思考 四、成就:保持心态健康的活着 五、憧憬:能一直心态健康的活…

前端实现【 批量任务调度管理器 】demo优化

一、前提介绍 我在前文实现过一个【批量任务调度管理器】的 demo,能实现简单的任务批量并发分组,过滤等操作。但是还有很多优化空间,所以查找一些优化的库, 主要想优化两个方面, 上篇提到的: 针对 3&…

CSS技巧专栏:一日一例 14-纯CSS实现模拟水波波动填充按钮特效

CSS技巧专栏:一日一例 14-纯CSS实现模拟水波波动填充按钮特效 大家好,今天介绍一个在网上很常见的模拟水波波动要灌满按钮的动画效果,效果下面图所示。 本例图片 案例分析 我们沿着Z轴从上到下数一下一共有几个层: 文字层:白色文字阴影的黑色文字,当鼠标移动上来时候…

黑马点评--给店铺类型查询添加缓存

controller/ShopTypeController.java /*** 店铺分类查询,用于展示首页头部店铺分类* return*/GetMapping("list")public Result queryTypeList() {return typeService.queryList();} service/IShopTypeService.java Result queryList(); service/impl/S…

fatal: Could not read from remote repository. 解决方法

问题描述: Git : fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists。 解决方法: 当在网上尝试大量方法仍然失败的时候,不妨试试这个方法。 在 github 上&…

java手动编译和运行程序

java手动编译和运行程序 1、无package无依赖jar public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");} }$ javac HelloWorld.java $ java -classpath . HelloWorld # 或者 $ java -cp . HelloWorld2、有packag…

探索 Redis 不同集群架构的性能与应用

1. 引言 Redis的集群配置成为了提高数据可靠性和服务可用性的关键。本文将带领大家了解Redis的四种主要集群架构,并重点分析哨兵模式和Redis Cluster架构和优势。 2. Redis的四种集群架构 2.1 单实例Redis 使用单个 Redis 实例提供服务。适用于小规模应用&#…

深度学习在智慧交通中的应用:行人车辆检测与计数系统详解

引言 在现代城市中,行人和车辆的检测与计数对交通管理和城市规划具有重要意义。通过使用深度学习技术,可以实现对行人和车辆的实时检测与计数,提高交通管理的效率。本文将详细介绍如何构建一个基于深度学习的行人车辆检测与计数系统&#xf…

论文阅读:Deformable DETR: Deformable Transformers for End-to-End Object Detection

论文阅读:Deformable DETR: Deformable Transformers for End-to-End Object Detection Deformable DETR: 基于稀疏空间采样的注意力机制,让DCN与Transformer一起玩! - 知乎 (zhihu.com) 【Deformable DETR 论文源码解读】Deformable Trans…

The Llama 3 Herd of Models.Llama 3 模型第1,2,3部分全文

现代人工智能(AI)系统是由基础模型驱动的。本文提出了一套新的基础模型,称为Llama 3。它是一组语言模型,支持多语言、编码、推理和工具使用。我们最大的模型是一个密集的Transformer,具有405B个参数和多达128K个tokens的上下文窗口。本文对Llama 3进行了广泛的实证评价。我们…

【error】AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘(库冲突)

conda list conda remove opencv pip uninstall opencv-python conda list pip 同时卸载两个库 pip uninstall opencv-contrib-python opencv-python 没有and 直接写库名 module ‘cv2.dnn‘ has no attribute ‘DictValue‘解决办法_module cv2.dnn has no attribute d…

实分析与测度论问题的分类

实分析主要研究实数、实数序列、实数极限以及实值函数的分析,而度量空间则是一个具有距离函数的集合,其分类可以从多个角度进行。 实分析 实分析主要关注实数、实数序列、实数极限以及实值函数的分析。它涉及到多个重要的概念和理论,包括但…