2. 物理层基础:电平标准、波特率与时钟同步、差分信号原理、总线拓扑结构

好,咱们正式开始聊物理层。说实话,很多做嵌入式开发的同事,一上来就调协议栈、写应用层代码,结果板子连不上,查半天发现是电平不匹配。我当年就干过这种事——拿一个5V的TTL模块去接3.3V的STM32,烧了好几个IO口才反应过来。嗯,物理层这东西,看着基础,但坑是真不少。

2.1 电平标准:TTL、RS232、RS485

先说说最常见的三种电平标准。你想想看,芯片和芯片之间、设备和设备之间,怎么才算“1”和“0”?不同的标准,定义完全不同。

2.1.1 TTL电平

TTL,全称Transistor-Transistor Logic。说白了就是芯片内部用的那种电平。我个人习惯叫它“板级电平”。

  • 逻辑1:2.0V ~ 5.0V(5V供电时)
  • 逻辑0:0V ~ 0.8V
  • 特点:传输距离短,一般不超过1米。抗干扰能力一般。
注意: 现在很多MCU是3.3V供电,TTL电平的阈值会相应变化。我曾经遇到过3.3V的TTL输出接5V的TTL输入,逻辑1识别没问题,但反过来5V输出接3.3V输入,就可能烧坏IO口。一定要加电平转换芯片。

2.1.2 RS232电平

RS232是串口通信的老祖宗了。它和TTL最大的区别就是:电压是反的,而且范围大得多。

  • 逻辑1:-3V ~ -15V
  • 逻辑0:+3V ~ +15V
  • 特点:传输距离可达15米左右。但速度慢,一般不超过115200bps。

我记得第一次用RS232调试设备,拿万用表量TX引脚,发现是负电压,还以为板子坏了。后来才明白,这就是RS232的“特色”。

小技巧: 现在电脑上基本没有RS232串口了,都是用USB转串口芯片。但很多USB转串口模块默认输出的是TTL电平,不是RS232电平。要接真正的RS232设备,得用MAX232这样的电平转换芯片。

2.1.3 RS485电平

RS485是我在工业项目中最常用的。它用差分信号传输,抗干扰能力极强。

  • 逻辑1:A线电压比B线电压高(通常高200mV以上)
  • 逻辑0:A线电压比B线电压低(通常低200mV以上)
  • 特点:传输距离可达1200米。支持多点通信(最多256个节点)。

做窗帘电机控制,RS485几乎是标配。为什么?因为电机一启动,电磁干扰特别大。TTL根本扛不住,RS232距离又不够。RS485正好合适。

2.2 波特率与时钟同步

波特率,说白了就是每秒传输多少个符号。对于串口通信来说,一个符号就是一个bit。所以波特率就等于比特率。

常见的波特率有:9600、19200、38400、115200。窗帘电机我一般用9600或19200。为什么?因为电机控制不需要高速传输,稳定更重要。

关键点: 通信双方必须设置相同的波特率。差一点点都不行。我曾经调试一个项目,发送端设9600,接收端设9602,结果数据全是乱码。查了整整一天才找到原因。

时钟同步是怎么回事?串口是异步通信,没有单独的时钟线。收发双方靠各自的晶振来产生时钟。这就要求双方的晶振精度足够高。一般要求误差在±2%以内。工业环境我建议用±1%的晶振。

你想想看,如果发送端时钟快一点,接收端时钟慢一点,累积下来,第10个bit就可能采样错了。这就是为什么串口帧里要有起始位和停止位——它们就是用来做“对齐”的。

2.3 差分信号原理

差分信号,是RS485和CAN等总线的基础。它和单端信号最大的区别是:用两根线的电压差来表示逻辑状态,而不是用一根线对地的电压。

为什么差分信号抗干扰能力强?

  • 外部干扰会同时耦合到两根线上,电压差基本不变
  • 地线压降不影响信号判断
  • 可以用双绞线,进一步抑制共模干扰

我记得有一次在工厂里调试,电机一启动,RS232通信就断。换成RS485后,问题立刻解决。这就是差分信号的威力。

经验之谈: 做RS485布线时,一定要用双绞线。而且A线和B线要绞在一起,不能分开走。我见过有人用两根平行线代替双绞线,结果通信距离直接减半。

2.4 总线拓扑结构

总线拓扑,就是设备怎么连在一起。对于窗帘电机系统,最常用的是总线型拓扑。

2.4.1 总线型

所有设备都挂在一根总线上。RS485就是典型的总线型拓扑。

  • 优点:布线简单,成本低,扩展方便
  • 缺点:总线故障会导致整个系统瘫痪
  • 注意:总线两端需要加120欧姆的终端电阻,防止信号反射

2.4.2 星型拓扑

所有设备都连接到中心节点。比如用RS232点对点通信,就是星型。

  • 优点:单个设备故障不影响其他设备
  • 缺点:中心节点是单点故障,布线成本高

2.4.3 环型拓扑

设备首尾相连,形成一个环。工业现场总线有时会用。

  • 优点:有冗余路径,可靠性高
  • 缺点:故障诊断复杂,增加一个节点可能影响整个环
避坑指南: 我曾经在一个项目中,把RS485总线接成了星型。结果通信时好时坏。后来才发现,星型拓扑会产生信号反射,导致数据错误。RS485必须用总线型,而且分支线越短越好,最好不超过1米。

好了,物理层的基础就这些。下一章咱们聊数据链路层,看看数据是怎么打包成帧的。到时候我会拿窗帘电机的实际协议来举例,保证你一听就懂。

本章小结:

  • TTL是板级电平,RS232是点对点通信,RS485是工业总线标准
  • 波特率必须一致,晶振精度要够
  • 差分信号抗干扰能力强,适合电机控制环境
  • RS485必须用总线型拓扑,两端加终端电阻

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