1. UART基础概念

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是 MCU 驱动开发中最基础、最常用的串行通信接口。理解 UART 的底层原理,是编写稳定、高效中断服务函数的前提。

1.1 UART 通信原理

UART 采用异步串行通信方式,通信双方不需要共享时钟信号,而是通过约定相同的波特率与数据帧格式来同步数据收发。其核心结构包含发送器(TX)、接收器(RX)和波特率发生器三部分。

关键特征:全双工通信(TX/RX 独立线路)、异步无时钟线、点对点连接。
UART 通信系统架构图 UART 通信系统架构 发送端 MCU TX 发送器 波特率发生器 接收端 MCU RX 接收器 波特率发生器 TX 数据线 RX 数据线 ⚠ 异步通信:无独立时钟线 双方通过约定波特率与帧格式实现同步

1.2 异步串行通信与波特率

异步串行通信意味着数据以比特(bit)为单位,在单根数据线上逐位传输,且收发双方没有共享时钟。为了正确采样每一位,双方必须使用相同的波特率(Baud Rate)。

参数 说明 常见值
波特率 每秒传输的符号数(bit/s) 9600、19200、115200
位时间 传输 1 位所需时间 = 1 / 波特率 115200 → 约 8.68 μs
误差容限 收发双方波特率允许的最大偏差 通常 < ±2%
开发避坑:波特率不匹配是 UART 通信失败的首要原因。MCU 主频、分频系数、时钟源误差都会导致实际波特率偏离设定值。务必使用示波器或逻辑分析仪实测位时间。

1.3 数据帧格式

UART 数据帧是异步通信的基本单元,由起始位、数据位、校验位(可选)、停止位组成。帧格式必须在收发双方完全一致。

UART 数据帧格式 UART 数据帧格式(10 位典型帧) 起始位 1 bit D0 D1 D2 D3 D4 D5 D6 D7 停止位 1 bit 典型配置:8N1(8 数据位 + 无校验 + 1 停止位) 校验位可选:奇校验(Odd)、偶校验(Even)、无校验(None)

1.4 帧格式参数详解

字段 长度 电平逻辑 作用
起始位 1 bit 高 → 低(下降沿) 通知接收方开始采样
数据位 5~9 bit(常用 8 bit) LSB 先传(低位在前) 承载有效数据载荷
校验位 0 或 1 bit 奇/偶校验逻辑 检错(可选)
停止位 1、1.5 或 2 bit 高电平(恢复空闲态) 帧间隔、同步恢复
实战要点:中断服务函数中,每次触发 RX 中断时,硬件已经完成了起始位检测、数据位采样和停止位验证。驱动开发者只需从数据寄存器中读取已组装好的字节,无需逐位处理。

1.5 常见 UART 配置速查

  • 8N1:8 数据位 + 无校验 + 1 停止位 —— 最常用,兼容性最好
  • 8E1:8 数据位 + 偶校验 + 1 停止位 —— 工业现场抗干扰
  • 8O1:8 数据位 + 奇校验 + 1 停止位 —— 部分旧设备协议
  • 9N1:9 数据位 + 无校验 + 1 停止位 —— 多机通信地址帧