mcp2515 CAN报文发送失败,导致总线关闭 CAN总线都会产生哪些错误?分别怎么解决?

数据发送过后
读取发送缓冲区0的控制寄存器 得出检测到发送错误位
也就是说下图中的bit4被置1,
在这里插入图片描述

2.2 错误的种类
在CAN总线通信中,一共有五种错误:
位错误
ACK错误
填充错误
CRC错误
格式错误

CAN节点发送数据不成功,首先分析是不是CAN控制器本身的问题,查看CPU中的CAN core的状态寄存器,分析是否有BUS OFF, 如果存在BUS OFF, 则进一步查看具体的错误信息,是主动的错误还是被动的错,发送错误计数有没有超限,最后一次发生的错误状态是什么,查看是位填充错误还是格式错误等其他错误,然后具体问题具体分析。这种错误一般是有硬件发送线路出现问题引起,例如光隔次边不导通,发送接口接触不良等,再则是一些奇葩的错误,例如本例,收发线直接接反了,坑爹啊!

原文链接:https://blog.csdn.net/jcjx0315/article/details/70137271

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

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

原文链接:https://blog.csdn.net/qq_27747359/article/details/107774041

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值