UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)
UART 是一种双向,串行,异步的通信总线,仅用一根数据接收先和一根数据发送线就能实现全双工通信。典型的串口通信使用三根线完成(发送线TX, 接收线RX和地线GND),通信时必须将双方的TX和RX交叉连接并且与GND相连才可以正常通信。
UART 特性
UART接口不使用时钟信号来同步发送器和接收器设备,而是以一部的方式传输数据。发送器根据其时钟信号生成的位流取代了时钟信号,接收器使用其内部时钟信号对输入数据进行采样。
同步点是连个设备的相同波特率来管理的。如果波特率不同,发送和接收数据的时序可能会受影响,导致数据处理过程出现不一致。允许的波特率差异最大值为10%
- 导线数量: TX,RX,GND
- 速度: 1200, 2400, 4800, 9600, 19200, 38400, 57600,115200等
- 传输方式:全双工异步
- 最大主机数量: 1
- 最大从机数量: 1
UART协议帧
UART以数据包形式传输,数据包由起始位,数据帧,奇偶校验位和停止位组成

-
起始位: 当不传输数据时, UART数据传输线通常保持高电压电平。若要开始数据传输,发送UART会将传输线从高电平拉低到低电平并保持1个时钟周期。当接收UART检测到高到低电压跃迁时,开始以波特率的频率读取数据。
-
数据位:实际传输的数据。长度为5-8位(使用奇偶校验),若不使用奇偶校验,则数据长度为9位。
-
奇偶校验位:判断UART传输过程中数据是否有发生改变。UART读取数据帧后,统计值为1的位,检查是奇数还是偶数。若校验位为0 (偶数奇偶校验),则数据帧中的1应为偶数。若为奇数奇偶校验,则数据中1的位应为奇数。
-
停止位:表示数据包结束,发送UART数据传输线从低电压驱动到高电压并保持1到2位的时间。
UART通信步骤
- 数据从数据总线到发送器。

- 发送 UART 将起始位、奇偶校验位和停止位添加到数据帧。

- 从起始位到结束位,整个数据包以串行方式从发送器送至接收器。接收 UART 以预配置的波特率对数据线进行采样。

- 接收器丢弃数据帧中的起始位、奇偶校验位和停止位。

- 接收器将串行数据转换回并行数据,并将其传输到接收端的数据总线。

Reference
1.一文搞懂UART通信协议