CAN FD 物理层:差分信号、共模电压、终端电阻
做 CAN 通信这些年,我发现很多工程师喜欢一上来就调软件配置,把物理层当成「默认就好」的环节。说实话,每次出 EMI 问题,十有八九都跟物理层没吃透有关。今天我就把 CAN FD 物理层最核心的三个东西——差分信号、共模电压、终端电阻——掰开揉碎讲清楚。
1. 差分信号 – 为什么非要两条线?
CAN FD 用的是差分传输,就是靠 CAN_H 和 CAN_L 两根线之间的电压差来传递信息。显性电平(逻辑 0)时,CAN_H ≈ 3.5V,CAN_L ≈ 1.5V,差值为 2V;隐性电平(逻辑 1)时,两根线都是 2.5V,差值为 0V。
有人问:为什么不用单端?我在一个项目里试过把其中一根线接地,结果上电就乱码——共模噪声在单端线路上直接叠加到信号上,根本没法用。差分信号最大的好处就是抗共模干扰:外界的电磁噪声几乎同时耦合到两条线上,接收器只看差值,噪声一抵消就干净了。
避坑小贴士: 布线时一定要让 CAN_H 和 CAN_L 等长、紧耦合(扭绞线对)。我见过因为走线分开太大,差模转共模后辐射直接超标。两条线就像双胞胎,得形影不离。
2. 共模电压 – 为什么它比你想的更重要?
共模电压就是 CAN_H 和 CAN_L 电压的平均值。正常工作时,隐性状态共模电压约 2.5V,显性状态稍微往下掉一点点(约 2.25V)。但实际系统中,不同节点的地电位可能有 1~2V 的偏差,再加上线缆压降,共模电压就会偏移。
我记得有一次在车载项目里,两个 ECU 距离 30 米,唤醒后偶尔丢帧。抓波形发现共模电压跑到了 3.8V,差点超过收发器共模输入范围。后来加了共模扼流圈才稳住。
共模电压为啥跟 EMI 整改有关?因为共模扼流圈靠磁芯的磁通抵消来抑制共模电流,而磁芯的饱和特性跟共模电压直接相关。共模电压太高,扼流圈里的共模电流就大,磁芯容易饱和——饱和后扼流圈就废了。
| 参数 | 隐性(逻辑 1) | 显性(逻辑 0) |
|---|---|---|
| CAN_H 电压 | 约 2.5 V | 约 3.5 V |
| CAN_L 电压 | 约 2.5 V | 约 1.5 V |
| 差分电压 | 约 0 V | 约 2.0 V |
| 共模电压 | 约 2.5 V | 约 2.25 V |
注意: 共模电压的偏移会直接影响共模扼流圈的共模阻抗。我曾经在 -40°C 环境下测扼流圈性能,发现额定电流降额后共模偏移更大,差点没通过 EMC 摸底。选型时一定要按最恶劣的共模电压工况来。
3. 终端电阻 – 小电阻,大责任
终端电阻的作用就是吸收总线末端的反射信号,防止驻波。CAN 总线的特性阻抗约 120Ω,所以终端电阻标准值就是 120Ω,还得放在总线两端各一个。
之前有个同事做工业控制,图省事只在主控端焊了一个 120Ω,结果从节点到主控距离 50 米,波形台阶明显,误码率飙升。我过去一看,终端电阻少了!你想想,信号跑到线末端发现阻抗不匹配,弹回来跟后面的信号叠加,波形不乱才怪。
这里我特别想强调终端电阻和共模扼流圈的布局顺序。正确的做法是:
- 共模扼流圈尽量靠近 CAN 收发器
- 终端电阻在扼流圈与线束连接器之间
- 终端电阻的两端直接跨在 CAN_H 和 CAN_L 上
有些设计为了节省空间,把终端电阻放在扼流圈之前(靠近收发器),这样扼流圈对终端反射的抑制效果就大打折扣。嗯,这个坑我踩过两次,后来再也不改了。
核心原则: 终端电阻只负责匹配线缆特性阻抗,不参与 EMI 滤波。共模扼流圈负责滤除共模噪声,两者各司其职,但布局会互相影响。
4. 一张图看懂物理层结构
下面这张图展示了 CAN FD 物理层从收发器到线束的完整链路,以及差分信号、共模电压、终端电阻三者的位置关系。
这张图把从收发器到线束的路径全画出来了。可以看到共模扼流圈放在收发器之后、终端电阻之前,这样既不影响终端电阻的匹配作用,又能把收发器产生的共模噪声扼杀在早期。
5. 三者如何配合工作?
我再用一个实战场景串起来。假设你有一辆车的 CAN FD 总线,节点 1 发送数据,节点 2 接收。
- 差分信号从节点 1 收发器输出,经过共模扼流圈,扼流圈抑制掉线缆耦合进来的共模电流(比如马达驱动带来的共模噪声)。
- 信号到达总线末端,终端电阻吸收反射能量,防止信号振铃。
- 节点 2 处,同样经过共模扼流圈后再进接收器,接收器只认差分电压,共模成分被丢弃。
假如共模电压偏移到了 4V,节点的收发器还能工作吗?那得看收发器的共模输入范围。大部分 CAN FD 收发器可以接受 -2V ~ +7V 的共模电压,但别忘了还有共模扼流圈的饱和问题——共模电压升高导致共模电流增大,扼流圈磁芯可能提前饱和,共模阻抗骤降,滤波效果直接归零。
我建议: 选共模扼流圈时一定要核算最恶劣工况下的共模电流,特别是低温启动时电源电压偏高的情况。可以用这个公式快速估算:Icm = (Vcm_max - Vbus_mid) / Rk,其中 Rk 是线缆直流电阻与终端电阻的并联值。
好了,差分信号、共模电压、终端电阻这三驾马车,每一匹都得跑稳。物理层稳了,后面的 EMI 整改才有根基。