CAN通讯故障分析

一、现象

 CAN监控器上出现错误帧。

 

 二、分析过程

1、检查匹配电阻。两端均为120R电阻,全部断电后万用表测量为60R。(60R为最佳匹配电阻)

2、测试发现单独接发送端,将接收端断开,问题消失,锁定问题为接收端问题。

3、经过核查得知,发送端为500K波特率,接收端为250K波特率,导致问题出现。

三、总结

1、匹配电阻需两端120R。

2、总线上只要有一个节点波特率不一致,将导致总线数据传输异常。此次为监控端、发送端为500K,接收端为250K。

四、知识扩充

1、发生“位填充错误”,可能是CAN波形的上升沿/下降沿出现的位置不准确。
如果你用的是内部晶振HSI,很容易出现这种错误,改用外部晶振HSE即可。
内部晶振频率误差在2%以内,外部晶振频率误差要小得多。
一个8字节数据的扩展帧,由128个左右的位(包括ID、校验等)组成,靠后的位的上升沿/下降沿会因为频率误差累积导致其出现的位置不准确,可以用带存储功能的数字示波器分析出来。

2、如果是点对点通信,两个收发器的波特率和位时间配置如果不一样的话,很容易出现这样的问题。 楼主应该已经检查过通信两端的CAN控制器配置,不过还要检查一下两个MCU的主频是否相同、CAN总线的分频是否相同,CAN总线的H/L线有没有接反,已经终端电阻是否已经匹配。