CAN总线终端电阻匹配原理与抗反射优化
一、一个让我熬夜三天的调试案例
去年做一款车载BMS控制器,CAN通信在实验室跑得稳稳当当,一装车就间歇性丢帧。示波器挂上去一看,CAN_H对CAN_L的差分信号在总线末端出现了明显的振铃——下降沿过冲超过2V,持续振荡了将近200ns。更诡异的是,只有靠近ECU的那个节点收不到数据,其他节点正常。
拆开检查,发现终端电阻用的是120Ω贴片,但PCB走线从CAN收发器到DB9接口绕了将近15cm。问题就出在这里——终端电阻没有放在总线物理末端,而是放在了PCB的起始端。这个坑,我替你们踩过了。
二、终端电阻到底在干什么
很多人以为终端电阻就是“匹配阻抗防反射”,但实际工作中我发现,它同时干了三件事:
第一,吸收反射能量。CAN总线是差分传输线,特性阻抗典型值120Ω(双绞线绞距不同会有±10%偏差)。当信号遇到阻抗突变(比如开路末端),一部分能量会反射回来叠加到原信号上。终端电阻把末端阻抗“拉”到与传输线一致,让信号能量被电阻吃掉而不是反弹。
第二,提供总线偏置。CAN总线在隐性状态(Recessive)时,CAN_H和CAN_L都是2.5V,差分电压0V。这时候总线处于高阻态,容易受外界干扰。终端电阻与收发器内部的差分电阻形成分压网络,帮助维持隐性电平的稳定性。实测发现,没有终端电阻的节点,隐性电平漂移能超过±0.3V。
第三,决定总线负载。CAN标准规定,一个网络最多挂110个节点(实际