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