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米。抗干扰能力一般。
2.1.2 RS232电平
RS232是串口通信的老祖宗了。它和TTL最大的区别就是:电压是反的,而且范围大得多。
- 逻辑1:-3V ~ -15V
- 逻辑0:+3V ~ +15V
- 特点:传输距离可达15米左右。但速度慢,一般不超过115200bps。
我记得第一次用RS232调试设备,拿万用表量TX引脚,发现是负电压,还以为板子坏了。后来才明白,这就是RS232的“特色”。
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后,问题立刻解决。这就是差分信号的威力。
2.4 总线拓扑结构
总线拓扑,就是设备怎么连在一起。对于窗帘电机系统,最常用的是总线型拓扑。
2.4.1 总线型
所有设备都挂在一根总线上。RS485就是典型的总线型拓扑。
- 优点:布线简单,成本低,扩展方便
- 缺点:总线故障会导致整个系统瘫痪
- 注意:总线两端需要加120欧姆的终端电阻,防止信号反射
2.4.2 星型拓扑
所有设备都连接到中心节点。比如用RS232点对点通信,就是星型。
- 优点:单个设备故障不影响其他设备
- 缺点:中心节点是单点故障,布线成本高
2.4.3 环型拓扑
设备首尾相连,形成一个环。工业现场总线有时会用。
- 优点:有冗余路径,可靠性高
- 缺点:故障诊断复杂,增加一个节点可能影响整个环
好了,物理层的基础就这些。下一章咱们聊数据链路层,看看数据是怎么打包成帧的。到时候我会拿窗帘电机的实际协议来举例,保证你一听就懂。
本章小结:
- TTL是板级电平,RS232是点对点通信,RS485是工业总线标准
- 波特率必须一致,晶振精度要够
- 差分信号抗干扰能力强,适合电机控制环境
- RS485必须用总线型拓扑,两端加终端电阻
公众号:蓝海资料掘金营,微信deep3321