UART是 "通用异步收发器" ( Universal Asynchronous Receiver/Transmitter ) 的缩写,通常简称为UART。是一种异步串行通信接口,用于将数据通过串列通信进行传输。

- 波特率(Baud Rate):单位时间内传输的二进制位数,常见值为 9600、115200、38400。例如 9600bps 表示每秒传输 9600 位(含起始位、数据位、校验位、停止位),实际有效数据率需剔除控制位。
- 数据位(Data Bits):每帧数据中包含的有效数据位数,通常为 8 位(对应一个字节),也有 7 位(适配 ASCII 码)。
- 停止位(Stop Bits):每帧数据结束后的标识位,可设为 1 位、1.5 位或 2 位,用于接收方判断一帧数据是否结束。
- 校验位(Parity Bit):用于校验数据传输是否出错,分为奇校验(数据位 + 校验位中 1 的个数为奇数)、偶校验(1 的个数为偶数)、无校验(最常用,依赖上层协议容错)。
- 流控(Flow Control):可选参数,用于防止数据溢出(如 RTS/CTS 硬件流控、XON/XOFF 软件流控),多数简单场景(如传感器数据传输)无需启用。
发送方按参数封装数据帧(起始位 + 数据位 + 校验位 + 停止位),接收方按相同参数解析帧结构,若参数不匹配,接收数据会出现乱码(如波特率不匹配时常见"####"或乱码字符)。

串口通信以"帧"为单位传输数据,标准帧结构如下(以 8 位数据位、1 位停止位、无校验为例):
起始位(1 位):低电平(逻辑 0),表示一帧数据开始,打破之前的高电平空闲状态。
数据位(8 位):从最低位(LSB)到最高位(MSB)传输,例如发送字节 0x5A(二进制 01011010),实际传输顺序为 0→1→0→1→1→0→1→0。
停止位(1 位):高电平(逻辑 1),表示一帧数据结束,长度可配置为 1/1.5/2 位,确保接收方有足够时间准备接收下一帧。
示例:发送字符"A"(ASCII 码 0x41,二进制 01000001),完整数据帧为:
起始位(0)→ 数据位(1→0→0→0→0→0→1→0)→ 停止位(1)
接收方通过检测"低电平起始位"触发接收,再按波特率同步采集后续 bits,最终重组为完整字节。
停止位1,无校验的波形:

停止位2,无校验连续通信的波形:

