嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > UART通信介绍

UART通信介绍

现在的很多电子设备都使用的USB,替代了早期的线束和连接器,其中也包括UART。不过UART仍旧在很多场合发挥着作用,比如目前车载嵌入式的工作当中,也常用UART进行状态信息/日志信息输出等操作。[1]

什么是UART?

UART全称Universal Asynchronous Receiver/Transmitter(通用异步收发传输器),允许两个不同的设备在不需要时钟的情况下,互相进行串口通信。

UART可以作为微控制器的一部分,或者独立的组件存在,使用UART通信的两个节点只需要一对连接即可。[2]

UART的发送方将来自于控制设备的数据转换为串行数据,通过Tx口发送至接收方的Rx口,接收方再将串行数据转换为控制设备使用的数据。

为什么使用UART

UART传输数据是异步的,和SPI这样的同步通信协议不同,所以不需要在收发双方进行时钟同步,发送时,UART会在数据包上分别添加一个起始bit和结束bit,接收方就能知道从哪里开始读取。

UART 数据包结构

UART数据包主要有四个部分组成:起始位,数据帧,奇偶校验位,结束位。

UART数据总线在不进行数据发送时,处于高电平位,当需要发送数据时,UART发送方将电平拉低一个时钟周期,接收方监测到这样的高低电平变化后,基于设置的波特率开始读取数据帧中的bit值。

数据帧包含实际传输的数据,使用奇偶校验位的情况下,长度为5到8位,不适用奇偶校验位时,长度可以为9位。大多数情况下最低位bit最先传输。

接收方读取数据帧时,会记录bit值为1的数目,并且检查这个数目是奇数还是偶数。如果奇偶校验位为0,那么这个记录的数目应当为奇数;如果奇偶校验位为1,那么应当为偶数。如果检查不过,那么UART则判定为数据在传输过程中因各种可能原因被修改过。

结束传输时,需要数据总线从低电平到高电平至少两个bit周期表示结束。

UART是如何工作的

UART在需要发送数据时,需要先从数据总线接收数据。CPU,内存等设备会使用这个数据总线给UART发送数据,这个过程中数据是并行发送给UART设备的。当UART接收到数据后,为其添加起始位,奇偶校验位,以及结束位,最终构成一个完整的数据包。

然后,数据包会一个bit一个bit地被UART通过Tx口发送出去。接收方将数据重组为并行结构并去掉起始位,奇偶校验位以及结束位,然后将数据通过数据总线传递给CPU等。

数据发送过程

UART从数据总线接收待发送数据

UART为其添加起始位,奇偶校验位,结束位

串行发送数据

接收方去掉标志位

将数据传递到数据总线给CPU等设备使用


参考

  • ^BASICS OF UART COMMUNICATION https://www.circuitbasics.com/basics-uart-communication/

  • ^What is UART Protocol? UART Communication Explained https://www.arrow.com/en/research-and-events/articles/what-is-uart-protocol-uart-communication-explained