电子产业一站式赋能平台

PCB联盟网

搜索
查看: 30|回复: 0
收起左侧

CAN总线BUS OFF状态下是否清空发送缓冲区?

[复制链接]

661

主题

661

帖子

2270

积分

三级会员

Rank: 3Rank: 3

积分
2270
发表于 昨天 08:02 | 显示全部楼层 |阅读模式

j42yzbx4i2e64045410954.gif

j42yzbx4i2e64045410954.gif

点击上方蓝色字体,关注我们


在CAN协议中,BUS OFF 是指节点因为严重的总线错误而被隔离出总线的状态。

节点进入BUS OFF状态后,将停止发送数据,并且不能参与总线上的通信,直到它重新恢复到正常状态。

CAN控制器会通过监测错误帧的发生情况,判断是否发生了致命的错误(如发送错误、接收错误等),并根据错误计数器来决定是否进入BUS OFF状态。

BUS OFF的主要原因通常包括:
  • 发送失败的次数超过预设的阈值。
  • 接收到错误帧,且错误计数器超过允许的最大值。


    ftqgufyu5q164045411054.png

    ftqgufyu5q164045411054.png



    0pe2ehrgnsy64045411154.png

    0pe2ehrgnsy64045411154.png


    CAN控制器通常有一个或多个发送缓冲区,用于存储待发送的消息。

    当有消息要发送时,它首先被放入缓冲区中,然后通过CAN控制器发送到总线。
  • 正常工作状态下,发送缓冲区中的消息会按顺序被送往总线。
  • 进入BUS OFF状态后,节点无法继续发送消息,CAN控制器的发送状态将被暂停。

    在CAN控制器进入BUS OFF状态后,BUS OFF 状态本身是由节点的错误计数器所触发的,而与缓冲区的内容无关。

    缓冲区中尚未发送的消息,理论上不会影响节点进入BUS OFF的决定。
    因此,清空缓冲区并不是必需的。

    保留缓冲区中的数据可以确保节点在恢复后能够继续处理和发送待发的消息,不会丢失任何待发送的通信。

    当然,在某些情况下,清空缓冲区可以避免不必要的重复发送或者避免之前因为错误而发送失败的消息继续占用缓冲区资源。

    这种情况下,清空缓冲区可以防止错误消息的重发,并且保证新消息的优先发送。

    sf0to1zowna64045411254.jpg

    sf0to1zowna64045411254.jpg

    quk2c2uuxy564045411354.gif

    quk2c2uuxy564045411354.gif

    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表