CAN总线的信号错误.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CAN总线的信号错误 1. 帧结构 1.1 错误帧 错误帧用于在接收和发送消息时检测出错误通知错误的帧,它由错误标志和错误界定符构成。 图1 错误帧结构,引自[1] 上图1的错误标志包括主动错误标志(6个位的显性位)和被动错误标志(6个位的隐性位)两种。主动错误标志处于主动错误状态下的单元检测出错误时输出的错误标志。被动错误标志处于被动错误状态的单元检测出错误时输出的错误标志。错误界定符由8个位的隐性位构成。 注意上图0~6位的错误标志重叠,这段怎么确定呢?需先介绍2个概念:位填充和错误类型。 1)位填充(Bit Stuffing) 位填充是为防止突发错误而设定的功能。当同样的电平持续5位则添加一个位的反型数据位: 图2 位填充示意,引自[1] 注意:位填充作用范围为SOF-CRC段机间的数据。 2) 错误类型 错误类型有5种,如下图3所述。图4为CRC错误示意。 图3 错误类型描述,引自[1] 图4 CRC验证示意,引自[2] 针对上述位错误再做说明(引自[3]): 所谓“发出的电平与从总线上回读的电平不一致”,指的就是节点向总线发出隐性位,却从总线上回读到显性位或者节点向总线发出显性位,却从总线上回读到隐性位这两种情况。有三种例外情况不属于位错误: 在仲裁区,节点向总线发送隐性位却回读到显性位,不认为是位错误,这种情况表示该节点仲裁失败; 在ACK槽,节点向总线发送隐性位却回读到显性位,不认为是位错误,这种情况表示,该节点当前发送的这一帧报文至少被一个其它节点正确接收; 一个节点发送被动错误标志,该节点向总线发送连续六个隐性位(被动错误标志)却回读到显性位,不认为是位错误。因为被动错误标志是六个连续的隐性位,所以在总线上按照线与机制,有可能这六个连续隐性位被其它节点发送的显性电平覆盖。 3)错误帧发送 检查到错误后,什么时候发送错误帧呢?按照CAN协议的规定: 位错误、填充错误、格式错误、ACK错误。在错误产生的那一位的下一位开始发送错误帧。 CRC错误。紧随ACK界定符后的位发送错误帧。 通过具体例子(引自[3])来了解错误帧发送,如下图5所示。 图5 错误帧,引自[3] 1)发送节点Node_A发送一个显性位,但是却从总线上听到一个隐形位,于是Node_A节点就会检测到一个位错误; 2)Node_A检测到位错误之后,立即在下一位开始发送主动错误帧:6个连续显性位的主动错误标志+8个连续隐性位的错误界定符; 3)对应Node_A发出的主动错误标志,总线上电平为6个连续显性位; 4)接收节点Node_B和Node_C从总线上听到连续6个显性位,那么就会检测到一个填充错误,于是这两个节点都会发送主动错误帧; 5)对应Node_B和Node_C发出的主动错误标志,总线电平又有6个连续显性电平,对应Node_B和Node_C发出的错误界定符,总线电平有8个连续的隐性电平。 6)在间歇场之后,Node_A节点重新发送刚刚出错的报文。 在了解了错误帧的发送后,最后回到之前提到错误标志重叠部分是怎样形成的,看下例(引自[3]) 图6 错误界定符形成示意,引自[3] 在这个例子,我们知道位错误的错误标志与填充错误的错误标志重叠2位,剩下部分还有4位: 引自[3] 1.2 过载帧 为了后续介绍错误状态,这里再介绍下过载帧,它是用于接收单元通知其尚未完成接收准备的帧。过载帧由过载标志(6个位的显性位)和过载界定符(8个位的隐性位)构成。过载界定符的构成与错误界定符的构成相同。过载帧的构成如下图所示。 图7 过载帧定义,引自[1] 对于过载帧的帧结构我们可以这样理解:接收节点达到接收极限时,就会发出过载帧到总线上,显然,过载标志的6个连续显性位会屏蔽掉总线上其它节点的发送,也就是说这个时候的接收节点通过发送过载帧的方式来破坏其它节点的发送,这样在接收节点发送过载帧期间,其它节点就不能成功发送报文,于是就相当于把其它节点的发送推迟了,也就是说接收节点在其发送过载帧的这段时间得以“休息”。有3种情况会引起过载帧: 接收节点自身原因。接收节点由于某种原因需要延迟接收下一个数据帧或者遥控帧。 在帧间隔的间歇段的第一位和第二位检测到一个显性位(正常的间歇段都是隐性位)。帧间隔的间隔段本应是三个连续的隐性位,如果接收节点在间隔段检测到显性位,那么就意味着此时有报文发向接收节点,但这个时候是不应该有报文发来的,于是接收节点发送过载帧。 CAN节点在错误界定符或过载界定符的第八位(最后一位)听到一个显性位0,节点会发送一个过载帧,且错误计数器不会增加。接收节点在错误界定符和过载界定符的最后一位听到显性位,也意味着有报文发向接收节点,但这个时候是不应该有报文发来的,于是接收节点发送过载帧。 2. 错误状态 单元(节点)检测到错误帧时,随着错误的积累,单元会处于

文档评论(0)

play + 关注
实名认证
文档贡献者

分享有帮助的文档

1亿VIP精品文档

相关文档