5. bus-off 和 BUSHEAVY 啥区别?

1. 区别如下:
  BUSHEAVY = Error‑Passive(被动错误状态,预警);
    节点还可以发报文、收报文,没有被踢出总线,只是警告,
    触发条件:发送错误计数器 TEC≥128 或者接收错误计数器 REC≥128。
    特点:出错只能发送6 个隐性位的被动错误标志,不能强行打断总线;发送报文之前必须插入额外延时,报文延迟变大;依然可以正常收发数据,不会直接返回发送失败,不会锁死 TX;
    代表:总线上持续发生错误(ACK 错误、位错误、波特率不匹配、干扰、终端电阻异常),再恶化一步就进入 Bus‑Off。
  Bus‑Off = 总线关闭(严重故障,断开发送)
    最高等级故障,硬件直接关闭发送通路,节点不能发送任何报文;
    触发条件:TEC ≥ 256(发送错误计数器溢出)
    特点:硬件直接禁掉 CAN 发送,调用 ithCANWrite 就算 FIFO 有空,报文也上不了总线;不再发送任何帧、不发送错误帧;接收行为看芯片实现;
    协议要求:需要检测总线上 128 次 11 个连续隐性位(总线长时间空闲),才会自动退出 Bus‑Off,清零 TEC/REC,回到主动错误状态;
    注意:很多驱动需要软件介入做 Bus‑Off 恢复,重新初始化 CAN 控制器。

2. ISO11898 标准 3 档状态:
  2.1 Error‑Active(主动错误,正常):TEC<128 && REC<128,正常收发,可发送主动错误帧
  2.2 Error‑Passive(BUSHEAVY 被动错误):TEC≥128 或 REC≥128,警告,还能收发,但能力受限
  2.3 Bus‑Off(总线关闭):TEC≥256,彻底禁止发送,节点隔离出总线

 

posted @ 2026-10-15 15:05  Vak  阅读(14)  评论(0)    收藏  举报
zhanghz production