通信
通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
通信协议:制定通信的规则,通信双方按照协议规则进行数据收发
STM32常见的通信协议
本文将介绍USART
概念解释
- TX、RX分别是Transmit和Receive的缩写,代表发送、接受数据
- 全双工的含义是发送线路和接受线路互不影响,可以同时进行
- 异步指的是没有时钟线的通信,需要通信双方制定帧头帧尾,通信频率等参数
- 单端电平指的是通信双方的电压都是以GND为参考电压的,因此这两个设备需要共地
- 点对点指的是这个通信只支持两个设备间进行通信
硬件电路连接抽象图
串口参数及时序
⚠️ 几个需要注意的点
- 第二张图D7的后一位是奇偶校验位
- 波特率决定了串口通信的速度,举个例子,如果波特率为1000bps,那么一秒就会传输1000个数据,每传输一个数据耗时1毫秒。
- 高电平作为空闲位,因此每当传输开始,发送方要先传送一个起始位,也就是低电平,告诉接受方我即将要传输数据了。传输结束后,要传输一个停止位恢复高电平。总结来说,就是TX引脚定时翻转电平,RX引脚定时读取电平,即可完成数据的传输。
- 数据位是低位先行,举个例子,比方说要传输一个0x0F的数据,将它转化为二进制就是00001111,那么传输的顺序应该是 1 1 1 1 0 0 0 0。
USART外设简介
USART基本结构图
当数据由数据寄存器TDR转到移位寄存器时,会置一个标志位TXE,我们判断这个标志位,就可以知道是不是可以开始写入下一个数据了。
接收部分也是类似的,在接受控制器的控制下,一位一位地移入接收移位寄存器,移完一帧数据后,数据就会统一转运到接收数据寄存器,并置一个RXNE的标志位,我们检查这个标志位,就可以知道是不是接收到数据了。同时这个标志位也可以申请中断,这样就可以在接收到数据时,直接进入中断函数,然后快速地读取和保存数据。