UART(Univesal Asynchronous Receiver Transmitter)是一种广泛应用于嵌入式领域的串行、异步、全双工通信协议的通用异步接收器/发送器。
在正式讲解UART通信协议前,我们需要了解一些基本的概念。
串行通信:是指数据以位(bit)为单位,按时间顺序逐个通过单一通信线路发送。
并行通信:是指数据通过多个通道同时传输,每个通道传输一位数据。
同步:同步通信是指发送方和接收方的时钟同步,数据以固定的时间间隔发送,通常伴随着一个时钟信号或使用同步字符来标识数据的开始和结束。
异步:异步通信是指发送方和接收方的时钟不同步,数据的发送是独立的,每个字符或数据帧的开始和结束由特定的位(如起始位和停止位)标识。
单工通信:指数据只能在一个方向上传输,类似于广播系统,其中一方只能发送数据,另一方只能接收数据。
半双工通信:是指数据可以在两个方向上传输,但在同一时间内只能有一个方向的数据传输。也就是说,通信双方可以交替地发送和接收数据,但不能同时进行。
全双工通信:是指数据可以同时在两个方向上传输,即通信双方可以同时发送和接收数据。
上面介绍完基本的概念,我们大概也能了解UART是什么样的通信过程。
起始位:每次通信开始时,发送方发送一个逻辑“0”信号(VOL),表示传输字符的开始。由于总线空闲时为高电平,因此在开始通信时先发送一个与空闲状态明显不同的信号,即VOL。
奇校验:如果数据位中“1”的个数为偶数,则奇偶校验位为“1”,如果“1”的个数为奇数,则奇偶校验位为“0”。
偶校验:如果数据中“1”的个数为偶数,则奇偶校验位为“0”,如果数据中“1”的个数为奇数,则奇偶校验位为“1”。
校验位可有可无,由系统定义。
停止位可以为1位,1.5位或者2位,由系统定义。
由于UART属于异步通信,在通信过程中没有同步时钟CLK来提供给接收方,接收方也就无法同步地确定每个bit的宽度,也就无法对每个bit进行正确的采样。因此接收方必须依靠设置与发送方相同的波特率参数,这样接收方对信号管脚进行采样和解码时,才能正确判断每个bit的值是“1”还是“0”,这也就是异步通信的特点。
还有一些常见的串口:
UART,“串口”时序协议的名称,定义了各个信号时序协议;
USART,相比UART增加了同步信号,可实现ISO-7816智能卡接口;
COM口,在PC等操作系统上,区别于USB、SATA接口的串行接口,定义了在操作系统中的规范;
RS-232,在UART基础上再定义了信号的电气特性;
RS-422,在RS-232基础上定义了差分信号传输的电气特性;
RS-485,在RS-422基础上定义了半双工模式。
后面会基于UART介绍RS232等串口,以供大家参考。