UART协议是电子传输中一种常见的信号协议,通常只需要三根信号线就可以完成数据的收发,分别是TX,RX,GND。
UART(universal asynchronous receiver transmitter),是通用异步收发器,因为是异步,所以也不需要时钟信号来做时间参考。它的应用范围很广,比如各种外接模块如GPS,蓝牙模块等等,上位机(发送操控)与下位机(接收)之间的通信。
UART是串行通信,利用一条传输线(RX,TX)将数据按bit进行顺序传送,特点是通信线路简单,成本低,适用在需要远距离传输,但对速率要求不高的应用场景。
UART的数据形式
UART传输的数据会被封装为数据包,数据包包含1bit起始位,5~8bit数据位(取决与设备UART的具体设置),一个奇偶校验位(可选),以及1个或2个停止位。
起始位:UART数据传输线在空闲时保持高电平,当设备发出低电平信号时,表示数据的开始。
停止位:UART数据传输线从低电平状态向高电平转换,不过至少需要持续两位数据的时间宽度,才表示整个数据包的传输已经结束。并且由于数据是在传输线上定时的,不同的设备之间可能时钟存在偏差,偏差的积累可能会导致数据位的传输错误,所以数据定时发出停止位可以有效校正时间的偏差,停止位越多,校正的效果越好。
数据位:数据位的宽度可能有5,6,7,8位,一般8位会用的比较广泛(跟ACSII码有关,一个ASCII字符为8bit)。
校验位:是UART中一种简单的检错方式,一般有四种校错方式:偶校验,奇校验,高校验,低校验。对于奇偶校验的情况,串口会设置校验位(数据位的后一位),用1bit来校验数据有偶数个还是奇数个的逻辑高电平。比如如果数据位为00011,偶校验位就是0,为了保证数据位+校验位总数偶数的个数加起来为偶数。不过,校验位不是必须有,属于可选项。
在停止位之后,可能还会有空闲位,空闲状态时的信号处于高电平,即“1”,表示当前线路上没有数据传输。所以停止位开始的时候就能被有效检测到。
UART传输速率较慢,一般在20kbit/s到10Mbit/s之间,低速率的情况被使用的更多。
总结起来
UART优点
1,需要的引脚线不多,只用2条数据线,1条地线
2,不需要时钟信号
3,有奇偶校验位,提供通信的差错检查
UART缺点
1,数据帧支持的最大长度只有9bit
2,不支持多主机或多从机的主从结构