4、通信电路故障:CAN总线物理层故障、SPI通信干扰、菊花链通信中断

通信电路,说白了就是BMS的神经系统。电池包里的电压、温度、电流数据,全靠它往外传。一旦通信出问题,整个系统就像断了线的风筝——你根本不知道电芯现在是什么状态。

我这些年处理过的BMS故障里,通信类问题占了将近四成。而且这类问题特别隐蔽,有时候示波器一挂上去波形看着还行,但系统就是报错。嗯,咱们今天就把CAN、SPI、菊花链这三个最常见的通信故障,一个一个说清楚。

4.1 CAN总线物理层故障

CAN总线在BMS里用得最多,尤其是整车级通信。它的物理层其实挺皮实的,但架不住现场环境恶劣。

4.1.1 典型故障现象

  • 通信时断时续,或者干脆连不上
  • CAN_H和CAN_L之间的差分电压异常
  • 总线错误计数器(TEC/REC)持续增长
  • 报错帧(Error Frame)频繁出现

4.1.2 常见原因分析

故障类型 典型原因 排查手段
终端电阻缺失/异常 120Ω电阻开路或短路 万用表测量CAN_H与CAN_L之间电阻
共模电压偏移 地线接触不良、电源纹波大 示波器测量CAN_H对GND的直流电平
线缆过长/阻抗不匹配 超过40米未加中继器 检查线缆长度,必要时加中继
收发器损坏 高压浪涌、短路 替换法,或测量收发器供电与输出

关键判断点:正常CAN总线在隐性状态时,CAN_H约2.5V,CAN_L约2.5V,差分电压0V;显性状态时,CAN_H约3.5V,CAN_L约1.5V,差分电压约2V。如果测出来偏差超过0.3V,基本可以判定物理层有问题。

4.1.3 排查步骤(我常用的方法)

  1. 先测电阻:断电状态下,用万用表测CAN_H和CAN_L之间的电阻。正常应该是60Ω(两个120Ω并联)。如果测到120Ω,说明有一端终端电阻没接上;如果测到0Ω,说明短路了。
  2. 再看波形:上电后,用示波器抓CAN_H和CAN_L的波形。注意看共模电压和差分幅度。我记得有一次,客户说通信老是丢包,我过去一看,CAN_H的波形上叠加了一个200mV的纹波,查了半天发现是DC-DC模块的噪声串进来了。
  3. 检查地线:CAN收发器的GND和控制器GND之间,压差不能超过0.5V。我建议用差分探头直接测。
  4. 替换收发器:如果以上都正常,那就换一个TJA1050或者SN65HVD230试试。说实话,收发器被浪涌打坏的案例我见过不下十次。

小技巧:在CAN_H和CAN_L之间并联一个100pF的电容,可以有效抑制高频干扰。但注意不要加太大,否则会影响信号上升沿。

4.2 SPI通信干扰

SPI在BMS内部用得很多,比如AFE芯片和MCU之间,或者隔离器两侧。SPI虽然速度快,但它抗干扰能力其实不如CAN。为什么?因为它是单端信号,不是差分。

4.2.1 干扰来源

  • 时钟信号辐射:SCK频率高,容易耦合到MISO/MOSI线上
  • 地弹噪声:多个SPI设备共用一条地线时,电流突变会产生地弹
  • 走线过长:超过10cm就建议加缓冲器
  • 电源噪声:SPI收发瞬间电流变化大,电源不稳会导致误码

4.2.2 我踩过的坑

有一次做BMS量产测试,发现大约5%的板子SPI通信偶尔会读错数据。排查了三天,最后发现是SPI的SCK走线跟一个DC-DC的电感靠得太近。SCK的上升沿被电感磁场干扰,产生了毛刺。后来把走线拉开,问题就消失了。

4.2.3 排查与整改建议

排查项 方法 整改措施
信号完整性 示波器抓SCK/MOSI的上升沿 串联22Ω电阻抑制过冲
时序匹配 检查SCK与MISO的相位关系 调整SPI模式(CPOL/CPHA)
地线回路 测量各设备之间的地电位差 使用星型接地或加粗地线
隔离干扰 用频谱仪测SPI线附近的噪声 加磁珠或RC滤波

注意:SPI通信距离超过20cm时,建议使用RS-422或差分SPI。我曾经在一个项目中硬着头皮用普通SPI拉了30cm,结果通信错误率高达10%,最后不得不改板。

4.3 菊花链通信中断

菊花链在BMS里主要用于AFE芯片之间的级联,比如LTC6811、MAX17823这些。它的好处是节省隔离器件,但坏处是——只要一个节点出问题,整条链就断了。

4.3.1 中断原因

  • 隔离变压器损坏:高压侧打火导致变压器击穿
  • 电容耦合失效:隔离电容老化或焊接不良
  • 信号幅度不足:链路过长,信号衰减到阈值以下
  • 芯片锁死:AFE芯片进入保护状态,不再转发数据

4.3.2 诊断方法

我个人习惯用「二分法」来定位菊花链的断点。具体做法是:

  1. 从主控端发送一个广播帧,看哪个节点有回应
  2. 如果没有回应,从中间节点断开,分别测试前半段和后半段
  3. 用示波器抓每个节点的输入和输出信号,看波形是否正常

我记得有一次,一个12串的BMS,第7节之后的电芯数据全读不到。我用示波器一测,发现第6节AFE的输出信号幅度只有正常值的一半。拆下来一看,隔离电容的焊盘有裂纹。重新焊接后恢复正常。

4.3.3 预防措施

措施 说明
增加冗余路径 设计双菊花链,一条断了自动切换
加强隔离 使用额定电压更高的隔离变压器
软件看门狗 定期发送心跳帧,检测链路状态
焊接检查 生产时增加X-ray检测隔离电容

避坑指南:我曾经在一个项目中,为了节省成本用了便宜的隔离电容,结果高温老化后电容值漂移了30%,导致信号耦合不足。从那以后,我坚持用C0G材质的电容做隔离,贵是贵点,但心里踏实。

4.4 小结

通信电路故障,说到底就是三个字:查、测、换。先查物理连接,再测信号波形,最后换可疑器件。别一上来就怀疑软件,很多时候问题就出在硬件上。

嗯,这一章的内容就到这里。下一章咱们聊聊BMS的电源电路故障,那个更刺激——动不动就冒烟。