物理层基础:RS-232/RS-485电平标准、差分信号原理、双绞线布线注意事项
各位同学,咱们今天聊点实在的。做嵌入式通信,物理层是绕不开的第一道坎。很多人上来就调协议栈,结果死活通不了,最后发现是电平不匹配、线接错了。我早年就吃过这个亏,所以这一章咱们把物理层的基础打扎实。
说白了,物理层就是定义“怎么在线上表示0和1”。RS-232和RS-485是两种最常用的标准,但它们的脾气完全不同。你想想看,一个用单端信号,一个用差分信号,抗干扰能力差了好几个量级。
RS-232电平标准
RS-232是早期PC串口的标配。它的电平定义比较“暴力”:
- 逻辑1(MARK):-3V ~ -15V
- 逻辑0(SPACE):+3V ~ +15V
- 不确定区:-3V ~ +3V(这个区域要避免)
注意了,它用的是负逻辑。我刚开始做项目时,用万用表量TX脚,发现空闲时是-9V,还以为是板子坏了。后来才反应过来——RS-232空闲状态就是负电压,这是正常的。
RS-232的传输距离一般不超过15米,速率通常115200bps以内。再远就不行了,因为单端信号抗共模干扰能力差,线一长信号就变形。
RS-485电平标准
RS-485就不一样了。它用差分信号传输,抗干扰能力强得多。电平定义是这样的:
| 状态 | A线(非反相) | B线(反相) | 差分电压(A-B) |
|---|---|---|---|
| 逻辑1 | 高 | 低 | +0.2V ~ +6V |
| 逻辑0 | 低 | 高 | -0.2V ~ -6V |
你看,RS-485的差分电压只需要±0.2V就能识别,而RS-232需要±3V。这意味着RS-485可以用更低的电压驱动,传输距离也更远——理论上能到1200米。
我个人习惯在项目里优先用RS-485,尤其是多节点通信的场景。一个总线可以挂32个节点(标准负载),用中继器还能扩展更多。
差分信号原理
差分信号的核心思想是:用两根线的电压差来表示数据,而不是用单根线对地的电压。这样做的好处很明显:
- 抗共模干扰:外部噪声同时耦合到两根线上,差分电压不变
- 抑制电磁辐射:两根线电流方向相反,磁场相互抵消
- 地电位差容忍度高:两个设备地电位差在-7V~+12V内都能正常工作
为什么会这样?你想想看,如果一根线受到干扰升高了1V,另一根线也升高1V,那它们的差值没变。这就是共模抑制的原理。我在一个工厂项目里遇到过电机启动时通信乱码,换成RS-485后问题就解决了。
双绞线布线注意事项
RS-485推荐使用双绞线。为什么?因为双绞线能让两根线受到的干扰更一致。我总结了几条实战经验:
- 用屏蔽双绞线:在工业环境里,屏蔽层单端接地,能滤掉高频干扰
- 终端电阻匹配:在总线两端各加一个120Ω电阻,消除信号反射。我见过有人不加,结果长线通信时波形振铃严重
- 避免星型拓扑:RS-485总线最好是手拉手串联,不要分叉。分叉会产生阻抗不连续点
- 远离强电线路:至少保持20cm以上距离,不要和动力线走同一个线槽
- 地线要粗:建议用1.0mm²以上的地线,降低地环流影响
下面这张图把RS-232和RS-485的核心差异总结了一下,方便你对照:
嗯,这里要注意一点:RS-485虽然叫“总线”,但同一时刻只能有一个节点发送数据。所以需要协议层来仲裁谁说话。这个咱们后面章节会细讲。
最后说个我踩过的坑。有一次布线,我把RS-485的A、B线接反了,结果通信死活不通。查了半天才发现是线序错了。所以我的习惯是:A线用橙白/橙,B线用绿白/绿,这样不容易搞混。另外,屏蔽层只能单端接地,两端都接地反而会形成地环路,引入干扰。
好了,物理层的基础就这些。记住一句话:RS-232适合桌面调试,RS-485适合工业现场。选对标准,布线规范,通信就成功了一半。