您的位置:首页 > 理财 >

CAN总线错误分析与解决_当前速递

2023-06-07 18:54:12 来源:面包芯语

评论

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

这时接收节点就会检测信号是否正确,如果正确,就将ACK置位为显性0,注意这时,发送节点因为还在发送而接收节点又将ACK信息置位为1,所以它就会在回读时检测到ACK为0,判断接收成功。


(相关资料图)

注意:这其中有个接收节点用显性覆盖隐性---覆盖ACK位的过程,覆盖+回读。

ACK前后各加一个Del,就是为了考虑到时间误差,让接收节点有足够的时间对ACK确认。这个过程说明,CAN发送是个双向互动的过程,发送节点一边发送,一边对节点进行回收确认数据正确,而接收节点也时刻接收,并在正确的时间将ACK设置为1。

如下图CAN总线产生错误后的状态转换机制:

如果出现了BUS OFF,总线上的节点需要做一些动作,例如重启CAN控制器或是重新上电,但是这些都只是一些补救措施,最根本的还是需要找到引起BUS OFF的根源。

CAN总线分析的一些工具和文档:

CAN分析仪或者逻辑分析仪

数字示波器

相关的软件debug工具

CAN控制器芯片数据手册

硬件电路图

CAN协议文档

下面具体来看看怎么不成功。于是调试中断查看 CAN_STATUS 即 CAN状态寄存器显示 0xE5, 查看CPU数据手册:

CAN总线状态直接进入了BUS OFF状态,这意味着错误计数已经超限,查看CPU收发寄存器的收发错误计数显示发送错误计数TEC达到248, 接收错误计数为0。这很明显,数据压根没有发送到总线上。

再进一步查看寄存器值LEC即LAST ERROR CODE 最后一个错误代码, 显示是BIT0 ERROR。

这意味着CAN core往总线上发送的数据第一位就已经出错了,压根没有将数据经过CAN收发器传送到CAN总线上。

由于是新的CPU的开发所以在怀疑硬件的问题的同时也在排查软件问题,但是经过一阵排查,没有发现软件上的问题。回头再分析硬件,又经过一阵排查溯源,发现 CPU 的 CAN 收发线与 CAN 收发器的收发线接反了。

来源:网络

会员权益:(点击可进入)谈思实验室VIP会员

[责任编辑:]

相关阅读

参与评论

关于我们| 广告服务| 隐私政策| 服务条款| 备案号:琼ICP备2022009675号-29 联系QQ:5 0 8 0 6 3 3 5 9

Copyright @ 2008-2015 www.ccnf.cn All Rights Reserved 中国经营网 版权所有