USART和UART

UART(Universal Asynchronous Receiver/Transmitter)是通用异步接收/发送器,即串口通信。 USART在UART的基础上加上同步电路(Synchronous),是目前单片机最常用的串口电路设计,允许输出同步时钟实现通信(但不能接收,不能被同步驱动,即只可作主机)。但是最常用的串口模式还是采样异步通信的方法,即UART,只有特殊场合才会使用同步电路。

UART通信特点

  1. 异步全双工的通信方式:只需要TX、RX两根数据线进行通信,双方约定波特率进行发送和接收,无需时钟线。可以弃用其中一条线转换成半双工通信。

  2. 点对点的通信协议:没有SPI、I2C、CAN从机挂载机制,仅点对点。

  3. 通信格式简单:起始位+数据位+奇偶校验位(Optional)+停止位,数据位(8/9)、停止位位数(0.5/1/1.5/2)可选,最常见是8位数据位、无奇偶校验、1位停止位。

  4. 传输距离有限、通信速率较低:常用9600bps波特率,传输距离几十米,波特率越高,传输距离越短。

电平标准

适应长线串口传输,提出几种不同电平标准,甚至存在差分信号:

  • TTL电平:单片机最常用的电平,3.3V/5V代表逻辑1,0V代表逻辑0.

  • RS232:-3 —— -15V代表逻辑1,+3 —— +15代表逻辑0;

  • RS485:差分信号,电压差2——6V代表逻辑1,-2 —— -6代表逻辑0。

不同电平标准通信需要引入转换芯片。

差分信号不需要共地(需要高稳定性时需要),USB、CAN协议都采取了差分信号作为传输信号,通信速率、抗干扰能力、传输距离较强。

通信时序(TTL电平标准)

UART通信时序 典型通信时序如上:空闲时通信线处于高电平,起始位电平拉低,然后8位数据位(+1位校验位),然后停止位为高电平,等待下一个起始位拉低。

数据采用LSB,即低位在前先发送。双方必须按照约定波特率接收,否则无法正常解析数据。