CAN总线物理层概述:为什么需要差分信号?
上个月产线反馈,新批次控制器在电机干扰下频繁丢帧。示波器抓单线波形,信号淹没在噪声里几乎看不见。硬件同事嘟囔着“这电平都飘到天上去了”,我盯着屏幕突然想起十年前第一次调CAN时犯的错——当时竟用万用表量CAN_H对地电压判断通讯状态。
从单端到差分的必然选择
早期工业总线常用单端信号,比如RS-232。逻辑1是-12V,逻辑0是+12V,参考地线传输。在电机启停瞬间,地平面上下波动2V很常见,接收端看到的-12V可能变成-10V,误判成逻辑0。更麻烦的是空间辐射干扰,电缆就像天线,耦合的噪声直接叠加在信号上。
CAN总线设计于1980年代,汽车引擎舱堪称电磁环境地狱:点火线圈产生30kV高压脉冲,电机碳刷打火产生宽带噪声,继电器通断引起浪涌。博世工程师们清楚知道,单端信号在这里活不过一秒。
差分信号的魔法
差分传输的精髓在于不依赖绝对电平,只关心两根线的相对关系。CAN总线定义:
- 显性位(逻辑0):CAN_H比CAN_V高,典型压差2V
- 隐性位(逻辑1):两根线电压接近,压差接近0V
干扰同时耦合到双绞线上时,CAN_H和CAN_L同时被抬高或压低,但两者差值几乎不变。这就是共模抑制——把噪声变成共模信号,被接收器内部的差分放大器直接过滤掉。
实际调试时我常测共模电压范围。某次发现共模电压竟漂移到8V(标准要求-2~7V),排查发现节点电源地线虚焊。这里踩过坑: