CAN

5 CAN驱动发送消息异常

发布于 2021-04-11 21:16:33

各位大佬,使用RT-thread提供的CAN进行通信时,波特率,引脚这些配置都正常,在正常通信一段时间后,会偶发出现CAN驱动写数据失败,也不能产生CAN中断,麻烦有经验的同学提供一下排除问题的建议,芯片用的是STM32H750的

查看更多

关注者
0
被浏览
162
5 个回答
小小李sunny
小小李sunny 2021-04-12

有没有监控一下日志,出现这样情况的时候是不是出现了什么错误?
或者还是单步调试,抓到出现异常的点

flashman2002
flashman2002 2021-04-12

你的CAN配置时启动自动重发的功能了吗?

james_s
james_s 2021-04-12

建议检查一下缓冲区配置

mii
mii 2021-04-12

写失败是不是定时发生?失败后是不是自动恢复?恢复后多久能重现?写失败的时候读取是不是正常?

gy8438242
gy8438242 2021-04-13
  1. 这个情况我遇到过。
  2. 这个是一个硬件引起的软件问题。当硬件故障,最简单就是CAN线松动了一下,就会引发这个。
  3. AutoRetransmission = ENABLE;后,硬件的一点问题,就会引起CAN的断线,也就是通信不能恢复。这个是CAN的谨慎机制决定的。
  4. 你的CAN1_SCE_IRQHandlery一定要打开,一定要处理。所有的错误都会引起CAN硬件的中断输出。在中断里,你可以查询故障,不能通信的故障是离线模式,其TEC>255。你可以用软件从离线模式中离开,但是能否离开依然取决于硬件。
  5. CAN的硬件有一个隐形模式,不通信,但是会发送一些状态信息。当不满足状态信息时,例如不满足128次11个隐形位,你的离线模式是无法恢复的,二次还是会跌入离线。这都是为了安全,毕竟汽车上用的。
  6. 总之,让硬件工程师解决,用好线,双绞线,等等。不是软件的事。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览