网络上搜到的CAN 错误笔记 CAN 笔记再再续 1、CAN 错误检测(Error Detection) CAN 网络具有严格的错误诊断功能,该功能已固化在硅片之中,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要CPU 的干涉除非错误累计该发送器退隐(Bus Off)
CAN 控制器可检测如下五种错误: √ 位错误(Bit Check Error) 发送器在发送比特流的同时也对发出的比特流采样回收,若送出的bit 与所期待的bit 不合,则会检测到一个 Bit Check Error; √ 位填充错误(Bit Stuff Error) 在需要执行位编码规则的位流序列中检测到第 6 个连续的极性相同的位序流时,则检测到一个 Bit Stuff Error; √ CRC 错误(CRC Error) 发送端送出的CRC 序列由发送器算出,接收器执行同样的CRC 算法,若计算结果与接收到的CRC 序列不符,一个 CRC Error 被检测到,由发送端送出; √ 帧格式错误( Check Error) 当一个固定形式的位场含非法位,则检测到一个 Check Error(接收端检测到帧结束最后一位为显性时帧错误忽略); √ 应答错误(Acknowledgment Error) ACK SLOT 采样为隐性,则检测到一个Acknowledgement Error; 2、CAN 错误界定(Error Confinement) CAN 控制器内置两个错误计数器:Receive Error Counter 及Tranmit Error Counter(错误计数器的计数规则后附)
当某个计数器的当前值达到128 时,CAN 控制器将进入“Error Passive Mode”,此时该节点仍然参与 CAN 通讯,检测到错误时只能发送“Error Pa