[电路]UART异步串口协议

UART异步串口协议,传输过程,物理层,优缺点

什么是UART

  • 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称为UART),在UART通信中,两个UART直接通信。
  • 发送端的UART将来自控制设备(如CPU)的并行数据转换为串行数据,以串行方式将其发送到接收端的UART,然后由接收端的UART将串行数据转换为并行数据以用于接收设备的正常处理。
  • 只需要两根线RX/TX,即可实现在两个UART串口设备之间的数据传输。

异步串口通信协议

  • 消息帧从一个低位起始位开始,后面是 7 个或 8 个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶校验, UART 就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。在接收过程中, UART 从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。 UART 传输时序如下图所示:
  • 从波形上可以看出起始位是低电平,停止位和空闲位都是高电平,也就是说没有数据传输
    时是高电平,利用这个特点我们可以准确接收数据,当一个下降沿事件发生时,我们认为将进
    行一次数据传输。

起始位

  • UART数据传输线通常在不传输数据时保持在高电平。
  • 为了开始数据传输,发送端UART在一个时钟周期内将传输线从高电平拉低到低电平。
  • 当接收端UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据位中的每一位数据。

数据

  • 数据位包含正在传输的实际数据。如果使用奇偶校验位,则可以是5位,最多8位。如果不使用奇偶校验位,则数据帧的长度可以为9位。

校验位

  • 在串口通信中有四种检错方式:偶校验、奇校验、高校验和低校验。当然,没有校验位也是可以的。
  • 对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。
  • 举个例子,如果数据是011,则满足:若采用偶校验,则校验位为0,保证逻辑高的位数是偶数个;反之,若采用奇校验,则校验位为1,保证逻辑高的位数是奇数个。
  • 具体如下图所示

波特率

  • 波特率是指 1 秒最大传输的数据位数,即Bit/s,包括起始位、数据位、校验位、停止位。
  • 常见的串口通信波特率有9600,19200,38400,57600,115200等,发送和接收波特率必须保持一致才能正确通信。
  • 假设目前UART的配置为,1个起始位,8个数据位,0个校验位,1个停止位,那么9600的波特率,可以计算出每一位数据的时间宽度为:

Td=196001000=104usT_d = \frac{1}{9600}*1000=104us

  • 那么传输一个字节(也就是10 bit 数据)需要的时间为 1.04 毫秒。
  • 下表是各个波特率下数据位时间宽度:
Time Baud Rate
3333μs3333\mu s 300
833μs833\mu s 1200
416μs416\mu s 2400
208μs208\mu s 4800
104μs104\mu s 9600
69μs69\mu s 14400
52μs52\mu s 19200
34μs34\mu s 28800
26μs26\mu s 38400
17.3μs17.3\mu s 57600
8μs8\mu s 115200
4.34μs4.34\mu s 230400

物理层

  • 在UART串口通信中,物理层上有TTL、RS232、RS422、RS485几种不同的电平标准,下面介绍这几个存在的差异。

TTL

  • TTL全名是晶体管-晶体管逻辑集成电路(Transistor-Transistor Logic)
  • 输入高电平最小2V,输出高电平最小2.4V,典型值3.4V;
  • 输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V。
  • 常用的TTL电平串口,通常有UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。

RS232

  • RS-232是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号。
  • 该标准规定采用一个25个脚的DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC 机将RS-232 简化成了DB-9 连接器,从而成为今天的事实标准。而工业控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三条线。
  • RS232 逻辑1电平(MARK)=-3V~-15V,逻辑0电平(SPACE)=+3~+15V;
  • 同样的,对于传输数据0x55,即二进制的01010101,RS232和TTL的区别如下:
  • 需要注意,RS422接口的信号电平值较高,易损坏接口电路芯片,又因为232电平与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。

RS422

  • RS422 的接口部分是差分的信号,共四根信号线,两根发送 TXD+和 TXD-,对应 Y 和 Z,两根接收 RXD+和 RXD-,对应 A 和 B。
  • 平衡型串行通信接口RS-422。RS-422(EIA RS-422-A Standard)是Apple的Macintosh计算机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。
  • RS422采用采用平衡式发送,差分式接收的数据收发器来驱动总线。逻辑1以两线间的电压差为+(210)V表示;逻辑"0"以两线间的电压差为-(210)V表示;终端负载100欧姆。

RS485

  • 而 RS485 与 RS422 类似,也是采用差分信号传输,但RS485 是半双工传输,也就是说,同一时刻只能有一个方向的数据传输。而且接口也比 RS422少,只有差分信号 A 和 B, 而与 ARM 或 FPGA 相连的信号为 DE(方向选择) ,DI(输入信号TXD), RO(输出信号 RXD)。
  • RS-485的电气性能与RS-422完全一样。主要的区别在于:RS-422 有4 根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422 的收与发是分开的所以可以同时收和发(全双工)。而RS-485 只有两根数据线:发送和接收都是A 和B。由于RS-485 的收与发是共用两根线,所以不能同时收和发(半双工)。
  • RS-485标准采用平衡式发送,差分式接收的数据收发器来驱动总线。逻辑1以两线间的电压差为+(26)V表示;逻辑"0"以两线间的电压差为-(26)V表示;终端输入电阻RIN>12kRR_IN>12kR

优缺点

优点

  1. 通信只需要两条数据线;
  2. 无需时钟信号;
  3. 有奇偶校验位,方便通信的差错检查;
  4. 只需要接收端和发送端设置好数据包结构,即可稳定通信;

缺点

  1. 数据帧最大支持9位数据;
  2. 不支持多主机或多从机的主从系统;