协议篇之UART协议
- 一、写在前面
- 二、UART协议简介
- 三、UART协议数据帧结构
- 3.1 UART发送过程
- 3.2 UART接收过程
- 四、UART传输速率
- 五、写在最后
一、写在前面
由于设计需要,需要入门学习一下UART协议。本文主要学习UART协议的数据帧结构。
二、UART协议简介
通用异步收发传输协议(Universal Asynchronous Receiver/Transmitter Protocol,UART)是一种在计算机、嵌入式系统和其他电子设备之间传输数据的通信协议。它使用串行全双工通信来传输数据,发送和接收设备之间的数据传输是异步的,也就是说,每个比特都是按照预定义的时间间隔传输的,而不是在固定的时钟周期内进行传输。
UART协议通常使用RS-232或RS-485等物理层协议来连接发送和接收设备。由于UART协议是一种简单、易于实现的协议,因此它在很多应用中得到广泛应用,例如串口通信、控制台、模块通信等。在工业、汽车、医疗和家庭等领域,UART协议都有着广泛的应用。
三、UART协议数据帧结构
UART协议中传输数据是串行传输的,其数据帧结构通常包含以下几个部分:
- 起始位(Start Bit):一个低电平的比特,用于标识数据传输的开始;
- 数据位(Data Bits):包含要传输的数据的比特数,通常是5、6、7或8个比特。数据可以是数字、字母、符号或二进制数据;
- 奇偶校验位(Parity Bit):可选的比特,用于验证数据的正确性。奇偶校验位的值可以是奇校验或偶校验,它们根据数据位中1的个数确定;
- 停止位(Stop Bit):一个时钟高电平的比特,用于标识数据传输的结束;
值得注意的是,UART数据帧结构的长度和内容可以根据需要进行调整,但它们必须在发送和接收设备之间协商一致,以确保数据的正确传输。
UART完整的数据帧结构如下图所示(这里不包含校验位)。
3.1 UART发送过程
在UART数据发送的过程中,发送设备会先发送一个起始位START,然后发送数据位DATA(数据位的发送是先发送低位,后发送高位),然后发送可选的奇偶校验位PARITY(一般不设置奇偶校验位),最后发送一个停止位STOP。
3.2 UART接收过程
UART数据接收的过程,与UART数据发送的过程是差不多的,接收设备会一直等待发送设备的一个低电平的起始位。当接收到起始位,接收设备将开始接收发送设备发送的数据位,并将多比特的数据存储在缓冲区中。然后如果使用了奇偶校验位,接收设备需要使用接收到的奇偶校验位来校验数据位,验证接收到的数据是否正确。然后等待停止位的到来,结束一帧数据的接收,并将接收到的数据从缓冲区中读出,等待下一帧数据的到来。
四、UART传输速率
UART协议的数据传输速率有多种,其中我们常用的波特率有4种:9600bps、19200bps、38400bps和115200bps。
- 9600bps:UART通信中最常见的传输速率之一,适用于大多数低速数据传输应用;
- 19200bps:中等速度的传输速率,适用于一些需要快速传输数据的应用;
- 38400bps:较快的传输速率,适用于需要更快数据传输速度的应用;
- 115200bps:UART通信中更快的传输速率,适用于需要非常快速数据传输速度的应用;
同样的,UART的传输速率必须保证发送设备与接收设备之间一致,否则发送设备无法传输正确的数据到接收设备。
波特率表征串口传输的速率,比如串口波特率为9600bps,那么表示1秒可以传输9600bit,那么,每个比特传输的时间为:
如果我们给系统约束的系统时钟频率为50MHz,则系统时钟周期为20ns,也就是说,每个比特传输的时钟周期个数为:
也就是说,在系统时钟频率为50MHz的情况下,传输每个比特需要保持5208个时钟周期不变。
在这里,需要补充一个重要概念:波特率Baud与比特率Bit Rate是两个不同的概念。波特率与比特率的关系也可换算成:
比特率 = 波特率 * 单个调制状态对应的二进制位数
而在串口传输中,由于采用二进制传输,数值非0即1,所以在串口传输中,波特率与比特率的关系如下:
比特率 = 波特率
五、写在最后
在本文中,我们学习了UART数据帧结构以及UART协议中一些基本的概念。欢迎评论区友好交流批评指正!!!