Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

UART

UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)是一种常见的异步串行通信接口,通常简称为串口。它广泛应用于单片机、计算机以及各种通信模块之间,适合短距离、低速率的点对点数据传输。在调试和终端通信中,UART 是最简单直接的选择。它既可以实现全双工,也能配置为半双工,不需要额外的时钟信号来同步,只要通信双方事先约定好一致的波特率即可正常工作。

1. 物理结构

UART 的基本硬件连接非常简洁,通常只需三根线:发送端的 TX 连接到接收端的 RX,再加上公共地线 GND,就能完成数据的双向传输。在 TTL 电平下,逻辑 0 表示为低电平,逻辑 1 表示为高电平。由于是点对点方式,所以电路简单,但通信距离有限,一般在几十厘米到几米范围内较为稳定。

┌─────┐      TX → RX      ┌─────┐
│ MCU │ ----------------> │ 模块 │
│     │ <---------------- │     │
└─────┘      RX ← TX      └─────┘
             GND ———— GND

2. 帧格式

UART 通信以“帧”为单位传输数据。一帧由起始位、数据位、校验位和停止位组成。

空闲线(高电平) ──────┐
                      ↓ 起始位
        ┌──┬──┬──┬──┬──┬──┬──┬──┬──┐──┐──┐
        │St│D0│D1│D2│D3│D4│D5│D6│D7│Pa│Sp│
        └──┴──┴──┴──┴──┴──┴──┴──┴──┘──┘──┘
           1  数据位(8位)    校验位   停止位
  • St:起始位(低电平,1 位)
  • D0~D7:数据位,最低位先传输
  • Pa:校验位,可选
  • Sp:停止位(高电平,1 或 2 位)

3. 原理

UART 的核心原理在于“异步”。与 SPI、I²C 不同,UART 没有时钟线,接收端必须依靠波特率在时间上对信号进行抽样。发送方将数据逐位送出,接收方通过检测起始位获得同步点,然后按预设速率逐位采样,最终重组数据帧。只要通信双方的波特率误差足够小(通常要求小于 ±3%),数据就能被正确接收。这样就避免了额外时钟同步的开销,降低了硬件复杂度。

4. 硬件协议

UART 在物理层的实现不仅有 TTL 电平,还衍生出一系列标准:

  • TTL UART:常见于单片机,电平通常为 3.3V 或 5V。
  • RS-232:计算机串口常用,逻辑取反,电平范围为 ±3V 到 ±15V,传输距离比 TTL 更远。
  • RS-485:采用差分信号,抗干扰强,传输距离可达 1200 米,支持多机总线通信。
  • RS-422:与 RS-485 类似,但多用于点对点全双工通信。

5. 参数

UART 的主要参数由波特率、数据位、校验位和停止位组成,不同场景下可灵活组合。

参数含义常见取值
波特率每秒传输的比特数,决定通信速率9600、115200
数据位有效数据长度,一般从 5~9 位8 位最常见
校验位检错方式,可提高可靠性无、奇校验、偶校验
停止位帧结束标识,也提供缓冲时间1 位、1.5 位、2 位

例如常见的 8N1 表示:8 个数据位(N 表示无校验),1 个停止位。