CAN 错误帧和原理 分类: CAN 2012-05-27 21:22 153 人阅读 评论(0) 收藏 举报 1、CAN 错误检测(Error Detection) CAN 网络具有严格的错误诊断功能,该功能已固化在硅片之中,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要 CPU 的干涉除非错误累计该发送器退隐(Bu s Off)。CAN 控制器可检测如下五种错误: √ 位错误(Bit Check Error) 发送器在发送比特流的同时也对发出的比特流采样回收,若送出的 bit 与所期待的 bit 不合,则会检测到一个 Bit Check Error; √ 位填充错误(Bit Stu ff Error) 在需要执行位编码规则的位流序列中检测到第 6 个连续的极性相同的位序流时,则检测到一个 Bit Stu ff Error; √ CRC 错误(CRC Error) 发送端送出的 CRC 序列由发送器算出,接收器执行同样的 CRC 算法,若计算结果与接收到的 CRC 序列不符,一个 CRC Error 被检测到,由发送端送出; √ 帧格式错误(Frame Check Error) 当一个固定形式的位场含非法位,则检测到一个Frame Check Error(接收端检测到帧结束最后一位为显性时帧错误忽略); √ 应答错误(Acknow ledgment Error) ACK SLOT 采样为隐性,则检测到一个Acknow ledgement Error; 2、CAN 错误界定(Error Confinement) CAN 控制器内置两个错误计数器:Receive Error Counter 及 Tranmit Error Counter(错误计数器的计数规则后附)。当某个计数器的当前值达到128 时,CAN 控制器将进入“Error Passive Mode”,此时该节点仍然参与 CAN 通讯,检测到错误时只能发送“Error Passive Flag”,且错误帧发送完毕重启下一个发送之前有 8bits 位时的挂起状态;当Tranmit Error Counter 当前值为255 接着又一个错误被检测到时,CAN 控制器将进入“Bus Off Mode”,此时该节点与总线完全脱离,整个瘫痪;计数器当前值均小于 128 时,CAN 控制器被标识为“Error Active Mode”,CAN 节点可正常通讯并检测到错误时发送“Error Active Flag”。这三种状态之间关系为: 3、LPC2294 中的 CAN 控制器错误处理 LPC2294 内置的 CAN 控制模块完全符合 CAN Spec 2.0B,当 CAN 控制器被迫进入 BusOff 状态后:CANGSR 寄存器中的 BS 位置位;CANICR 中的 BEI 位置位,若CANIER 寄存器的 BEIE 使能,将引发...