UART通讯协议是什么?
作为一种异步串行通信协议,UART 的工作原理是逐位传输所传输数据的每个字符。各位的含义如下:
起始位:首先发送一个逻辑“0”信号,表示传输字符的开始。
数据位:紧接在起始位之后。数据位数可以是4、5、6、7、8等,组成一个字符。通常使用ASCII 码。传输从最低位开始,由时钟定位。
奇偶校验位:将该位添加到数据位后,“1”位的个数应为偶数(偶校验)或奇数(奇校验),以验证数据传输的正确性。
停止位:字符数据的结束标志。可以是1位、1.5位或2位高电平。由于数据在传输线上是定时的,并且每个设备都有自己的时钟,因此在通信过程中两个设备之间可能会出现轻微的不同步。因此,停止位不仅表示传输的结束,而且还为计算机提供了纠正时钟同步的机会。可用于停止位的位越多,对不同时钟同步的容忍度就越大,但数据传输速率就越慢。
空闲位:逻辑“1”状态,表示当前线路没有数据传输。
UART串行通信的工作原理
(1)发送数据的过程
空闲状态下,该线为高电平;收到发送命令后,将线拉低一个数据位时间T,然后将数据从低位向高位发送。数据发送完毕后,发送奇偶校验位和停止位。一帧数据传输完毕。
(2)数据接收流程:
空闲状态下,该线为高电平;当检测到线路的下降沿(高电平变为低电平)时,表示线路有数据传输,按照约定的波特率从低到高接收数据。接收到数据后,再接收并比较奇偶校验位是否正确,如果正确则通知后续设备接收数据或将其存入缓冲区。
由于UART是异步传输,不传输同步时钟,为了保证数据的准确性,UART采用16倍数据波特率的时钟进行采样。每个数据有16个时钟样本,取中间样本值,保证样本不会出现滑动或错误。一般情况下,UART帧中的数据位数为8,因此即使每个数据存在时钟错误,接收端也能正确采样数据。
UART接收数据时序为:当检测到数据下降沿时,表明线路上有数据传输。此时计数器CNT 开始计数。当计数器为24=16+8时,采样值为第0位数据;当计数器值为40时,采样值为第一个数据,以此类推,采样接下来的6个数据。如果需要奇偶校验,当计数器值为152时,采样值为奇偶校验位;当计数器值为168时,采样值为“1”,表示停止位,数据接收完成。