You are on page 1of 23

传递价值 成就你我 http://www.embedcontrol.

com

总线错误及故障处理

Version 1.10
2006年5月

致远电子
传递价值 成就你我 http://www.embedcontrol.com

本节主要内容
z 五种错误检测机制
z 错误标记及错误计数
z 错误帧及超载帧
z 错误等级划分
z 主动错误模式及被动错误模式
z 总线关闭模式
z 常见总线故障原因及处理

致远电子
传递价值 成就你我 http://www.embedcontrol.com

五种错误检测机制
CAN实现以下5种错误检测机制
z 其中基于信息流级别的错误检测有
1. CRC校验
2. 帧格式检测
3. 应答错误检测

z 基于位(bit)级别错误检测有
1. 位检测
2. 位填充

致远电子
传递价值 成就你我 http://www.embedcontrol.com

基于信息流级别的错误检测
z CRC校验错误
1. 15位的CRC通过发送端根据发送信息的内容
计算产生
2. 接收端根据接收内容重新计算CRC并于发送
端发送过来的CRC数值进行比较
3. 当两个数字不一致时候CRC错误标记产生

致远电子
传递价值 成就你我 http://www.embedcontrol.com

基于信息帧级别的错误检测
z 帧格式错误检测,当接收端在以下位置检
测到非法的位时格式错误标记
1. CRC认可位

2. ACK认可位

3. 帧结束位

致远电子
传递价值 成就你我 http://www.embedcontrol.com

基于信息帧级别的错误检测
z 应答错误检测
1. 每一个接收端都回在ACK场向总线回应一个
显性位
2. 如果发送端在ACK场检测不到一个ACK应答
将产生应答错误标记
3. 常见的应答错误多数由于总线上没有一个活
跃的节点引起,即孤立节点的情况

致远电子
传递价值 成就你我 http://www.embedcontrol.com

基于位(bit)级别错误检测
z 位检测
1. 在发送过程中发送器通过接收端监视总线上
每一位发送出去的电平是否与发送驱动的一

2. 当发监视位电平与发送驱动的不一致将产生
一个位错误标记
3. 在仲裁场和ACK场不执行填充位错误检测

致远电子
传递价值 成就你我 http://www.embedcontrol.com

基于位(bit)级别错误检测
z 位填充
1. 发送端根据发送内容每5个相同的位插入一个反向电
平进行填充
2. 接收端自动消除填充位保重信息透明传输及恢复
3. 当接收检测到连续6个相同的位是将出发位填充错误
标记

z 补充
1. 位填充用于保证在NRZ位流中有足够的边沿用于从同

2. 错误帧违背位填充规则

致远电子
传递价值 成就你我 http://www.embedcontrol.com

错误标记及错误计数
z 错误标记
1. 当节点最少检测到一个错误时将马上终止总
线上的传输并发送一个错误帧

z 错误帧的组成
1. 错误帧由两个场组成,错误标志及错误界定
场,其中包含6位的显性位
2. 帧结构图(续)

致远电子
传递价值 成就你我 http://www.embedcontrol.com

错误帧的组成
z 错误帧结构(续)
6 8

Error Error
Flag Delimiter

0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1
6-12 bits

Superposition of Error
Flags

致远电子
传递价值 成就你我 http://www.embedcontrol.com

超载帧
z 超载帧
当控制器未能足够快地处理当前的信息时将发送
超载帧中断其他发送控制器发送过程以减缓发
送速度,加长发送帧间隔

z 组成
由超载标志场及
超载界定场组成

致远电子
传递价值 成就你我 http://www.embedcontrol.com

错误标记及错误计数
z 错误计数
1. 每监测到一个接收错误其错误计数加1
2. 每监测到一个发送错误其错误计数加8,发送
错误更容易被察觉到

z SJA1000相关寄存器介绍
1. error warning limit register
2. RX error counter register
3. TX error counter register

致远电子
传递价值 成就你我 http://www.embedcontrol.com

错误等级划分
z 划分标准
1. 主动错误 Error Counter < 127
2. 错误警告 Error Counter = = Error Limit
3. 被动错误 Error Counter > 127
4. 总线关闭 Error Counter = = 255

z 错误警告门限
默认数值为96

致远电子
传递价值 成就你我 http://www.embedcontrol.com

主动错误模式
z 主动错误模式(错误激活模式)
1. 在错误激活模式下控制器能执行的所有功能
(正常模式)
2. 当发送或者接收到一个正确的信息帧时相应
的错误计数器递减1
3. 当所有的错误计数寄存器返回0时控制器返回
正常模式

致远电子
传递价值 成就你我 http://www.embedcontrol.com

主动错误模式及被动错误模式
z 被动错误模式
„ 当控制器错误计数超越错误警告限制时进入被
动错误模式(消极错误模式)
„ 仅能发送错误认可标志,错误计数仍旧生效,
但不会破坏总线

致远电子
传递价值 成就你我 http://www.embedcontrol.com

总线关闭模式
z 总线关闭模式,任意一个错误计数器超越
255导致控制器进入总线关闭模式
1. 持久的总线故障将导致总线关闭
2. 在总线故障清除,控制器检测到总线上连续
的11位隐性位发生128次后,总线关闭的节点
将返回到错误激活状态,错误寄存器状态清

致远电子
传递价值 成就你我 http://www.embedcontrol.com

常见总线故障原因及处理
z 硬件故障
1. 波特率不一致。
2. 终端电阻失配。
z 软件故障
1. CAN错误中断类型。
2. 错误中断处理。

致远电子
传递价值 成就你我 http://www.embedcontrol.com

CAN错误中断类型(SJA1000)
z CAN错误中断类型
1. 总线错误中断 EBI。
2. 数据溢出中断 DOI。
3. 出错警告中断 EI。
4. 错误认可中断 EPI。
5. 仲裁丢失中断 ALI。

致远电子
传递价值 成就你我 http://www.embedcontrol.com

错误中断处理(SJA1000)
z 总线错误,检查是否总线已经关闭,为保证总线
保持在工作模式,应该尝试重新进入总线工作模
式。
z 数据溢出中断,对于应用中应该通过提升软件处
理效率及处理器性能解决接收速度引起的瓶颈;
程序务必向CAN控制器发送清除溢出命令,否则
将一直引起数据一处中断。
z 其他错误中断一般可以不加处理,不过在调试过
程中应该打开所有中断以监视网络质量。

致远电子
传递价值 成就你我 http://www.embedcontrol.com

错误中断处理(SJA1000)
z 总线错误入口
„ inline void KSJA1000T::INT_BusError(void)
„{
„ if(((UCHAR)m_rMode & RM_BIT) != 0)
„ {
„ StartCAN();
„ }
„ m_TraceCode |= INT_BUS_ERROR;
„}

致远电子
传递价值 成就你我 http://www.embedcontrol.com

错误中断处理(SJA1000)
z 数据溢出中断处理
„ inline void KSJA1000T::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;
„ }

致远电子
传递价值 成就你我 http://www.embedcontrol.com

内容回顾
z 五种错误检测机制
z 错误标记及错误计数
z 错误帧及超载帧
z 错误等级划分
z 主动错误模式及被动错误模式
z 总线关闭模式
z 常见总线故障原因及处理

致远电子
传递价值 成就你我 http://www.embedcontrol.com

谢谢!

致远电子

You might also like