CAN总线错误及故障处理

CAN总线错误及故障处理

ID:39307546

大小:329.10 KB

页数:23页

时间:2019-06-30

CAN总线错误及故障处理_第1页
CAN总线错误及故障处理_第2页
CAN总线错误及故障处理_第3页
CAN总线错误及故障处理_第4页
CAN总线错误及故障处理_第5页
资源描述:

《CAN总线错误及故障处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Version1.102006年5月总线错误及故障处理本节主要内容五种错误检测机制错误标记及错误计数错误帧及超载帧错误等级划分主动错误模式及被动错误模式总线关闭模式常见总线故障原因及处理五种错误检测机制CAN实现以下5种错误检测机制其中基于信息流级别的错误检测有CRC校验帧格式检测应答错误检测基于位(bit)级别错误检测有位检测位填充基于信息流级别的错误检测CRC校验错误15位的CRC通过发送端根据发送信息的内容计算产生接收端根据接收内容重新计算CRC并于发送端发送过来的CRC数值进行比较当两个数字不一致时候CRC错误标记产生基于信息帧级别

2、的错误检测帧格式错误检测,当接收端在以下位置检测到非法的位时格式错误标记CRC认可位ACK认可位帧结束位基于信息帧级别的错误检测应答错误检测每一个接收端都回在ACK场向总线回应一个显性位如果发送端在ACK场检测不到一个ACK应答将产生应答错误标记常见的应答错误多数由于总线上没有一个活跃的节点引起,即孤立节点的情况基于位(bit)级别错误检测位检测在发送过程中发送器通过接收端监视总线上每一位发送出去的电平是否与发送驱动的一致当发监视位电平与发送驱动的不一致将产生一个位错误标记在仲裁场和ACK场不执行填充位错误检测基于位(bit)级别错误检测位

3、填充发送端根据发送内容每5个相同的位插入一个反向电平进行填充接收端自动消除填充位保重信息透明传输及恢复当接收检测到连续6个相同的位是将出发位填充错误标记补充位填充用于保证在NRZ位流中有足够的边沿用于从同步错误帧违背位填充规则错误标记及错误计数错误标记当节点最少检测到一个错误时将马上终止总线上的传输并发送一个错误帧错误帧的组成错误帧由两个场组成,错误标志及错误界定场,其中包含6位的显性位帧结构图(续)错误帧的组成错误帧结构(续)ErrorFlag6SuperpositionofErrorFlags6-12bitsErrorDelimiter

4、8111111111000000000000超载帧超载帧当控制器未能足够快地处理当前的信息时将发送超载帧中断其他发送控制器发送过程以减缓发送速度,加长发送帧间隔组成由超载标志场及超载界定场组成错误标记及错误计数错误计数每监测到一个接收错误其错误计数加1每监测到一个发送错误其错误计数加8,发送错误更容易被察觉到SJA1000相关寄存器介绍errorwarninglimitregisterRXerrorcounterregisterTXerrorcounterregister错误等级划分划分标准主动错误ErrorCounter<127错误警告E

5、rrorCounter==ErrorLimit被动错误ErrorCounter>127总线关闭ErrorCounter==255错误警告门限默认数值为96主动错误模式主动错误模式(错误激活模式)在错误激活模式下控制器能执行的所有功能(正常模式)当发送或者接收到一个正确的信息帧时相应的错误计数器递减1当所有的错误计数寄存器返回0时控制器返回正常模式主动错误模式及被动错误模式被动错误模式当控制器错误计数超越错误警告限制时进入被动错误模式(消极错误模式)仅能发送错误认可标志,错误计数仍旧生效,但不会破坏总线总线关闭模式总线关闭模式,任意一个错误计

6、数器超越255导致控制器进入总线关闭模式持久的总线故障将导致总线关闭在总线故障清除,控制器检测到总线上连续的11位隐性位发生128次后,总线关闭的节点将返回到错误激活状态,错误寄存器状态清零常见总线故障原因及处理硬件故障波特率不一致。终端电阻失配。软件故障CAN错误中断类型。错误中断处理。CAN错误中断类型(SJA1000)CAN错误中断类型总线错误中断EBI。数据溢出中断DOI。出错警告中断EI。错误认可中断EPI。仲裁丢失中断ALI。错误中断处理(SJA1000)总线错误,检查是否总线已经关闭,为保证总线保持在工作模式,应该尝试重新进入

7、总线工作模式。数据溢出中断,对于应用中应该通过提升软件处理效率及处理器性能解决接收速度引起的瓶颈;程序务必向CAN控制器发送清除溢出命令,否则将一直引起数据一处中断。其他错误中断一般可以不加处理,不过在调试过程中应该打开所有中断以监视网络质量。错误中断处理(SJA1000)总线错误入口inlinevoidKSJA1000T::INT_BusError(void){if(((UCHAR)m_rMode&RM_BIT)!=0){StartCAN();}m_TraceCode

8、=INT_BUS_ERROR;}错误中断处理(SJA1000)数据溢出

9、中断处理inlinevoidKSJA1000T::INT_DataOverrun(void){if(((UCHAR)m_rMode&RM_BIT)!=0){StartCAN();

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。