UART 硬件引脚与电气特性:从物理层看懂通信

做 UART 调试,第一件事不是看协议,而是看引脚。我见过太多工程师拿着逻辑分析仪抓了一堆波形,结果发现线接错了——这种低级错误,浪费半天时间。所以这一章,咱们把硬件引脚和电气特性彻底讲透。

2.1 核心三根线:TX、RX、GND

UART 通信最少只需要三根线。你想想看,数据要发出去,要收回来,还得有个共同的参考地。就这么简单。

引脚 全称 方向 说明
TX Transmit 输出 发送数据,接对方的 RX
RX Receive 输入 接收数据,接对方的 TX
GND Ground 公共 信号参考地,必须连接
⚠ 常见坑: 我曾经遇到一个项目,设备之间通信时好时坏。查了两天,最后发现是 GND 没接。两个设备的地电位差了 2V 多,数据帧全乱套了。记住:GND 是 UART 的命根子,不接地,啥都别谈。

2.2 交叉连接:TX ↔ RX

UART 是点对点通信。A 设备的 TX 必须接 B 设备的 RX,B 设备的 TX 接 A 设备的 RX。这叫交叉连接,也叫「零调制解调器」接法。

我个人的习惯是:画原理图时,在 TX 和 RX 旁边标注「接对方 RX」「接对方 TX」。别笑,我见过有人把 TX 接 TX、RX 接 RX,结果两边都在发,没人听——这不叫通信,这叫吵架。

✅ 正确接法:
设备A TX → 设备B RX
设备A RX ← 设备B TX
设备A GND — 设备B GND

2.3 硬件流控:RTS / CTS

有些场景下,光靠三根线不够。比如一个高速发送,一个低速接收,接收方来不及处理,数据就丢了。这时候需要流控。

RTS(Request To Send)和 CTS(Clear To Send)就是干这个的。简单说:

  • RTS:我准备好了,你可以发吗?
  • CTS:我准备好了,你发吧。

实际工作中,RTS/CTS 用得不多。为什么?因为大部分嵌入式场景下,波特率不高,数据量不大,软件缓冲区够用。但如果你在做高速传输(比如 921600 bps 以上),或者用 DMA 搬运数据,那流控就很有必要了。

💡 我的经验: 调试流控时,用逻辑分析仪同时抓 RTS 和 CTS 的波形。看谁先拉高、谁先拉低,一眼就能判断是发送端在等,还是接收端在堵。

2.4 电平标准:TTL / RS232 / RS485

这是最容易搞混的地方。同样是 UART,电平标准不同,硬件完全不兼容。我刚开始做项目时,拿一个 RS232 的串口线去接 TTL 的模块,结果冒烟了——嗯,那次教训很深刻。

标准 电压范围 逻辑1 逻辑0 典型应用
TTL 0 ~ 5V / 3.3V 2.4V ~ VCC 0 ~ 0.8V MCU、传感器、模块
RS232 -15V ~ +15V -3V ~ -15V +3V ~ +15V 工控机、老式设备
RS485 -7V ~ +12V A-B > +200mV A-B < -200mV 远距离、多节点

TTL 电平

最常见。STM32、ESP32、Arduino 这些芯片,基本都是 TTL 电平。3.3V 或 5V,直接连。注意:3.3V 的 TX 接 5V 的 RX 一般没问题,反过来就可能烧引脚。我建议加个电平转换,或者用电阻分压,别省这个钱。

RS232 电平

RS232 用正负电压表示逻辑,和 TTL 完全相反。所以不能直连,必须用 MAX232 这类芯片做电平转换。我记得第一次用 RS232 调试时,逻辑分析仪抓出来的波形是反的——后来才意识到,RS232 的空闲状态是负电压,起始位是正电压,跟 TTL 正好相反。

RS485 电平

RS485 是差分信号,用两根线(A 和 B)的电压差表示数据。抗干扰能力强,传输距离远(1200米以上),支持多节点(最多 256 个)。但 RS485 是半双工的,同一时刻只能发或收。做 RS485 时,一定要处理好收发切换的时序,否则数据会撞车。

⚠ 关键提醒: 逻辑分析仪抓 UART 波形时,必须确认电平标准。TTL 信号直接抓没问题,RS232 信号需要先转换成 TTL 再抓,否则可能烧坏分析仪的输入引脚。我见过有人拿 3.3V 的分析仪去抓 ±12V 的 RS232,结果...嗯,换了一台新的。

2.5 知识结构图:UART 硬件引脚与电气特性

下面这张图把本章的核心知识点串起来了。你可以把它当作调试时的快速参考。

UART 硬件引脚与电气特性 核心三线 TX / RX / GND 交叉连接 TX ↔ RX 对接 硬件流控 RTS / CTS 电平标准 TTL 0 ~ 5V / 3.3V MCU / 模块 最常用 RS232 -15V ~ +15V 工控 / 老设备 需电平转换 RS485 差分信号 远距离 / 多节点 半双工 调试要点 确认 GND 连接 检查 TX/RX 交叉 匹配电平标准 注意 RS232 极性 RS485 收发切换 流控时序检查

2.6 实战避坑清单

最后,我把自己这些年踩过的坑整理成一份清单。你调试时对照着检查,能省不少时间。

  1. GND 没接——数据乱码、通信不稳定。先量一下两个设备之间的地电位差,超过 0.5V 就要小心。
  2. TX/RX 接反——两边都在发,没人听。用逻辑分析仪抓一下,看 TX 脚有没有波形就知道了。
  3. 电平不匹配——3.3V 接 5V 一般能用,但 5V 接 3.3V 可能烧引脚。RS232 和 TTL 混接必出问题。
  4. RS485 收发切换太慢——数据头几个字节丢失。用示波器看 DE/RE 引脚和 TX 的时序关系。
  5. 流控信号没接——高速传输时丢数据。如果软件流控(XON/XOFF)也不开,那就只能降波特率。
🔧 我的调试习惯: 拿到一块新板子,先用逻辑分析仪抓 TX 和 RX 的波形。不看协议对不对,先看电平对不对、极性对不对、有没有信号。这一步走稳了,后面的事就好办了。