一、UART 概述UARTUniversal Asynchronous Receiver/Transmitter通用异步收发器是一种异步串行通信协议用于在设备之间**逐位bit-by-bit**传输数据。关键词异步无时钟线、串行一位一位发、全双工可同时收发。二、硬件连接核心UART 最少仅需2 根信号线即可通信信号名全称方向作用TXTransmit输出发送数据RXReceive输入接收数据GNDGround公共提供参考电平必须接连接方式交叉连接设备 A 设备 BTX ------ RXRX ------ TXGND ------- GND⚠️注意TX 接 RXRX 接 TX千万不要直连三、数据帧结构协议核心UART 没有时钟线依靠约定好的时间间隔来解析数据。1️⃣ 一帧数据的组成空闲位 → 起始位 → 数据位 → 校验位可选 → 停止位字段电平长度时间宽度说明空闲位高电平 (1)——无数据传输时的默认状态起始位低电平 (0)1 bit1 / BaudRate 秒触发通信开始的标志数据位0 或 15–9 bitn × (1/BaudRate) 秒通常为 8 bitLSB 先发校验位0 或 10 / 1 bit1 / BaudRate 秒奇校验 / 偶校验可选停止位高电平 (1)1 / 1.5 / 2 bitn / BaudRate 秒标志一帧数据结束2️⃣ 起始位详解起始位是异步通信的“同步锚点”。电平特征从高电平跳变到低电平下降沿。时间宽度Tstart1BaudRateT_{start} \dfrac{1}{\text{BaudRate}}TstartBaudRate1秒。核心作用唤醒接收方通知接收方数据即将到来。校准采样点接收方检测到下降沿后启动内部定时器并在每位数据的正中间进行采样通常为第 1.5 个 Bit 时间处开始采第一位数。消除累积误差每接收到一个新字节时钟重新同步一次。3️⃣ 停止位详解停止位是帧的“结束标志”和“缓冲区”。电平特征拉回高电平上升沿。时间宽度1 位停止位1BaudRate\dfrac{1}{\text{BaudRate}}BaudRate1秒1.5 位停止位1.5BaudRate\dfrac{1.5}{\text{BaudRate}}BaudRate1.5秒主要用于欧洲标准2 位停止位2BaudRate\dfrac{2}{\text{BaudRate}}BaudRate2秒核心作用标志结束明确告知接收方该字节已传输完毕。提供缓冲时间给接收方的硬件UART 控制器留出处理时间将数据移入内存准备接收下一帧。防止帧粘连确保两帧之间有明确的电平跳变间隔。4️⃣ 时间宽度统一公式每一个比特Bit的持续时间都是相同的Tbit1BaudRate (秒)T_{bit} \frac{1}{\text{BaudRate}} \text{ (秒)}TbitBaudRate1(秒)举例波特率为9600 bps每位时间 1/9600≈104.17μs1 / 9600 \approx 104.17 \mu s1/9600≈104.17μs起始位 104.17μs104.17 \mu s104.17μs数据位 8×104.17μs833.36μs8 \times 104.17 \mu s 833.36 \mu s8×104.17μs833.36μs停止位 104.17μs104.17 \mu s104.17μs5️⃣ 标准配置示例8N18 位数据 无校验 1 位停止位 最常用四、波特率Baud Rate波特率 每秒传输的符号数bps。波特率说明9600低速、抗干扰强115200最常用921600高速传输波特率误差双方设备的波特率允许存在±2% ~ ±3%的误差否则会导致采样错位产生乱码。五、UART 工作流程发送端 (TX)空闲时保持高电平。拉低电平发送起始位持续1/BaudRate1/BaudRate1/BaudRate秒。从低位LSB到高位逐位发送数据位。发送校验位若启用。拉高电平发送停止位持续n/BaudRaten/BaudRaten/BaudRate秒。接收端 (RX)监听持续监测 RX 线电平。触发检测到高 → 低的下降沿起始位。采样启动定时器在每位数据的中间时刻读取电平。校验检查奇偶校验位若启用。停止确认停止位为高电平将接收到的字节存入缓冲区。六、电气标准物理层UART 是逻辑协议具体电平由物理层标准决定标准电平说明TTL UART0V / 3.3V 或 5V单片机常用开发板上的引脚RS232±3V ~ ±15VPC 老式串口抗干扰强RS485差分信号工业现场长距离多点通信⚠️电平匹配警告3.3V MCU 不能直接接 5V UART需电平转换芯片如 TXS0108E。七、流控Flow Control防止接收方处理不过来导致数据丢失。方式信号说明无流控—最简单适用于短距离硬件流控RTS / CTSRequest to Send / Clear to Send软件流控XON / XOFF发送特定 ASCII 字符控制八、UART vs SPI vs IIC特性UARTSPIIIC同步/异步异步同步同步线数2 (TX/RX)4 (MOSI/MISO/SCK/CS)2 (SDA/SCL)速度中快较慢全双工✅✅❌ (半双工)多主设备❌❌✅复杂度低中高九、常见问题与坑点问题原因排查收不到数据TX/RX 接反、未共地、波特率不一致数据乱码波特率误差过大、晶振不准、电平不匹配丢包/溢出接收中断太慢、缓冲区满、未开启 DMA死机发送阻塞时间过长、未处理错误标志十、STM32 中的 UART (USART)STM32 内部集成USART 外设支持同步/异步。十一、一句话总结UART 是最简单、最稳定的串行通信方式。其核心在于“异步”通过起始位和停止位界定数据边界每个比特的持续时间严格等于 1/波特率 秒。
UART 通信学习笔记
发布时间:2026/5/22 12:35:20
一、UART 概述UARTUniversal Asynchronous Receiver/Transmitter通用异步收发器是一种异步串行通信协议用于在设备之间**逐位bit-by-bit**传输数据。关键词异步无时钟线、串行一位一位发、全双工可同时收发。二、硬件连接核心UART 最少仅需2 根信号线即可通信信号名全称方向作用TXTransmit输出发送数据RXReceive输入接收数据GNDGround公共提供参考电平必须接连接方式交叉连接设备 A 设备 BTX ------ RXRX ------ TXGND ------- GND⚠️注意TX 接 RXRX 接 TX千万不要直连三、数据帧结构协议核心UART 没有时钟线依靠约定好的时间间隔来解析数据。1️⃣ 一帧数据的组成空闲位 → 起始位 → 数据位 → 校验位可选 → 停止位字段电平长度时间宽度说明空闲位高电平 (1)——无数据传输时的默认状态起始位低电平 (0)1 bit1 / BaudRate 秒触发通信开始的标志数据位0 或 15–9 bitn × (1/BaudRate) 秒通常为 8 bitLSB 先发校验位0 或 10 / 1 bit1 / BaudRate 秒奇校验 / 偶校验可选停止位高电平 (1)1 / 1.5 / 2 bitn / BaudRate 秒标志一帧数据结束2️⃣ 起始位详解起始位是异步通信的“同步锚点”。电平特征从高电平跳变到低电平下降沿。时间宽度Tstart1BaudRateT_{start} \dfrac{1}{\text{BaudRate}}TstartBaudRate1秒。核心作用唤醒接收方通知接收方数据即将到来。校准采样点接收方检测到下降沿后启动内部定时器并在每位数据的正中间进行采样通常为第 1.5 个 Bit 时间处开始采第一位数。消除累积误差每接收到一个新字节时钟重新同步一次。3️⃣ 停止位详解停止位是帧的“结束标志”和“缓冲区”。电平特征拉回高电平上升沿。时间宽度1 位停止位1BaudRate\dfrac{1}{\text{BaudRate}}BaudRate1秒1.5 位停止位1.5BaudRate\dfrac{1.5}{\text{BaudRate}}BaudRate1.5秒主要用于欧洲标准2 位停止位2BaudRate\dfrac{2}{\text{BaudRate}}BaudRate2秒核心作用标志结束明确告知接收方该字节已传输完毕。提供缓冲时间给接收方的硬件UART 控制器留出处理时间将数据移入内存准备接收下一帧。防止帧粘连确保两帧之间有明确的电平跳变间隔。4️⃣ 时间宽度统一公式每一个比特Bit的持续时间都是相同的Tbit1BaudRate (秒)T_{bit} \frac{1}{\text{BaudRate}} \text{ (秒)}TbitBaudRate1(秒)举例波特率为9600 bps每位时间 1/9600≈104.17μs1 / 9600 \approx 104.17 \mu s1/9600≈104.17μs起始位 104.17μs104.17 \mu s104.17μs数据位 8×104.17μs833.36μs8 \times 104.17 \mu s 833.36 \mu s8×104.17μs833.36μs停止位 104.17μs104.17 \mu s104.17μs5️⃣ 标准配置示例8N18 位数据 无校验 1 位停止位 最常用四、波特率Baud Rate波特率 每秒传输的符号数bps。波特率说明9600低速、抗干扰强115200最常用921600高速传输波特率误差双方设备的波特率允许存在±2% ~ ±3%的误差否则会导致采样错位产生乱码。五、UART 工作流程发送端 (TX)空闲时保持高电平。拉低电平发送起始位持续1/BaudRate1/BaudRate1/BaudRate秒。从低位LSB到高位逐位发送数据位。发送校验位若启用。拉高电平发送停止位持续n/BaudRaten/BaudRaten/BaudRate秒。接收端 (RX)监听持续监测 RX 线电平。触发检测到高 → 低的下降沿起始位。采样启动定时器在每位数据的中间时刻读取电平。校验检查奇偶校验位若启用。停止确认停止位为高电平将接收到的字节存入缓冲区。六、电气标准物理层UART 是逻辑协议具体电平由物理层标准决定标准电平说明TTL UART0V / 3.3V 或 5V单片机常用开发板上的引脚RS232±3V ~ ±15VPC 老式串口抗干扰强RS485差分信号工业现场长距离多点通信⚠️电平匹配警告3.3V MCU 不能直接接 5V UART需电平转换芯片如 TXS0108E。七、流控Flow Control防止接收方处理不过来导致数据丢失。方式信号说明无流控—最简单适用于短距离硬件流控RTS / CTSRequest to Send / Clear to Send软件流控XON / XOFF发送特定 ASCII 字符控制八、UART vs SPI vs IIC特性UARTSPIIIC同步/异步异步同步同步线数2 (TX/RX)4 (MOSI/MISO/SCK/CS)2 (SDA/SCL)速度中快较慢全双工✅✅❌ (半双工)多主设备❌❌✅复杂度低中高九、常见问题与坑点问题原因排查收不到数据TX/RX 接反、未共地、波特率不一致数据乱码波特率误差过大、晶振不准、电平不匹配丢包/溢出接收中断太慢、缓冲区满、未开启 DMA死机发送阻塞时间过长、未处理错误标志十、STM32 中的 UART (USART)STM32 内部集成USART 外设支持同步/异步。十一、一句话总结UART 是最简单、最稳定的串行通信方式。其核心在于“异步”通过起始位和停止位界定数据边界每个比特的持续时间严格等于 1/波特率 秒。