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 欧电阻。

posted @ 2025-11-15 14:28  zeku  阅读(397)  评论(0)    收藏  举报