2、UART硬件接口:RS-232电平标准、TTL电平标准、DB9接口定义、USB转串口原理

做嵌入式通信,第一关就是搞懂硬件接口。很多人调不通UART,其实不是代码写错了,而是电平没配对。我见过不少新手,拿着TTL电平的模块直接往RS-232的DB9口上怼,结果要么没反应,要么冒烟。嗯,咱们先把这层窗户纸捅破。

2.1 电平标准:TTL vs RS-232

说白了,UART通信的核心就是两根线——TX和RX。但同样的数据,在不同设备上,电压范围完全不一样。这就是电平标准。

参数 TTL电平(3.3V/5V) RS-232电平(±12V)
逻辑1(高电平) 2.0V ~ VCC -3V ~ -15V
逻辑0(低电平) 0V ~ 0.8V +3V ~ +15V
电压摆幅 小(3.3V或5V) 大(约±12V)
抗干扰能力 弱 强
传输距离 <1.5米 可达15米
常见设备 单片机、传感器、开发板 工控机、PLC、老式PC串口

你想想看,TTL电平的逻辑1是3.3V或5V,逻辑0是0V。而RS-232正好反过来——逻辑1是负电压(-3V到-15V),逻辑0是正电压(+3V到+15V)。这就是为什么不能直接连。我在项目中遇到过,有人用杜邦线把STM32的TX直接接到工控机的DB9上,结果STM32的IO口直接烧了。教训就是:电平转换芯片不能省。

⚠️ 注意: 千万不要把TTL电平的TX/RX直接接到RS-232接口上。TTL的5V对RS-232来说可能烧毁接收端,而RS-232的±12V对TTL来说直接击穿IO口。必须使用电平转换芯片,比如MAX232、SP3232。

2.2 DB9接口定义

DB9是RS-232最常用的物理接口。9个引脚,但实际UART通信只用其中3根:TX、RX、GND。其他引脚用于硬件流控(RTS/CTS)和调制解调器控制(DTR/DSR等)。

我个人习惯,在调试时只接3根线:

  • 引脚2:RX(接收数据)
  • 引脚3:TX(发送数据)
  • 引脚5:GND(信号地)

注意:DB9的引脚定义分公头和母头。公头的引脚2是TX,母头的引脚2是RX。连线时要交叉——公头的TX接母头的RX,公头的RX接母头的TX。这就是所谓的交叉线。

💡 小技巧: 如果你用USB转串口线,通常已经做好了交叉。但如果你自己焊DB9接头,记得TX接TX、RX接RX是错的。正确的做法是:TX接对方的RX,RX接对方的TX。GND接GND。

2.3 USB转串口原理

现在的电脑基本没有原生串口了。怎么办?用USB转串口芯片。市面上常见的有:

  • FT232(FTDI):稳定,驱动好,价格稍贵
  • CH340(南京沁恒):便宜,国产,够用
  • CP2102(Silicon Labs):体积小,性能不错
  • PL2303(Prolific):老牌,但假货多

这些芯片的原理都一样:USB协议 ↔ UART协议。电脑通过USB发送数据包,芯片解析后转成UART的TX/RX信号。反过来,UART收到的数据被芯片打包成USB包,发给电脑。

我曾经用CH340做过一个批量烧录器,一次接8个模块。刚开始总是丢包,后来发现是USB的供电不足。每个CH340在通信时大约需要100mA,8个就是800mA,USB口根本扛不住。解决办法是外接5V供电。

🔑 关键点: USB转串口芯片内部通常集成了电平转换功能。大多数芯片输出的是TTL电平(3.3V或5V),可以直接接单片机。但如果你想接RS-232设备,还需要外接MAX232之类的电平转换芯片。

2.4 知识结构图:UART硬件接口体系

下面这张图把本章的核心知识点串起来了。你可以看到从电平标准到物理接口,再到USB转串口的完整链路。

UART硬件接口知识体系 UART通信 电平标准 物理接口 TTL电平 RS-232电平 DB9接口 USB转串口原理 FT232 CH340 CP2102 PL2303 核心原则:电平匹配 + 交叉连线 + 共地 TTL设备 ↔ 电平转换芯片 ↔ RS-232设备

2.5 实战避坑指南

最后,分享几个我踩过的坑:

  1. 共地问题:两个设备通信,GND必须连在一起。不共地,信号参考点不同,数据全是乱码。我曾经调试一个无线模块,折腾了两天,最后发现是GND没接。
  2. 电平匹配:3.3V设备接5V设备,需要确认IO口是否容忍5V。很多STM32的IO口是5V容忍的,但有些芯片不行。不确认就接,烧了别怪我。
  3. USB转串口供电:有些USB转串口线只能提供500mA电流。如果你外接的模块功耗大,建议用独立电源。
  4. DB9公母头:买线之前先确认你的设备是公头还是母头。公头插母头,母头插公头。两个公头怼不上,两个母头也怼不上。
🔧 推荐工具: 手边常备一个USB转TTL模块(CH340或FT232),再加一个MAX232电平转换板。这样无论遇到TTL设备还是RS-232设备,都能快速调试。