3、CAN通信物理层设计:CAN收发器选型、终端电阻匹配、共模扼流圈与ESD防护、CAN总线长度与节点数限制
大家好,我是你们的BMS硬件设计讲师。今天咱们聊聊CAN通信物理层设计。说实话,这块内容看起来基础,但恰恰是很多项目翻车的重灾区。我见过太多因为收发器选型不对、终端电阻没焊好,导致整车通信时好时坏的案例。嗯,咱们一步步来拆解。
3.1 CAN收发器选型:TJA1040 vs SN65HVD230
收发器是CAN控制器的“嘴巴”和“耳朵”。它把控制器输出的逻辑电平,转换成差分信号发到总线上,再把总线上的差分信号转回来。选型时,我主要看三点:工作电压、速率、以及——耐不耐造。
TJA1040 是NXP家的经典款,5V供电。我个人习惯在商用车和工业BMS上用这颗。为什么?因为它支持待机模式,功耗低,而且总线引脚耐压高,能扛住±15kV的ESD(人体模型)。
SN65HVD230 是TI家的,3.3V供电。如果你主控是3.3V的MCU,比如STM32F4系列,用这颗可以省掉电平转换。但要注意,它的ESD能力稍弱,只有±8kV。我在一个乘用车项目里用过它,后来发现总线浪涌测试老是不过,最后加了一堆防护器件才搞定。
| 参数 | TJA1040 | SN65HVD230 |
|---|---|---|
| 供电电压 | 5V | 3.3V |
| 最高速率 | 1 Mbps | 1 Mbps |
| ESD (HBM) | ±15 kV | ±8 kV |
| 待机模式 | 支持 | 不支持 |
| 典型应用 | 商用车、工业 | 乘用车、低压系统 |
3.2 终端电阻匹配:为什么是120Ω?
CAN总线两端各需要一颗120Ω电阻。为什么是120Ω?说白了,是为了匹配双绞线的特性阻抗。双绞线的特性阻抗一般在120Ω左右,终端电阻匹配好了,信号反射就小。
我曾经在一个项目里,为了省两颗电阻,只在一端焊了120Ω。结果总线长度超过10米后,通信误码率飙升。后来用示波器一看,信号波形上全是振铃,反射波把正常信号都淹没了。
终端电阻的放置位置:
- 必须放在总线的最远端两端
- 不能放在中间节点上
- 如果节点数少、总线短(<1米),可以只用一端电阻,但我不建议这么干
3.3 共模扼流圈与ESD防护
共模扼流圈,说白了就是两个绕在同一磁芯上的线圈。它对差模信号(CAN_H和CAN_L的差分信号)阻抗很小,但对共模干扰(两根线上同时出现的噪声)阻抗很大。BMS里电机驱动、DC-DC产生的共模噪声,全靠它来滤。
选型参数:
- 共模阻抗:100Ω @ 100MHz 左右
- 额定电流:至少100mA
- 直流电阻:越小越好,别超过1Ω
ESD防护: 我习惯在CAN_H和CAN_L对地各加一颗TVS管,比如PESD1CAN。注意TVS管的结电容要小,否则会吃掉信号边沿。我一般选结电容<5pF的。
3.4 CAN总线长度与节点数限制
这两个参数是相互制约的。总线越长,能挂的节点就越少。为什么?因为信号在线上传输有延迟,而且总线电容会拉低信号边沿。
经验公式:
- 1 Mbps 速率下,总线长度不超过 40 米
- 250 kbps 速率下,总线长度可以到 250 米
- 每个节点会增加约 20-30 pF 的电容负载
节点数方面,标准CAN(ISO 11898)最多支持 110 个节点。但实际BMS中,我建议别超过 30 个。为什么?因为每个节点都有输入阻抗,节点多了,总线差分阻抗会下降,信号幅值也会降低。
| 速率 | 最大总线长度 | 建议最大节点数 |
|---|---|---|
| 1 Mbps | 40 m | 20-30 |
| 500 kbps | 100 m | 30-50 |
| 250 kbps | 250 m | 50-80 |
| 125 kbps | 500 m | 80-110 |
3.5 知识体系结构图
下面这张图,是我梳理的CAN物理层设计核心逻辑。你一看就明白,各个部分是怎么关联的。
你看,整个物理层设计,核心就是三件事:阻抗匹配、噪声抑制、防护冗余。收发器选型决定了基础性能,终端电阻保证了信号质量,共模扼流圈和TVS管负责抗干扰,而长度和节点数则是系统层面的约束。这几块缺一不可。
公众号:蓝海资料掘金营,微信deep3321