CAN

对于can异常问题如何区分,区分can总线的短路,断路,正常工作。

发布于 2020-08-02 16:09:22

对于使用当前的CAN驱动部分,要如何判断当前的CAN总线驱动是否正常。也就是如何判断CAN的断路,短路,正常工作等。

查看更多

关注者
0
被浏览
141
2 个回答
cheney
cheney 2020-08-10

CAN控制器可以通过错误状态寄存器知识当前链路的状态:

  • 断路(Missing ACK)
  • 短路(BusOff)

结合我个人对于CAN驱动框架浅显的理解,CAN的错误处理需要做如下工作:

  1. 确保对应bsp包下drv_can.c里面有实现RT_CAN_CMD_GET_STATUS中进行错误状态寄存器的查询。
    image.png
  2. 调用设置can状态通知控制命令RT_CAN_CMD_SET_STATUS_IND,设置好对应状态回调处理,对应can.c/h的代码如下:
    image.png

    image.png

  3. can框架会定时查询CAN控制器的状态,并在回调函数中通知上层,你在回调函数中根据查询的状态信息进行CAN总线异常处理即可。
    image.png

    image.png

aozima
aozima 2020-08-03
拒绝白嫖,拒绝键盘侠!

CAN控制器这边只能看有没有回ACK,要PHY那边才能确定是短路还是开路。

撰写答案

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

发布
问题

分享
好友