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

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

3天内不再提示

CAN/CAN FD通信中的循环冗余校验(CRC)方法

电子设计 来源:电子设计 作者:电子设计 2020-12-26 02:32 次阅读

数据校验是为保证数据的完整性进行的一种验证操作。CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据。

在现场总线通信和控制的实际应用中,工业应用环境往往是极端的温度以及电磁噪声或是其他的恶劣环境,系统在这种条件下能否正常工作至关重要,试想一下倘若生产线设备发送的位置信息在传输过程出现了错误,轻则可能造成生产瘫痪,重则可能导致设备损坏甚至人员伤害。

在CAN总线通信过程中CAN控制器具备完整的错误检测能力,其中包含:位错误检测、格式错误检测、填充错误检测、应答错误检测和CRC错误检测。作为一种重要的错误检测手段,CRC错误检测是接收节点判断CAN帧信息的完整性并向总线确认应答的依据。

常见的校验方法

1、最简单的校验是数据发送后进行主动回读,结果一致才确认传输成功,很显然这种传输沟通的方式很直观并非常精准,但是由于回读的操作使得数据传输量翻倍,也就是传输对带宽要求高且效率低下。

2、奇偶校验,就是传输中使用额外1个位来记录传输数据二进制数中1的个数是奇数还是偶数,这个方案适合绝大多数硬件,传输开销适中,因此被广泛使用,例如常见的串口通信。

3、累加和校验,该算法原理是对数据逐一进行累加后得到一个数值,接收方在接收数据同时也进行数据的累加并最终与发送过来的累加和进行比较,该算法计算简单,无论在硬件或是软件实现都能保证较高的效率,常用于低速串行数据通信校验和芯片代码的完整性判断。

4、CRC检验,该算法是基于一个多项式除法取余的结果,其根据位数需求和多项式变化有数十种版本,凭借其硬件实现简单,位反转侦错能力较强及运算开销适中的优点被广泛应用与数字网络传输以及数据存储领域,如磁盘数据校验、USB、GSM/CDMA通信,在计算机应用中经常接触到的RAR和ZIP文件的压缩/解压数据完整性检查也采用了该算法。

5、MD5、SHA为代表的信息摘要校验,数据摘要算法也被称为哈希(Hash)算法、散列算法,摘要算法用于数据量比较大的场合。它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密,如软件注册授权文件的内容保护,还有经常遇到的互联网下载大文件(例如大小到GB级别的ISO镜像)通常会带有MD5、SHA1等信息方便用户检查传输数据的完整性。

CAN帧中的CRC检验

1、CRC域在CAN帧中的位置

图1

如图1橙色块方框所示,一个传统CAN帧结构中,CRC域放置在数据结束后应答检测之前,对于CAN FD也是相同的位置,该信息对于用户应用界面来说是不可见的,可以通过CANscope总线分析仪解码窗口或者带有CAN协议解码能力的示波器从总线模拟波形上得到对应的CRC数据展示,见图2。

图2

2、CRC的在CAN帧中的生成

在经典CAN中,使用15位CRC,在硬件可使用移位和异或运算完成CRC的计算,而CAN FD规范中对帧数据长度进行了扩展,对于数据长度小于等于16字节的CAN FD帧,采用17位CRC,对于数据长度大于16字节的CAN FD帧采用21位CRC。CAN总线中使用的若干版本CRC生成多项式g整理如表1所示。

表1

3、CRC是如何完成校验工作的

CAN帧基于CRC多项式的安全校验是发送器根据发送的比特计算校验值,并在CAN帧结构CRC字段中提供该结果。接收器使用相同的多项式来计算总线上所见位的校验值,将自我计算的校验值与接收的校准值进行比较,如果匹配,则认为帧被正确接收,接收节点在ACK时隙位中发送显性状态,从而覆盖发送器的隐性状态。在不匹配的情况下,接收节点在ACK定界符之后发送错误帧。

目前CAN FD的控制器CRC校验实现过程会相对复杂一点,在一个CAN总线网络中,帧起始被检测到后所有的节点开始使用三组多项式g15、g17和g21同步计算CRC序列,其中也包含发送节点,由于CRC的计算受CAN帧类型和DLC长度影响,直到CAN帧的控制域以及DLC确认后才选择采用对应的CRC生成序列,确定的CRC序列会在帧结构中CRC字段被采纳用于发送或者用于接收比较。

4、有关CRC的ISO CAN FD、non-ISO CAN FD兼容性问题

当前CAN FD协议有两个版本,为提高故障(错误)检测能力,新版本特别引入了一个3位填充位计数器和一个额外的奇偶校验位。此外,CRC计算方法也发生了变化。这些改进使最新的CAN FD协议与博世BOSCH)开发的原始CAN FD协议不兼容。负责ISO的工作组已完成其文件,并已将其提交给DIS(国际标准草案)在进行投票程序。

为了避免误解,CiA建议使用术语“ISO CAN FD”和“non-ISO CAN FD”。所有符合ISO 11898-2:2015的产品都应称为“ISO CAN FD”。执行博世(BOSCH)原始CAN FD协议的产品应命名为“non-ISO CAN FD”,在这个过度阶段的产品主要目的是用于前期评估和开发,将来所有产品都将符合ISO标准。

请注意,早前一些供应商提供的组件或者工具是针对non-ISO CAN FD协议的,包括目前在售的部分CAN FD产品,CiA建议仅使用ISO CAN FD产品进行设计和开发,不过你可继续使用non-ISO CAN FD做评估和前期开发,因为协议的改变对于用户界面是不可见,但注意的是不能同一个网络混用non-ISO CAN FD和ISO CAN FD接口设备,这样会造成CAN总线错误无法完成发送和接收,如果仅仅是发送或接收传统的CAN帧将不会受到任何影响,幸运的是部分设备供应商提供的组件或者工具允许用户选择支持ISO或者non-ISO模式,这样能很好地在过渡时期帮助你完成工作。

总结

传统CAN以及目前CAN FD采取的校验机制,保证传输过程中遭受破坏的帧数据几乎不会被接收以及应答成功,能有效防止物理层传输错误,让用户界面不需要额外关注帧传输数据的正确性。

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

    关注

    57

    文章

    2714

    浏览量

    463330
  • 通信
    +关注

    关注

    18

    文章

    5968

    浏览量

    135829
收藏 人收藏

    评论

    相关推荐

    CAN FD与传统CAN的区别是什么

    随着汽车电子、工业自动化的蓬勃发展,CAN总线上的设备数量、数据量都大大增加,给CAN总线带来了极大的挑战。为满足更高的带宽及数据吞吐量,CAN FD
    的头像 发表于 10-22 10:47 292次阅读
    <b class='flag-5'>CAN</b> <b class='flag-5'>FD</b>与传统<b class='flag-5'>CAN</b>的区别是什么

    CAN/CAN FD/CAN XL三大总线协议解读,是逐步替代关系吗?

    电子发烧友网报道(文/吴子鹏)在软件定义汽车逐渐成为主流的当下,数据传输的速度和效率成为打造智能汽车的瓶颈,在这种大背景下,传统CAN总线应对一些需求已经相当吃力,因此CAN FDCAN
    的头像 发表于 08-12 01:12 4220次阅读

    CAN FD盒基本功能包括哪些

    CAN FD盒基本功能有哪些? CAN FD盒作为CAN FD总线
    的头像 发表于 07-02 16:21 839次阅读

    SN65HVD26x支持CAN FD(灵活数据速率)和冗余的Turbo CAN收发器数据表

    电子发烧友网站提供《SN65HVD26x支持CAN FD(灵活数据速率)和冗余的Turbo CAN收发器数据表.pdf》资料免费下载
    发表于 07-01 11:52 1次下载
    SN65HVD26x支持<b class='flag-5'>CAN</b> <b class='flag-5'>FD</b>(灵活数据速率)和<b class='flag-5'>冗余</b>的Turbo <b class='flag-5'>CAN</b>收发器数据表

    详解TSMaster CAN 与 CANFD 的 CRC E2E 校验方法

    面对切换工具链的用户来说,在TSMaster上完成总线通讯中的CRC/E2E校验处理不是特别熟悉,该文章可以协助客户快速使用TSMaster完成CAN/CANFD总线通讯的CRC/E2
    的头像 发表于 05-25 08:21 1918次阅读
    详解TSMaster <b class='flag-5'>CAN</b> 与 CANFD 的 <b class='flag-5'>CRC</b> E2E <b class='flag-5'>校验方法</b>

    CRC循环冗余校验)应用举例

    CRC循环冗余校验)应用举例
    的头像 发表于 05-16 16:12 1029次阅读

    全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

    全新8.17.0版本的PCAN-Linux驱动程序正式发布,专为CANCAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN
    的头像 发表于 04-19 10:38 854次阅读

    浅析MCU通信、存储常用的简单校验算法

    UART有一个奇偶校验CAN通信CRC校验。Modbus、MAVlink、USB等通信协议也
    的头像 发表于 03-07 10:56 474次阅读
    浅析MCU<b class='flag-5'>通信</b>、存储常用的简单<b class='flag-5'>校验</b>算法

    不容忽视的小电阻:CANFD)终端电阻在汽车通信中的关键角色

    CAN总线终端电阻,顾名思义就是加在总线末端的电阻。此电阻虽小,但在CAN总线通信中却有十分重要的作用。终端电阻的作用CAN总线终端电阻的作用有两个:提高抗干扰能力,确保总线快速进入隐
    的头像 发表于 01-19 08:24 2504次阅读
    不容忽视的小电阻:<b class='flag-5'>CAN</b>(<b class='flag-5'>FD</b>)终端电阻在汽车<b class='flag-5'>通信中</b>的关键角色

    如何使用DSLogic分析CAN/CAN-FD 信号?

    一文档介绍本文将一步步介绍如何使用DSLogic逻辑分析仪采集并分析CAN/CAN-FD信号,因为CAN信号的测量和CAN-FD的大致一样,所以下文以
    的头像 发表于 01-08 14:54 1143次阅读
    如何使用DSLogic分析<b class='flag-5'>CAN</b>/<b class='flag-5'>CAN-FD</b> 信号?

    虹科技术 | 保障数据传输稳定性:BabyLIN产品的CRC算法实现

    CRC校验循环冗余校验)是数据通讯中最常采用的校验方式。C
    的头像 发表于 01-02 17:23 506次阅读
    虹科技术 | 保障数据传输稳定性:BabyLIN产品的<b class='flag-5'>CRC</b>算法实现

    虹科技术|保障数据传输稳定性:BabyLIN产品的CRC算法实现

    导读: CRC校验循环冗余校验)是数据通讯中最常采用的校验方式。
    的头像 发表于 01-02 10:45 462次阅读
    虹科技术|保障数据传输稳定性:BabyLIN产品的<b class='flag-5'>CRC</b>算法实现

    简述循环冗余crc校验方法的工作原理

    循环冗余码(CRC校验是一种常用的错误检测和纠正方法,广泛应用于通信和存储设备中,用于确定数据
    的头像 发表于 12-20 11:27 1166次阅读

    使用MM32F0160 FlexCAN-FD接口实现CAN FD通信

    。在CAN-FD模式下,可实现最高8 Mbps的FD模式通信速率,支持标准帧(11位标识符)和扩展帧(29位标识符),支持最大64字节有效负载,并且具有非常灵活的用于传输和接收的邮箱系统。
    的头像 发表于 12-14 16:44 2146次阅读
    使用MM32F0160 FlexCAN-<b class='flag-5'>FD</b>接口实现<b class='flag-5'>CAN</b> <b class='flag-5'>FD</b><b class='flag-5'>通信</b>

    CAN FD的降噪措施

    CAN FD的降噪措施
    的头像 发表于 12-07 10:48 597次阅读
    <b class='flag-5'>CAN</b> <b class='flag-5'>FD</b>的降噪措施