硬件设计要点:TX/RX交叉连接、地线共地、流控引脚RTS/CTS、电平转换芯片选型

做UART驱动开发,很多人一上来就撸代码。但我得说句实在话——硬件设计没搞对,后面调驱动就是给自己挖坑。我见过太多工程师拿着逻辑分析仪抓波形,抓了半天发现TX和RX压根没交叉连,或者地线没共好,数据全是乱码。

这一章,咱们就把UART硬件设计的几个关键点掰开揉碎讲清楚。你把这些记住了,后面写驱动的时候会省很多事。

2.1 TX/RX交叉连接——最基础也最容易翻车的地方

UART通信是异步串行,数据在TX和RX两根线上跑。但有个原则:发送方的TX要接接收方的RX,接收方的RX要接发送方的TX。说白了就是交叉连接。

⚠ 我踩过的坑: 有一次做板子,原理图里把两个设备的TX直接连在一起了。板子打样回来,怎么调都不通。查了半天,发现是硬件工程师把网表标反了。从那以后,我每次看原理图都会拿红笔把TX/RX路径描一遍。

为什么必须交叉?因为UART是点对点通信,没有时钟线。A设备从TX发数据,B设备必须从RX收数据。如果TX接TX,两边都在发,没人听,数据就丢了。

你想想看,这就像两个人打电话,一个人光说,另一个人光听。要是两个人都对着话筒喊,那谁也听不清对方说什么。

设备A 设备B 连接方式 结果
TX RX 交叉 ✅ 正常通信
TX TX 直连 ❌ 数据冲突
RX RX 直连 ❌ 双方都收不到

2.2 地线共地——信号完整性的命根子

很多新手会忽略地线。觉得UART就两根信号线,地线随便拉一根就行。我告诉你,地线没共好,数据全是错的。

UART的电平判断是相对于GND的。如果两个设备的地电位不一样,A设备发一个高电平(比如3.3V),B设备的地飘到了0.5V,那B设备看到的电平就变成了2.8V。虽然大多数芯片能容忍一定范围,但地电位差大了,数据就判不准了。

💡 我的习惯: 只要两个设备用UART通信,我一定会在它们之间拉一根粗地线,或者通过PCB的GND平面连接。如果是开发板对开发板,我会用杜邦线单独接一根地线,不依赖电源线的地。

我记得有一次调试一个工业设备,UART通信时好时坏。用示波器一看,地线上有200mV的噪声。后来把地线加粗、缩短,问题就解决了。嗯,地线这事,真不能省。

2.3 流控引脚RTS/CTS——什么时候用,什么时候不用

UART的流控分硬件流控和软件流控。硬件流控靠RTS(请求发送)和CTS(允许发送)两根引脚。

简单说:RTS是输出,告诉对方“我准备好了,你可以发了”;CTS是输入,对方告诉你能不能发。

但说实话,大部分嵌入式场景用不到硬件流控。为什么?因为嵌入式设备的数据量通常不大,MCU的处理速度也够快。你想想看,一个115200bps的UART,每秒也就传11.5KB,MCU完全来得及处理。

那什么时候用?我总结了几种情况:

  • 高速通信:比如460800bps以上,MCU可能来不及处理,需要流控来“刹车”
  • 多设备共享总线:比如RS-485的多机通信,RTS用来控制收发切换
  • 接收缓冲区太小:有些低端MCU的UART FIFO只有16字节,数据一多就溢出
🔧 我的建议: 如果你不确定要不要用流控,那就先不用。把中断接收和轮询发送调通之后,再根据实际需求加流控。别一开始就把自己搞复杂了。

如果要用硬件流控,接线是这样的:

设备A 设备B 说明
RTS CTS A告诉B“我能收”
CTS RTS B告诉A“我能收”

注意,RTS和CTS也是交叉的。RTS接对方的CTS,CTS接对方的RTS。

2.4 电平转换芯片选型——3.3V和5V怎么共存

现在的MCU大多是3.3V供电,但很多传感器、老式设备还是5V的。直接连?不行。3.3V的IO口可能被5V烧掉,5V的设备也识别不了3.3V的电平。

这时候就需要电平转换芯片。我常用的方案有几种:

  • 专用电平转换芯片:比如TXS0102、SN74LVC1T45,双向自动检测方向,用起来方便
  • 分立元件搭:用MOS管加两个电阻,成本低,但只能单向转换
  • 电阻分压:5V转3.3V可以用两个电阻分压,但3.3V转5V不行,因为电压不够

我个人习惯用TXS0102。它支持双向转换,不需要方向控制引脚,而且封装小,适合板级设计。

📋 选型要点:
  • 速率:UART最高波特率是多少?TXS0102支持到24Mbps,够用
  • 方向:是单向还是双向?UART是双向的,所以选双向芯片
  • 电压:两边的电压范围是多少?常见的是1.8V/2.5V/3.3V/5V
  • 封装:板子空间够不够?SOT-23还是QFN?

我曾经在一个项目里用了电阻分压做5V转3.3V,结果波特率一高,波形就变形了。后来换成专用芯片,问题就没了。嗯,该花的钱还是得花。

2.5 硬件设计知识图谱

下面这张图把本章的核心知识点串起来了。你可以把它当作硬件设计的检查清单:

UART硬件设计知识图谱 UART硬件设计 TX/RX交叉连接 地线共地 RTS/CTS流控 电平转换选型 TX→RX,RX→TX 共地降低噪声 高速/多设备时使用 TXS0102 / 分立元件

2.6 本章小结

硬件设计是UART通信的地基。地基没打好,上面写再多代码也是白搭。我总结了几条铁律,你记一下:

  1. TX/RX必须交叉——画原理图的时候拿红笔描一遍
  2. 地线必须共地——别省那根线,省了就是给自己找麻烦
  3. 流控按需使用——大部分场景用不到,别为了炫技加复杂功能
  4. 电平转换选专用芯片——电阻分压只适合低速、临时测试