UART通信基础知识
UART简介
UART:Universal Asynchronous Receiver/Transmitter,通用异步接收器/发送器,是一种常见的通用通信协议,UART是各种计算设备之间通信的常用通信手段,平时所说的串口一般就是指的UART。如下图所示,计算设备1经由UART1发送数据给计算设备2的UART2。
在UART通信中,两个UART相互通信。发送UART将计算设备的并行数据转换为串行形式,以串行方式将其发送到接收UART。只需要两根线就可以在两个UART之间传输数据,数据从发送UART的Tx引脚流到接收UART的Rx引脚。
UART属于异步通信,没有时钟信号,取而代之的是在数据包中添加了起始位和停止位。这些位定义了数据包的开始和结束,因此接收UART知道何时读取这些数据。
当接收UART检测到起始位时,它将以预设波特率的频率读取数据。两个UART必须以相似的波特率工作,发送和接收UART之间的波特率相差最多不能超过10%。
UART通信工作原理
UART数据包
发送UART从数据总线获取并行数据后,它会添加一个起始位,一个奇偶校验位(可选)和一个停止位(1位或2位)来组成数据包并从Tx引脚逐位串行输出,接收UART在其Rx引脚上逐位读取数据包。
UART数据包含有1个起始位,5至9个数据位(取决于UART设置),一个可选的奇偶校验位以及1个或2个停止位。
1.起始位
UART数据传输线通常在不传输数据时保持在高电压电平。开始传输时发送UART在一个时钟周期内将传输线从高电平拉低到低电平,当接收UART检测到高电压到低电压转换时,它开始以预设波特率的频率读取数据帧中的位。
2.数据帧
数据帧内包含正在传输的实际数据。如果使用奇偶校验位,则数据帧可以是5至8位。如果不使用奇偶校验位,则数据帧可以是5至9位。
3.校验位
奇偶校验位是接收UART判断传输期间是否有任何数据更改的方式。接收UART读取数据帧后,它将对值为1的位数进行计数,并检查总数是偶数还是奇数,是否与数据相匹配。
4.停止位
为了向数据包的结尾发出信号,发送UART将数据传输线从低电压驱动到高电压至少持续两位时间。
UART通信数据传输步骤
- 发送端UART从数据总线并行接收数据。
- 发送 UART 将起始位、奇偶校验位和停止位添加到数据帧。
- 整个数据包从发送 UART 串行发送到接收 UART;接收 UART 以预先配置的波特率对数据线进行采样
- 接收UART丢失数据中的起始位、奇偶校验位和停止位。
- 接收UART将串行数据转换为并行数据,并将其传输到接收端的数据总线。
UART的优缺点
UART的优点
- UART仅使用两根线,无需时钟信号。
- 具有奇偶校验位以允许进行错误检查。
- UART使用广泛,参考资料丰富。
UART的缺点
- UART数据帧的大小最大为9位,需要传输9位以上数据时比较繁琐。
- 不支持多个从属系统或多个主系统,有多个通信节点时组网比较麻烦。
UART的典型应用
- 传感器,比如一些UART接口的压力传感器、温度传感器、加速度传感器等。
- 执行器,比如一些UART接口的步进电机、直流电机等。
- 计算设备之间通信,计算机与单片机之间可以通过UART通信,计算机与计算机之间也可以通过UART通信,单片机与单片机也可以通过UART通信。
参考文献
https://www.circuitbasics.com/basics-uart-communication/
https://docs.murexrobotics.com/prog/components/uart