UART硬件电气特性简单介绍
UART硬件介绍
UART(universal asynchronous receiver-transmitter),通用异步收发器,用于设备之间数据的串行通信,通常MCU上面的UART除了板间的TTL传输方式,还通过RS232,RS485等不同电气接口进行数据传输。
UART的用途非常广泛,MCU与PC间通信,一些通用模块,GPS,蓝牙通信模块,基于485的MODBUS组网等等。由于使用的是串行通信,使用到的线的数量也相对较少。
USART区别
USART(universal synchronous and asynchronous receiver-transmitter)通用同步异步收发器,USART可以作为UART来用,而UART不能用作USART
USART相对UART来说还要需要一个时钟,这样可以提高发送速率,不过增加了复杂性,因为笔者也没怎么用过USART,暂不作介绍。
这里放一张别人总结的区别图方便日后查看
接线标准
总共用到三根线,TX,RX,GND。设备之间通信将TX与RX对调。
工作方式
单工:只有一个方向,接收方不可以发送数据给发送方
全双工:两个设备可以同时发送和接收数据
半双工:两设备设备轮流进行发送与接收
电气标准
时序
一帧数据包括5个部分
Idle(logic high(1))
Start bit(logic low(0))
Data bit (5-9bits) LSB
Parity bit(optional)
Stop bit(logic high(1))
1 | 5-9 | 0-1 | 1-2 |
---|---|---|---|
Start Bit | Data Frame | Parity Bits | Stop Bits |
而两个设备需要进行正常通信就需要相同的波特率,数据位数,校验位及停止位数
最常用的设置是8位数据位,无校验位,1个停止位
波特率
波特率相当于是UART的时钟,它决定UART的收发数据的速度,波特率的倒数并不是发送数据的速度,因为一帧数据还需要帧头帧尾,因此收发速度根据波特率需要打一定的折扣。
设备也是根据波特率进行数据判定,当前的数据状态。
起始位
在没有接收的数据的时候数据位一直处于HIGH(1)的状态,当数据线被拉低(0)时认定了接收到一个新的数据,以此来作为起始位
数据位
数据位有5-9位可选择,通信双方约定好长度即可,发送数据位时先发送低BIT(LSB的顺序)
校验位
校验位是可选的
奇校验与偶校验,奇校验校验位加数据位1的个数为奇数,偶校验为偶数
停止位
停止位可选1位,1.5位,2位
1.5位并不是指的刚好有1.5位,即发送1.5bit的时候之后就放弃对数据进行判断,开始支等待下一帧的数据
停止位为1,就相当于是将数据又重新拉到IDLE(1)的状态。
总结
这里只是将UART的电气特性作简单介绍。
在使用硬件的UART模块时,用户并不需要支关心UART具体是怎么运行的,UART模块在接收到数据后会自动将采集到的数据推入寄存器,并可以产生中断。
参考
https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter