3、物理层设计:信号编码方式、电平标准与传输介质选择

各位同学,咱们今天聊聊物理层。说实话,很多做嵌入式的人容易忽略这一层,觉得「不就是接几根线嘛」。但我在项目里吃过不少亏,才明白物理层要是没选好,上层协议再漂亮也是白搭。

物理层要解决三个核心问题:信号怎么编、电平怎么定、线怎么走。咱们一个一个说。

3.1 信号编码方式

信号编码,说白了就是怎么把0和1变成电信号。我见过不少新手直接拿MCU的GPIO往外怼,结果通信距离一远就乱码。嗯,这里要注意,编码方式决定了你的抗干扰能力和时钟恢复能力。

3.1.1 NRZ编码

NRZ,全称Non-Return-to-Zero,不归零编码。这是最朴素的编码方式:高电平代表1,低电平代表0。

// 举个简单的例子,发送字节 0xA5 (10100101)
// NRZ编码波形示意:
// 1: ━━━━
// 0: ────
// 波形:━━━━ ──── ━━━━ ──── ──── ━━━━ ──── ━━━━

NRZ的优点很明显:实现简单,带宽利用率高。但缺点也很致命——连续发送多个相同比特时,电平不变,接收端没法恢复时钟。我在一个老项目中用过NRZ,结果遇到连续32个0,接收端直接失锁了。

⚠️ 注意: NRZ编码不适合长距离或高速通信。如果非要使用,必须配合时钟线或采用数据加扰技术。

3.1.2 曼彻斯特编码

曼彻斯特编码就聪明多了。它用跳变来表示数据:从高到低代表1,从低到高代表0(也有反向定义的,看具体协议)。

为什么要这么干?因为每个比特中间都有跳变,接收端可以从跳变中提取时钟信号。这就是所谓的「自同步」特性。

// 同样是 0xA5,曼彻斯特编码波形:
// 1: ━┓ (高到低跳变)
// 0: ┏┛ (低到高跳变)
// 波形:┏┛ ━┓ ┏┛ ━┓ ━┓ ┏┛ ━┓ ┏┛
// 每个比特中间都有跳变,时钟信息嵌在数据里

我个人习惯在视觉仿生系统中用曼彻斯特编码。为什么?因为摄像头数据流里经常有长串的0或1(比如黑色背景区域),曼彻斯特编码能保证接收端始终同步。

💡 经验之谈: 曼彻斯特编码的代价是带宽翻倍。原来能跑1Mbps的线路,用曼彻斯特只能跑500kbps。但换来的是可靠性,值不值?我觉得值。

3.2 电平标准

电平标准决定了你的信号能传多远、抗干扰能力多强。我见过有人用TTL电平拉了10米线,结果数据全乱套。你想想看,TTL的噪声容限才0.4V,稍微有点干扰就翻车。

3.2.1 TTL电平

TTL是5V逻辑,高电平≥2.0V,低电平≤0.8V。这是最常用的电平标准,MCU的GPIO基本都是TTL兼容的。

参数 最小值 最大值
输出高电平(VOH) 2.4V 5.0V
输出低电平(VOL) 0V 0.4V
输入高电平(VIH) 2.0V 5.0V
输入低电平(VIL) 0V 0.8V

TTL的致命伤是传输距离。我曾经在实验室里用TTL传了3米,波形就开始变形了。超过5米基本不可靠。

3.2.2 RS232电平

RS232是串口通信的老标准,用±12V表示逻辑电平。+3V~+15V是逻辑0,-3V~-15V是逻辑1。注意,它和TTL是反的。

RS232的优点是抗干扰能力强,传输距离能到15米左右。但缺点也明显:需要电平转换芯片(比如MAX232),而且只能点对点通信。

🔑 关键点: RS232的±12V摆幅大,噪声容限高。但速率上不去,一般不超过115200bps。我在调试老式工业相机时用过RS232,稳定是稳定,就是慢。

3.2.3 RS485电平

RS485是我在视觉仿生系统里最推荐的电平标准。它用差分信号传输,两根线(A和B)的电压差来表示数据。A比B高代表1,A比B低代表0。

差分信号的好处是什么?共模噪声会被抵消。你想想看,如果外界干扰同时耦合到A和B线上,它们的差值不变,数据就不会错。

特性 RS232 RS485
传输方式 单端 差分
最大距离 15米 1200米
最大节点数 2(点对点) 32(可扩展至256)
抗干扰能力 一般
速率 115200bps 10Mbps(短距离)

我曾经在一个视觉检测项目中,用RS485把摄像头数据传到30米外的工控机,跑了两年没出过问题。嗯,真事。

3.3 传输介质选择

介质选对了,物理层就成功了一半。我见过有人用普通杜邦线跑RS485,结果信号反射得一塌糊涂。

3.3.1 双绞线

双绞线是RS485的标配。两根线绞在一起,能有效抑制共模干扰。我建议用屏蔽双绞线(STP),屏蔽层接地,效果更好。

选型时注意特性阻抗,RS485要求120Ω。我曾经用过100Ω的线,结果信号反射严重,加了终端电阻才解决。

3.3.2 同轴电缆

同轴电缆适合高频信号传输,比如视频信号。它的特性阻抗一般是50Ω或75Ω。我在一个视觉系统中用过75Ω的同轴电缆传模拟摄像头信号,效果不错。

但同轴电缆贵,而且布线不方便。除非是高频场景,否则我不太推荐。

3.3.3 光纤

光纤是终极方案。抗干扰能力最强,传输距离最远(几十公里),速率最高(Gbps级别)。但成本也最高,需要光电转换模块。

我在一个户外视觉监控项目里用过光纤,摄像头在山上,控制室在山下,距离2公里。用光纤一点问题没有,换成铜缆早就被雷劈了。

💡 选型建议:
  • 板内通信(<30cm):TTL电平,普通排线
  • 短距离(<10m):RS232,屏蔽线
  • 中距离(10m~1000m):RS485,双绞线
  • 超长距离或强干扰:光纤

3.4 知识体系总览

下面这张图是我画的物理层设计决策树,帮你快速定位该用哪种方案。

物理层设计决策树 传输距离? < 10米 ≥ 10米 TTL + 普通线 RS232 + 屏蔽线 RS485 + 双绞线 光纤 编码方式选择 编码方式选择 NRZ(简单场景) 曼彻斯特(可靠) 曼彻斯特(推荐) 曼彻斯特或专用编码 板内调试用 成本最低 短距离可靠 兼容性好 工业场景首选 性价比高 超长距离 强干扰环境

这张图是我多年经验的总结。你从「传输距离」开始,顺着分支往下走,就能找到适合你项目的方案。

3.5 避坑指南

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

  • 终端电阻不能省:RS485总线两端必须加120Ω电阻。我曾经偷懒没加,结果信号反射导致数据错位,排查了两天才发现。
  • 地线要接:差分信号虽然抗干扰,但共模电压不能超过芯片承受范围。RS485的共模电压范围是-7V~+12V,超过就烧芯片。
  • 线缆选型别省钱:我见过有人用网线里的两对绞线跑RS485,结果距离一远就丢包。正规双绞线也就贵几毛钱一米,别省这个钱。
  • 注意电平转换:MCU的TTL电平不能直接接RS232或RS485,必须用转换芯片。我刚开始做项目时直接怼上去,烧了三个串口才长记性。

好了,物理层就讲到这里。记住一句话:物理层是通信系统的地基,地基不稳,上层建筑再漂亮也是空中楼阁。


公众号:蓝海资料掘金营,微信deep3321