1、Version 1.102006年5月l五种错误检测机制l错误标记及错误计数l错误帧及超载帧l错误等级划分l主动错误模式及被动错误模式l总线关闭模式l常见总线故障原因及处理CAN实现以下5种错误检测机制l其中基于信息流级别的错误检测有lCRC校验l帧格式检测l应答错误检测 l基于位(bit)级别错误检测有l位检测1.位填充lCRC校验错误15位的CRC通过发送端根据发送信息的内容计算产生接收端根据接收内容重新计算CRC并于发送端发送过来的CRC数值进行比较1.当两个数字不一致时候CRC错误标记产生l帧格式错误检测,当接收端在以下位置检测到非法的位时格式错误标记CRC认可位ACK认可位1.帧结束
2、位l应答错误检测每一个接收端都回在ACK场向总线回应一个显性位如果发送端在ACK场检测不到一个ACK应答将产生应答错误标记1.常见的应答错误多数由于总线上没有一个活跃的节点引起,即孤立节点的情况l位检测在发送过程中发送器通过接收端监视总线上每一位发送出去的电平是否与发送驱动的一致当发监视位电平与发送驱动的不一致将产生一个位错误标记1.在仲裁场和ACK场不执行填充位错误检测l位填充发送端根据发送内容每5个相同的位插入一个反向电平进行填充接收端自动消除填充位保重信息透明传输及恢复当接收检测到连续6个相同的位是将出发位填充错误标记l补充l位填充用于保证在NRZ位流中有足够的边沿用于从同步1.错误帧违
3、背位填充规则l错误标记当节点最少检测到一个错误时将马上终止总线上的传输并发送一个错误帧l错误帧的组成错误帧由两个场组成,错误标志及错误界定场,其中包含6位的显性位帧结构图(续)l错误帧结构(续)ErrorFlag6Superposition of Error Flags6-12 bitsErrorDelimiter8111111111000000000000l超载帧当控制器未能足够快地处理当前的信息时将发送超载帧中断其他发送控制器发送过程以减缓发送速度,加长发送帧间隔l组成由超载标志场及超载界定场组成l错误计数每监测到一个接收错误其错误计数加1每监测到一个发送错误其错误计数加8,发送错误更容易
4、被察觉到lSJA1000相关寄存器介绍error warning limit registerRX error counter register1.TX error counter registerl划分标准主动错误 Error Counter 127总线关闭 Error Counter=255l错误警告门限默认数值为96l主动错误模式(错误激活模式)在错误激活模式下控制器能执行的所有功能(正常模式)当发送或者接收到一个正确的信息帧时相应的错误计数器递减11.当所有的错误计数寄存器返回0时控制器返回正常模式l被动错误模式n当控制器错误计数超越错误警告限制时进入被动错误模式(消极错误模式)n仅能
5、发送错误认可标志,错误计数仍旧生效,但不会破坏总线l总线关闭模式,任意一个错误计数器超越255导致控制器进入总线关闭模式持久的总线故障将导致总线关闭1.在总线故障清除,控制器检测到总线上连续的11位隐性位发生128次后,总线关闭的节点将返回到错误激活状态,错误寄存器状态清零l硬件故障波特率不一致。终端电阻失配。l软件故障CAN错误中断类型。错误中断处理。lCAN错误中断类型总线错误中断 EBI。数据溢出中断 DOI。出错警告中断 EI。错误认可中断 EPI。1.仲裁丢失中断 ALI。l总线错误,检查是否总线已经关闭,为保证总线保持在工作模式,应该尝试重新进入总线工作模式。l数据溢出中断,对于应
6、用中应该通过提升软件处理效率及处理器性能解决接收速度引起的瓶颈;程序务必向CAN控制器发送清除溢出命令,否则将一直引起数据一处中断。l其他错误中断一般可以不加处理,不过在调试过程中应该打开所有中断以监视网络质量。l总线错误入口ninline void KSJA1000T:INT_BusError(void)nnif(UCHAR)m_rMode&RM_BIT)!=0)nnStartCAN();nnm_TraceCode|=INT_BUS_ERROR;nl数据溢出中断处理ninline void KSJA1000T:INT_DataOverrun(void)nnif(UCHAR)m_rMode&RM_BIT)!=0)nnStartCAN();nnif(UCHAR)m_rStatus&DOS_BIT)!=0)nn/数据溢出处理nm_rCommand=(UCHAR)CMD_CLR_DATA_OVER;nnm_TraceCode|=INT_DATA_OVERFLOW;nl五种错误检测机制l错误标记及错误计数l错误帧及超载帧l错误等级划分l主动错误模式及被动错误模式l总线关闭模式l常见总线故障原因及处理