CAN总线作为一种常用的通信协议,在汽车、工业自动化等领域得到广泛应用。然而,由于各种原因,CAN总线在使用过程中可能会出现各种故障,本文将继续讲解CAN总线应用过程中的常见问题和解决办法。
低波特率通信正常,高波特率无法通信
控制器配置低波特率通信正常而提高通信速率后无法通信的问题,主要是由于终端电阻未匹配导致的。CAN收发器芯片内部的CAN线CANH、CANL引脚是开漏结构,如下图1,总线上的寄生电容在显性状态时会被充电,而从显性状态切换到隐性状态的时候,总线上的电容要放电。如果CANH、CANL之间没有匹配电阻或者匹配的终端电阻太大,就会导致电容上的电荷放电速度过慢,从而在下降沿出现边沿下降过缓的现象,如图2,进而导致控制无法采到正确的电平,引发通信问题。
图1、CAN收发器芯片内部CANH、CANL结构
图2、显性状态切换到隐性状态边沿缓慢
解决方法
- 匹配适当的终端电阻;
- 推荐使用思瑞浦的TPT1462,支持主动隐性,在TXD拉高时显性状态可快速切换至隐性状态,保证通信正常。
总线电容过大导致的通讯异常
CAN收发器为了实现CAN的仲裁与错误处理,采用单向驱动结构,即CAN波形的上升沿有驱动,而下降沿是通过整条总线与终端电阻放电产生的,所以终端电阻的第一作用是放电。CAN节点及CAN线束的电容会影响整个网络的电容,电容越大,下降边沿越缓,导致接收节点发生位采样错误,从而产生错误帧。
解决方法
- 检查CAN总线上是否有外加电容、是否有保护器件(TVS等)的寄生电容过大等问题,适当去除,以降低电容,建议将单个CAN节点电容控制在 40pF~100pF范围内;
- 降低工作波特率,波特率降低可以延长位时间,减小电容的影响,但若电容过大,则不一定有效;
- 推荐使用支持CAN SIC的TPT1462,主动隐性功能可保证信号的有效脉宽。
CAN总线波形出现明显的共模震荡
共模振荡通常是由于传输线缆和PCB布局走线会耦合感性负载,而信号在感性负载下传输会出现信号共模抖动,可修改终端电阻中点的对地split电容调整信号质量,调整范围1nF~100nF,推荐值4.7nF。
另外,TPT1044、TPT1057和TPT1462都是思瑞浦基于自主设计对称性调节模块专利技术的车规级CAN收发器芯片,可有效调节总线共模,确保差分输出的对称性,即使不增加Split电容,也可以达到传统CAN收发器增加Split后的效果。
图3、调整split电容或更换TPT1044、TPT1057、TPT1462可有效改善信号质量
图4、无split电容时共模抖动
图5、有split电容下共模无抖动
图6、TPT1044不增加Split电容下共模无抖动
总线干扰过大问题
CAN总线虽然有强大的抗干扰和纠错重发机制,但目前CAN被大量应用于新能源汽车、轨道交通、医疗、煤矿、电机驱动等行业,而这些场合的电磁环境比较复杂,所以如何抗干扰是工程师最为关心的话题。
为此可采用提高CAN双绞程度、加单双屏蔽层、使用CAN隔离模块、弱电远离强电、优化布线等方式以提高CAN通信抗干扰能力。同样在采用不合理的组网方式时,也可能会导致信号反射严重引起信号振铃,在总线产生振铃时,其总线差模信号会反复在显性电平和隐性电平阈值振荡,导致RXD产生误翻转,从而使接收数据受到干扰。
思瑞浦推出基于其自主创新设计振铃抑制电路专利的车规级CAN SIC(信号改善功能,Signal Improvement Capability)TPT1462Q芯片,可有效抑制总线振铃,允许工程师在多节点、复杂拓扑情况下有效减少总线中的信号反射,降低振铃现象发生的概率,同时TPT1462Q具有国际领先的抗干扰能力,即使在极其恶劣的电磁环境中,仍能维持CAN正常通信,为汽车安全通讯奠定坚实的基础。
图7、常规CAN总线振铃干扰波形
图8、CAN SIC振铃抑制对比波形
总线错误状态和分析
按照CAN协议的规定,CAN总线上的节点始终处于以下三种状态之一:
- 主动错误状态;
- 被动错误状态;
- 总线关闭状态;
这些状态依靠发送错误计数和接收错误计数来管理,错误类型包括位错误、ACK错误、填充错误、CRC错误、格式错误,根据计数值决定进入何种状态。错误状态和计数值的关系如下图所示。
图9、单元的错误状态
节点处于主动错误状态下检测到非法帧格式会主动输出错误帧,错误帧由6个显性位和8个隐性位组成;利用该特性可以使用示波器捕捉错误帧波形,分析错误类型和原因。
例如CAN的仲裁域波特率为500kbps时,以CANH触发为例。选择触发方式为脉宽触发,触发脉宽选择>11μs(保证大于5个连续显性位),触发电平>2.5V,即可抓取错误帧波形。
图10、错误帧波形