UART(通用异步收发传输器)是一种异步串行通讯协议,它不需要共享时钟信号,仅通过两根数据线(TX\RX)即可实现全双工通信。理解UART的核心,在于理解它如何通过”数据帧“的格式来在无时钟的情况下保持收发双方的同步。

核心原理:无时钟如何同步?

UART是异步通信,意味着发送方和接收方没有共享的时钟线。为了让接收方能正确解读数据,UART通过特定的数据帧格式来实现同步:

  1. 起始位:数据在空闲时保持高水平。当发送方拉低电平一个波特率周期时,接收方检测到这个下降沿,就知道一阵数据开始了,并以此校准自己的采样时钟。
  2. 数据位:紧接着起始位之后发送,通常是5-8位。UART协议约定最低有效位先发送。
  3. 校验位(可选):用于简单的错误检测。可以是偶校验(使数据位中的“1”的总数为偶数)或奇校验。
  4. 停止位:发送方将数据线拉高1或2个周期,标志一帧数据结束。高电平的停止位也为接收方提供了必要的缓冲时间,以处理时钟可能存在的微小误差。

关键参数

要成功通信,双方必须事先约定好以下参数,否则会乱码:

  • 波特率:衡量传输速率的指标,表示每秒传输的符号数。常见的波特率有9600、115200等。收发双方波特率必须一致。
  • 数据位长度:一帧中实际数据位的数量,通常为8位。
  • 停止位长度:可以是1、1.5、或2位。停止位越多,同步容忍度越高,单传输速率越低。
  • 奇偶校验:用于检测但比特错误,可设置为奇校验、偶校验或无校验。

常见误区:UART vs. USART

UART仅支持异步模式,而UART(通用同步/异步收发传输器)是UART的增强版,它同时支持异步和同步模式。在同步模式下,UART会额外传输一根时钟线,从而实现更高的传输速率(可达4Mbps以上),并且可以支持IrDA\LIN等多种协议。

硬件连接与电平

  • 基本连线:最简单的UART连接只需要交叉连接TX和RX,并共地。
  • 逻辑电平:在芯片之间(如两块单片机),通常直接用TTL电平(0V为逻辑0,3.3V或5V为逻辑1)。但如果要与老式PC的串口通信,则需要通过MAX232等芯片转换为RS-232标准的双极性电平(正负电压表示0和1)。

适用场景

UART因其简单、成本低、所需引脚少,非常适合低速、点对点的通信场景,例如:

  • 调试嵌入式系统,输出日志信息。
  • 连接GPS、蓝牙模块等外设。
  • 工业控制设备之间的短距离数据交换。