错误管理
7 Jun 2024
Read time: 1 minute(s)
错误计数包含发送错误计数 TEC 和接收错误计数 REC。错误计数决定 CAN 控制器当前的错误状态,例包括主动错误、被动错误或离线。
除了错误状态外,控制器还提供错误报警阈值 ERRWT 功能。ERRWT 功能可在控制器进入被动错误状态前,提醒用户当前发生的严重总线错误。
控制器当前的错误状态通过 TEC、REC、ERR_STAT 、BUS _STAT 和 ERRWT 体现,数值和状态位的变化可以触发中断,从而提醒用户当前的错误状态变化,详情可参考 中断管理。
错误状态变化及中断关系表示了错误状态、计数数值、状态位以及相关中断之间的关系。
- 作为报警功能,错误报警阈值 ERRWT 可提示当前发生的总线错误,在控制器进入被动错误状态之前触发。在复位模式下,ERRWT 数值可在错误报警阈值寄存器
CAN_ERRWT 中进行配置。
- 当 TEC 和 REC 中任意数值大于等于 ERRWT 时,ERR_STAT 被置 1。
- 当 TEC 和 REC 数值都小于 ERRWT 时, ERR_STAT 被复位 0。
- 只要 ERR_STAT 或 BUS_STAT 位值发生变化,便会触发错误报警中断 ERRW_INT。
- 当 TEC 或 REC 数值大于 127 时,节点进入被动错误状态。
- 当 TEC 和 REC 数值都小于等于 127 时,节点重新变为主动错误状态。
节点在主动错误和被动错误状态之间切换时,都将触发被动错误中断 ERRP_INT。
- 当 TEC 数值大于 255 时,节点进入总线关闭离线状态。
此时,控制器将 REC 数值置为 0,TEC 数值置为 127,BUS_STAT 位置 1,产生错误报警中断 ERRW_INT,控制器进入复位模式。
- 为了返回主动错误状态,必须进行离线恢复。
- 退出复位模式,进入正常操作模式。
- 要求节点在总线上检测到 128 次 11 个连续隐性位。
每一次检测到 11 个连续隐性位时,TEC 数值都将减 1。
- 当离线恢复完成后(TEC 数值从 127 减小到 0),BUS_STAT 位复位为 0,从而触发错误报警中断 ERRW_INT。