概述
UART是“Universal Asynchronous Receiver/Transmitter”,通用异步收发器的缩写。它包括了RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。
物理层
UART的物理层(即实际信号传输的电气标准)可以有多种实现方式,常见的有TTL电平、RS232、RS485等。下面分别介绍:
1. TTL电平
- 电平标准:
- 逻辑高(1):通常为3.3V或5V(取决于芯片电源电压)
- 逻辑低(0):0V
- 优缺点:
- 距离短(一般不超过几米)
- 抗干扰能力较弱
- 电路简单、价格低廉
- 应用:
- 单片机、开发板、模块间的短距离通信
从波形可以看出,当没有数据传输时,UART信号会一直保持在高电平(具体信号幅度由I/O的供电电压决定),数据传输时信号发生跳变,传输完成后信号重新回到空闲的高电平状态。
- 单片机、开发板、模块间的短距离通信
2. RS232
- 电平标准:
- 逻辑高(OFF):-3V到-15V(通常-12V)
- 逻辑低(ON):+3V到+15V(通常+12V)
- 优缺点:
- 距离较长(可达15米以上)
- 抗干扰能力较TTL强
- 电平与TTL不兼容,需电平转换芯片(如MAX232)
- 速度较低,点对点通信
- 应用:
- 早期PC串口、仪器仪表、工业设备等
为了增强驱动能力,以增加传输距离和可靠性,RS232总线采用了双极性电压信号来进行物理传输。信号在发送/接收之前,通过电平转换芯片实现内部信号和总线信号的互相转换。连接方式和TTL电平完全相同,整个物理层只是多了一层电平转换。
3. RS485
- 电平标准:
- 差分信号,两线A/B之间的电压差(A-B>+200mV为一态,A-B<-200mV为另一态)
- 优缺点:
- 支持远距离(可超过1200米)
- 抗干扰能力极强
- 支持多点通信(总线型结构,最多可达32个节点或更多)
- 需收发器芯片(如MAX485)
- 应用:
- 工业自动化、仪器仪表、楼宇控制等
- 工业自动化、仪器仪表、楼宇控制等
可以看出,A/B端的波形为互补关系。A端波形为正向逻辑(空闲时为正电压),B端波形为反向逻辑(空闲时为负电压)。
物理层 | 电平标准 | 距离 | 抗干扰能力 | 通信结构 | 典型应用 |
---|---|---|---|---|---|
TTL | 0/3.3V/5V | 短(<5m) | 弱 | 点对点 | 单片机、开发板 |
RS232 | ±12V | 中(<15m) | 较强 | 点对点 | 早期PC、仪器仪表 |
RS485 | 差分A/B | 长(<1200m) | 很强 | 多点总线 | 工业控制、远距离通信 |
通讯协议
UART通信是异步通信,没有专门的时钟线来同步发送端和接收端的数据采样时机。为了区分连续的1或0,通信的双方需要“约定”每一位数据持续多长时间(即波特率),这样接收端才能准确知道什么时候去采样数据。
在UART串口通信中,常见的参数有以下几种:
波特率(Baud Rate)
- 定义:每秒钟传输的比特数。例如9600、115200。
- 作用:决定数据传输的速度。发送端和接收端波特率必须一致。
波特率是 UART 协议,或者说所有异步串行协议,非常重要的一个概念,即单位时间内(1 秒)可表示的 bit位个数,或者也可以表述为 bit 位宽的倒数。例如一个波特率为 115200 的 UART 波形表示1秒可容纳 115200 个bit 位,也就是说每一位 bit 数据占大约 8.68uS 的时长。
UART 等异步串行协议,为了简化信号物理连接,降低通讯成本,一般只有一根信号线,无法同时传输数据和时钟信号。收/发设备为了正确解析波形就需要在相同的波特率设置下。而相同的波形使用不同的波特率获取的信息可能会完全不同。对于接收设备来讲,只有起始位可以作为一帧数据的同步点,其它数据都是通过波特率来确定具体的取样位置。
数据位(Data Bits)
- 定义:每帧数据中实际传送的数据位数,常见有7位、8位(最常用)。
- 作用:决定每次传送多少位有效数据。例如“8N1”中的“8”就是8个数据位。
校验位(Parity Bit)
- 定义:用于检测数据传输中是否出错的冗余位。
- 类型:
- 无校验(None/N):不校验
- 奇校验(Odd/O):数据位中“1”的个数为奇数时,校验位为0,否则为1
- 偶校验(Even/E):数据位中“1”的个数为偶数时,校验位为0,否则为1
校验位可以用来提高传输的可靠性。如果信号在传输过程中因为干扰而导致某些位置的电平产生错误,通过计算接收的数据和校验位是否匹配即可判断数据是否有传输错误,从而给应用层提供有效信息来决定接受/丢弃对应的数据。
示例 波特率9600、8个数据位、无校验位、1个停止位的帧结构如下图所示