登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天道酬勤 玩物丧志

用勇气去改变可以改变的事情,用胸怀去包容无法改变的事情,用智慧去判断两者的区别

 
 
 

日志

 
 

CAN 错误类型和界定  

2012-03-06 11:35:47|  分类: Zigbee/C#定位 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1. 错误类型

有以下5种不同的错误类型(这5种错误不会相互排斥)

1)位错误(Bit Error

节点在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到个位错误。但是在仲裁场(Arbitration Field)的填充位流期间或应答间隙(ACK Slot)发送一“隐性”位的情况是例外的——此时,当监视到一“显性”位时,不会发出位错误。当发送器发送一个“认可错误”标志但检测到“显性”位时,也不视为位错误。

2)填充错误(Stuff Error

如果在使用位填充法进行编码的报文中,出现了6个连续相同的位电平时,将检测到一个填充错误。

3CRC错误(CRC Error

CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。

4)格式错误(Form Error

当一个固定形式的位场含有1个或多个非法位,则检测到一个格式错误。(注意:接收器的帧末尾最后一位期间的显性位不被当作错误)

5)应答错误(Acknowledgment Error

只要在应答间隙期间所监视的位不为“显性”,则发送器会检测到一个应答错误。

2. 错误信号的发出

检测到错误条件的节点通过发送错误标志指示错误。对于“错误激活”的节点,错误信息为“激活错误”标志;对于“错误认可”的节点,错误信息为“认可错误”标志。节点检测到无论是位错误、填充错误、形式错误,还是应答错误,这个节点会在下一位时发出错误标志信息。

如果检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(除非其他错误条件引起的错误标志已经开始)。

3. 故障界定

1CAN3种故障状态

① 错误激活(Error Active

“错误激活”的节点可以正常地参与总线通信,并在错误被检测到时发出“激活错误”标志。

② 错误认可 (Error Passive)

“错误认可”节点不允许发送“激活错误”标志。当“错误认可”节点参与总线通信时,在错误被检测到时只发出“认可错误”标志。而且,发送之后,“错误认可”节点将在启动下一个发送之前处于等待状态。

③ 总线关闭(Bus Off

  “总线关闭”的节点不允许对总线产生任何的影响(如:关闭输出驱动器)。

2CAN2种故障计数器

在每一总线节点使用两种计数器以便故障界定,包括:

① 发送错误计数;

② 接收错误计数。

3CAN的故障计数规则

这些故障计数器按以下规则改变(注意:在给定的报文发送期间,可能要用到的规则不止一个):

    当接收器检测到一个错误,接收错误计数器值就加1。在发送“认可错误”标志或过载标志期间,所检测到的错误为位错误时,接收错误计数器值不加1

 当错误标志发送以后,接收器检测到的第一个位为“显性”时,接收错误计数器值加8

 当发送器发送错误标志时,发送错误计数器值加8。在以下例外情况1和例外情况2发生时,发送错误计数器值不改变。

例外情况1:发送器为“错误认可”,并检测到应答错误(在应答错误中检测不到显性位),而且在发送“认可错误”标志时也检测不到“显性”位。

例外情况2:发送器由于在仲裁期间发生填充错误,此填充位应该为隐性位,但却检测出显性位,发送器送出错误标志。

 发送“激活错误”标志或过载标志时,如发送器检测到位错误,则发送错误计数器值加8

 发送“激活错误”标志或过载标志时,如果接收器检测到位错误,则接收错误计数器值加8

 在发送“激活错误”标志、“认可错误”标志或过载标志以后,任何节点最多允许7个连续的“显性”位。在以下3种情况,每一发送器将它们的发送错误计数值加8,同时每一接收器的接收错误计数值加8

l       当检测到第14个连续的“显性”位后;

l       在检测到第8个连续的“显性”位跟随在“认可错误”标志后;

l       在每一个附加的8个连续“显性”位序列后。

 报文成功传送后(得到ACK及直到末尾结束没有错误),发送错误计数器值减1,除非已经是0

 报文成功接收后(直到应答间隙接收没有错误,并成功地发送了ACK位),如果接收错误计数值介于1127之间,接收错误计数器值减1。如果接收错误计数器值是0,则它保持0;如果大于127,则它会设置一个介于119127之间的值。

 当发送错误计数器值等于或超过128时,或当接收错误计数器值等于或超过128时,节点为“错误认可”。

 当发送错误计数器值大于或等于256时,节点为“总线关闭”。

? 当发送错误计数器值和接收错误计数器值都小于或等于127时,“错误认可”节点重新变为“错误激活”节点。

? 在总线监视到128次出现11个连续“隐性”位之后,“总线关闭”的节点可以变成“错误激活”节点,它的两个错误计数值也被置为0

  评论这张
 
阅读(494)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018