UART (Universal Asynchronous Receiver/Transmitter)
UART 是一种通用的异步串行通信接口,是嵌入式系统中最基础、最常用的通信方式。严格来说,UART 是一种硬件电路(外设),而不是像 Modbus 或 CAN 那样的网络协议,但常被指代为一种通信接口。
协议概述
- 物理层:通常 2 根信号线 + 地线。
- TX (Transmit):发送端,接对端的 RX。
- RX (Receive):接收端,接对端的 TX。
- GND:共地(必须连接)。
- 架构:点对点(Point-to-Point)。
- 异步:没有时钟线,双方约定好波特率 (Baud Rate) 进行通信。
- 电平标准:
- TTL:MCU 引脚直接输出(0V / 3.3V 或 5V)。
- RS-232:工业标准电平(负逻辑,±12V),传输距离更远。
帧结构
UART 数据帧由起始位、数据位、校验位和停止位组成:
Start Data (5-9 bits) Parity Stop
┌───┬───────────────────┬───────┬───────┐
│ 0 │ D0 D1 ... D7 │ P │ 1/2 │
└───┴───────────────────┴───────┴───────┘- 起始位:逻辑 0,标志传输开始。
- 数据位:通常 8 位 (1 byte),低位在前。
- 校验位:奇偶校验(可选)。
- 停止位:逻辑 1,标志传输结束(1 位或 2 位)。
优缺点
| 优点 | 缺点 |
|---|---|
| 最简单:仅需 2 根线,几乎所有 MCU 都支持。 | 速度慢:通常不超过 1 Mbps。 |
| 成本低:无需额外芯片(TTL 电平下)。 | 点对点:标准 UART 只能连接两个设备。 |
| 调试方便:可直接连接 PC 查看打印信息。 | 时钟误差:双方波特率必须精确匹配,否则乱码。 |
典型应用
- 调试打印:
printf输出调试信息。 - 模块通信:GPS 模块、蓝牙模块、Wi-Fi 模块 (ESP8266)。
- 上位机通信:通过 USB 转 TTL 芯片与电脑通信。