20251114 - CAN总线中终端电阻的作用
在 CAN 总线(包括汽车、工业设备、STM32 的 bxCAN 等)中,120 欧姆终端电阻(Termination Resistor) 是必不可少的核心硬件之一。如果缺失或安装错误,CAN 通信会直接出问题(反射、波形畸变、丢包、仲裁错误等)。
✅ 120 欧终端电阻的作用
1. 防止信号反射(最关键作用)
CAN 是 差分信号 + 双绞线,信号沿着线传输时,如果线的末端没有匹配电阻,信号会被反射回来。
反射会导致:
- 波形震荡
- 电平漂移
- 判读错误(dominant/recessive 电平搞乱)
- CRC 错误
- 连接多台设备时通信不稳定甚至完全无法收发
120 欧电阻的作用就是让信号能在末端被“吸收”,不反射回去。
这叫 阻抗匹配(impedance matching)。
CAN 总线的特性阻抗 ≈ 120 欧,所以两端各放一个 120 欧电阻就能匹配。
2. 稳定差分电压,提高抗干扰能力
CAN 用差分信号:
CANH - CANL = 差分电压
dominant: ~2 V,表示低电平
recessive: ~0 V,表示高电平
120 欧终端电阻会形成差分回路,让电流有路径流动,从而保持稳定的差分电压。
如果没有终端电阻,波形会变成漂浮状态,抗干扰能力下降。
3. 限制总线上的共模电压,防止设备烧毁
终端电阻还提供对 CANH/CANL 的 DC 参考,使得总线共模电压不会乱飘,避免 CAN 收发器进入异常状态。
❗ 终端电阻使用规则(容易犯错)
规则 1:CAN 总线必须只有两端各 1 个 120 欧电阻
也就是:
120Ω —— [很多设备] —— 120Ω
无论你接 2 个设备还是 50 个设备,都只要两端放电阻。
规则 2:总线中间节点绝不能带终端电阻
中间节点应该开关断开终端电阻。
例如开发板常有 jumper:
CAN_TERM: ON = 启用120欧
如果你把 10 块开发板连一起并且全开,会全部通信失败。
🔧 实际工程举例(STM32 bxCAN)
如果用 STM32F407 + SN65HVD230 驱动 CAN,总线必须:
- 第一台设备 插 → 120 欧
- 最后一台设备 插 → 120 欧
- 中间所有设备 → 不要插电阻
否则报错:
- Stuff error
- CRC error
- Bit error
- Arbitration lost 等等
🧪 用万用表测量总线端电阻
断电后用万用表测 CANH-CANL:
- 约 60 欧 → 正常(两个 120 欧并联)
- 约 120 欧 → 只有一个 120 欧(另一端没插)
- 几欧到几十欧 → 终端太多或短路
- 无限大(开路) → 没有终端电阻
📌 一句话总结
**120 欧终端电阻的作用是进行阻抗匹配,吸收信号防止反射,从而保证 CAN 总线的稳定通信。总线上必须只在两端各放一个 120 欧电阻。
浙公网安备 33010602011771号