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