一、简介
UART:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是一种串行、异步收发传输器。
二、特点
1、两条数据线(RX、TX),可双向通信,可以实现全双工(同时发送和接收);
2、异步,传输数据的两个设备间时钟不需要同步,不像I2C有一根线SCL进行同步;
3、串行,计算机内部为并行数据,发送时将字符整理为1位、1位的串行数据流发送,接收时将1位、1位转换为字符,供计算机内部并行数据的器件使用;
三、工作逻辑
一根线负责发送,一根线负责接收,从而实现全双工通信。数据的成功传输绕不开以下几个逻辑,未传数时的状态,什么时候开始发送、识别发送了什么、发送数据是否正确、什么时候终止发送。从这个角度看UART的工作原理如下:
-
未传数时的状态:当未进行数据传输时,传输线处于空闲状态,为高电平即逻辑“1”的状态;
-
什么时候开始发送:数据开始发送,则传输线状态应改变,以识别数据开始传输,故从空闲状态高电平拉低为低电平(“1”—>“0”),即为确认开始发送数据;
-
识别发送了什么:a) 没有时钟同步,发送的数据就是一串高低电平的变化,因此需约定“1位”的数据有多长即位周期(与波特率相关),才能识别出到底发送了什么; b)发送的数据,先发的bit是高位,还是低位,也是需要注意的;
-
发送数据是否正确:数据发送过程中,由于时钟不同步,可能出现误码的情况,因此存在一个校验位,该位为奇偶校验位,数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以次来校验数据传送的正确性。
-
什么时候终止发送:数据结束标志,其状态应该回到空闲态,表示无数据传输,一般为1/1.5/2位(高电平)。
上述的几个传输状态对应着UART传输数据的帧结构,分别由空闲位、起始位、数据位、奇偶校验位、停止位构成,示意图如下:

同时需注意,UART是异步传输,没有同步时钟,为了保证数据的正确性,UART采用16倍数据波特率的时钟进行采样。每个数据有16个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般UART一帧的数据位数为8(1次传1个字符,1个字符8位),这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。(检测到下降沿开始计数)
