0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAN总线错误类型及校验方法

AGk5_ZLG_zhiyua 来源:未知 作者:胡薇 2018-06-26 10:29 次阅读

你了解CAN总线吗?你知道总线中有哪些错误吗?你想了解总线中的错误是如何校验以及错误之间的关系吗?下文为大家揭开它神秘的面纱。

CAN总线是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,CAN总线应运而生,图1为CAN总线在汽车中的应用图。

图1 汽车中CAN总线的应用

CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。图2为CAN总线网路图,它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强而有力的技术支持。

图2 CAN总线网路图

CAN总线作为可靠性非常高的总线,出错概率非常小,这也是它被广泛应用的原因之一。在CAN总线的实际研发中,相较于CAN总线的正确帧,工程师更关注CAN总线的错误帧,下面将为大家展现CANscope波形常见的几类错误,图3为干扰导致的CAN通讯错误。

图3 错误波形图

图4为终端电阻并联过多,差分电平幅值太小导致接收节点识别失败的错误。

图4 错误波形图

图5为总线支线过长,电平下降沿台阶过高,导致位宽度失调的错误。

图5 错误波形图

图6为卡车打开/关闭大灯时,耦合到CAN总线上的干扰,导致的错误。

图6 错误波形图

图7为波特率异常(位宽度从2us突然变成1.6us),导致位错误。

图7 错误波形图

CAN总线的错误都有哪些形式,相互之间有什么样的关系,以及总线的检测与校验的原理是什么?

CAN总线的错误帧可分为位错误、位填充错误、CRC错误、格式错误、应答错误五大类,每类错误的具体解释如图8所示,此图简洁明了的展现了各种错误。

图8 CAN总线错误类型

CAN报文传输过程中出现通讯错误,会发送错误帧,以上所述的错误帧类型中根据其错误标识符不同,可分为“主动错误”和“被动错误”。

主动错误:检测错误主动报错,发出错误标识符(连续6个显性位)和错误界定符(连续8个隐形位);目的在于“主动”通知错误,即使别的节点没有发现此错误;

被动错误:检测错误,被动等待其他节点报错后发送错误标识符(连续6个隐形位)和错误标识符(连续8个隐形位);目的在于识别错误,回应主动错误。

总线关闭:节点不参与总线通讯。

为了避免某个设备因为自身原因(例如硬件损坏)导致无法正常收发数据而不断地破坏数据帧,从而影响其他正常节点通讯,CAN-bus规范中规定每个CAN控制器都有一个发送错误计数器和一个接收错误计数器。根据计数值不同CAN节点会处于不同的设备状态,状态之间的转换关系如图9所示。

图9 错误转换图

接收、发送错误计数器对应的变动条件及数值变动情况:

接收单元检测出错误时,检测到错误标识符或过载标志的“位错误”除外,此时REC+1、TEC不变;

接收单元在发送完错误标志后检测到第一位为显性电平,此时REC+8、TEC不变;

发送单元输出错误标志,此时REC不变、TEC+8;

发送单元发送主动错误标志或过载标志,检测出位错误,REC不变、TEC+8;

接收单元发送主动错误标志或过载标志,检测出位错误,REC+8、TEC不变;

各单元从主动错误标志、过载标志的开始检测出连续14个显性位,之后每检测出连续8个显性位,发送时REC+8、接收时TEC+8;

检测出被动错误标志后追加连续8个位的显性位,发送时REC+8、接收时TEC+8;

发送单元正常接收数据结束时(返回ACK且到帧结束位检测到错误),REC不变、TEC-1;

接收单元正常接收数据结束时(到CRC未检测出错误且正常返回ACK),REC<127时,REC-1,REC>127时,REC=127;TEC不变;

处于总线关闭的单元,检测到128次连续11个位的隐形位,错误计数器归零,REC、TEC=0;

CAN总线错误处理功能属于是链路层功能,此功能由CAN控制器决定,图10为CAN控制介绍图,其中详细介绍与错误处理有关的部分:位流处理器、位逻辑控制、错误管理逻辑。

位流处理器(BSP)是一个控制发送缓冲器、接收FIFO和CAN总线之间数据流的程序装置,它还执行总线上的错误检测、仲载、总线填充和错误处理。

位时序逻辑(BTL)监视串行的CAN总线和位时序,它在信息开头“弱势支配”的总线传输时,同步CAN总线位流(硬同步),接收报文时再次同步下一次传送(软同步)。

错误管理逻辑(EML)负责限制传输层模块的错误,它接收来自位流处理器的出错报告,然后把有关错误统计告诉位流处理器和接口管理逻辑(IML)。

图10 CAN控制器

CAN控制器的信号从CAN收发器的TXD发送到总线,同时被RXD收回进行检测,以此达到实时的接收错误检测、发送错误检测与ID仲裁功能。CAN总线是如何保证数据传输可靠性的,以下介绍CAN总线独有的检测机制:位流检测和CRC校验。

位流检测:即位检测,如图11所示节点在发送过程中,同时会监测自身发送的位数值,假如检测到位与自身送出的位数值不同,则会提示位错误;

图11 位检测

CRC校验:即循环冗余校验码是数据通讯领域中最常用的一种差错校验码,其信息字段和校验字段的长度可任意选定;CRC校验过程是通过循环计算冗余校验码的方式实现的,CAN控制器内部CRC的实现是基于多项式发生器和一个15位寄存器;其意义在于保证传输数据的正确性,未经CRC校验检测出的错误低于10负九次方。

CANscope总线分析仪是一款综合性的CAN总线开发与测试的专业工具,集海量存储示波器网络分析仪、误码率分析仪、协议分析仪及可靠性测试工具于一身,并把各种仪器有机的整合和关联,如图12所示CANscope的软件界面图;重新定义CAN总线的开发测试方法,可对CAN网络通讯正确性、可靠性、合理性进行多角度全方位的评估;帮助用户快速定位故障节点,解决CAN总线应用的各种问题,是CAN总线开发测试的终极工具。

图12 CANscope软件界面

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    1812

    浏览量

    129592
  • crc
    crc
    +关注

    关注

    0

    文章

    191

    浏览量

    29195

原文标题:CAN总线错误检测机制

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    浅谈CAN总线错误类型

    1.在CAN总线中存在5种错误类型,它们互相并不排斥,下面介绍一下它们的区别方式、产生的原因以及处理方法。l位
    发表于 07-09 13:54

    不能纠错的校验方法

    昨天做了一道试题下面不能纠错的校验方法是:A.奇偶校验B.校验和C.CRC校验D.(忘了这选项是什么了)请问答案是哪个???
    发表于 09-18 19:57

    CRC校验方法通过CAN总线通信来实现

    检测、格式错误检测、填充错误检测、应答错误检测和CRC错误检测。作为一种重要的错误检测手段,CRC错误
    发表于 09-25 15:41

    实测案例分析CAN总线局部错误及全局通知

    局部错误,全局通知是CAN总线错误类型中较为典型的一种,如何通过错误报文及波形快速定位
    发表于 11-08 10:48 3次下载
    实测案例分析<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>局部<b class='flag-5'>错误</b>及全局通知

    CAN总线局部错误及全局通知分析

    局部错误,全局通知是CAN总线错误类型中较为典型的一种,如何通过错误报文及波形快速定位
    的头像 发表于 02-16 07:57 7012次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>局部<b class='flag-5'>错误</b>及全局通知分析

    一文解析CAN总线远程帧和错误

    本文主要介绍了CAN总线远程帧和错误帧,首先我们先来了解了解一下通讯时使用的帧类型有哪些,他们的作用又是什么,具体的跟随小编一起来了解一下吧。
    的头像 发表于 05-07 11:30 2.6w次阅读
    一文解析<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>远程帧和<b class='flag-5'>错误</b>帧

    关于CAN总线错误的相关知识

    在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、
    的头像 发表于 05-27 17:56 2677次阅读

    CAN总线错误类型介绍

    在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、
    的头像 发表于 06-13 16:08 7384次阅读

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括
    的头像 发表于 06-09 09:46 1345次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>错误</b><b class='flag-5'>类型</b>

    虹科干货 | 带你全面了解“CAN总线错误”(三)——CAN节点状态与错误计数器

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括
    的头像 发表于 06-09 09:46 1533次阅读
    虹科干货 | 带你全面了解“<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>”(三)——<b class='flag-5'>CAN</b>节点状态与<b class='flag-5'>错误</b>计数器

    虹科干货 | 带你全面认识“CAN总线错误”(一)——CAN总线错误错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括
    的头像 发表于 05-27 10:39 3501次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>”(一)——<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>与<b class='flag-5'>错误</b>帧

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括
    的头像 发表于 06-02 09:41 865次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>错误</b><b class='flag-5'>类型</b>

    虹科干货 | 带你全面了解“CAN总线错误”(四)——在实践中生成和记录CAN错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括
    的头像 发表于 06-09 10:21 1146次阅读
    虹科干货 | 带你全面了解“<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>”(四)——在实践中生成和记录<b class='flag-5'>CAN</b><b class='flag-5'>错误</b>

    科普系列:CAN总线错误帧及排查方法简介

    作者|蒹葭小编|吃不饱CAN帧有多种格式,错误帧作为CAN帧中独特的一种,了解其作用,类型与产生原因,对于进行测试以及开发有很大的帮助,本文将对错误
    的头像 发表于 02-23 15:11 1947次阅读
    科普系列:<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>帧及排查<b class='flag-5'>方法</b>简介

    认识CAN总线错误 CAN总线错误分析与解决

    认识CAN 总线错误的第一步就是了解认识CAN 总线协议和它的具体功能,这样才能更容易地理解CAN
    发表于 08-14 15:18 3604次阅读
    认识<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b> <b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>错误</b>分析与解决