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

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

3天内不再提示

单片机通讯CRC算法的相关知识

科技观察员 来源:英锐恩 作者:英锐恩 2023-07-10 11:02 次阅读

许多单片机开发工程师经常使用各种通讯协议,而且设备之间的成功通信嵌入式系统正常运行的关键。嵌入式系统依赖并使用通讯协议,通讯协议是一组用于管理设备之间发送和接收的数据的传输、同步和错误检查的规则来起作用的。

由于该协议是可工作的嵌入式系统的重要组成部分,因此正确运行至关重要。由于通信错误不可避免,因此许多协议(包括USBCAN和A2B)都包含错误检查机制,例如循环冗余校验或CRC。

CRC用于标记损坏的数据并防止其通过总线发送。当今的协议通常支持更高的带宽和速度,因此CRC对于保持嵌入式系统中数据的简洁和可靠至关重要。

一、通信协议中的CRC

通信协议通常在数据包中使用两种CRC:一种用于保护数据包的标头,另一种用于保护数据包的数据部分。

尽管CRC的实现在协议之间有所不同,但目的仍然是相同的:为系统创建一种方法来检测错误并发起重传或忽略数据的请求。

CRC如何生成以及如何工作?所有这些都是基于算法计算的,该算法用于检测正在发送和接收的数据之间的不一致。本质上,CRC是从多个数据字节计算得出的值,以形成唯一的多项式密钥,该密钥被附加到传出消息中。在接收端执行相同的过程。然后,接收器将消息除以与发送器使用的相同多项式,如果此除的结果为零,则表示传输成功。但是,如果结果不等于零,则表明发生了错误。

二、USB协议中的CRC

所述USB协议,或通用串行总线,在传输过程中使用循环冗余检查,以保护所有非PID字段中从错误标记和数据分组。在USB 2.0中,令牌和帧开始(SOF)数据包包括5位CRC(CRC5),而数据数据包包括更长的16位CRC(CRC16),以为数据有效载荷提供足够的支持,直至1024个字节。

在USB 3.1数据包中,可以在标头数据包中找到CRC,该标头数据包由标头数据包框架,数据包标头和链接控制字组成。标头受16位CRC(CRC16)保护,链接控制字受5位CRC(CRC5)保护。数据有效载荷数据包包括一个32位CRC(CRC32),以容纳较大的数据有效载荷。此外,用于控制各种特定于链路的功能的链路命令包还包括5位CRC(CRC5)。

三、CAN协议中的CRC

的CAN协议,或控制器区域网络,被称为其健壮和可靠的通信,因为它包含多个错误检查机制,包括位错误检测,格式错误检测,填充错误检测,响应错误检测和CRC检错。CRC字段包含在数据帧和远程帧中。

CRC错误检测通过在数据帧中包含15位CRC来验证消息是否通过总线正确发送而起作用。就像前面讨论的CRC如何工作一样,发送节点计算15位CRC值,然后在CRC字段中发送该值。所有节点将接收此消息,相互计算CRC,然后比较这些值以确定它们是否确实相同。否则,接收节点将通过总线发送错误帧。此外,CAN协议还包括一个1位隐性CRC分隔符,有助于防止格式错误,并确保这些位在总线上正确广播并在接收端正确接收。

四、A2B协议中的CRC

的A2B协议,或汽车音频总线,是另一种协议,该协议使用错误检查机制,以验证正确的通信。其中一种措施是在特定帧内使用CRC,以帮助检测总线上的错误。

同步控制帧(SCF)充当节点的控制帧或控制头,而同步响应帧(SRF)充当节点的响应帧或响应头。整个A2B帧结构称为超帧,它以SCF开始,包括可选的数据时隙,以SRF结尾。这些帧都包含循环冗余码(CRC),以帮助检测上游和下游数据错误。

对于下游数据错误检测,在SCF中使用16位CRC,它确定在接收方传输期间发生的任何SCF数据错误。SCF包括一个指示超帧开始的前同步码,并提供从机用于时钟和帧同步的位模式。如果从机未检测到帧同步,则从机将指示CRC错误。

对于上游数据错误检测,在SRF中还使用16位CRC来确定在接收方传输期间发生的任何SRF数据错误。中断请求字段在SCF中具有一个附加的CRC,以避免错误的中断被触发。SRF还具有一个前导以指示响应帧的开始,并提供上游节点用于时钟和帧同步的位模式。如果上游节点未检测到帧同步,则将指示CRC错误。

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

    关注

    6037

    文章

    44558

    浏览量

    635227
  • crc
    crc
    +关注

    关注

    0

    文章

    199

    浏览量

    29465
  • 通讯协议
    +关注

    关注

    10

    文章

    274

    浏览量

    20354
收藏 人收藏

    评论

    相关推荐

    CRC算法单片机通信系统中的实现

    主要论述了在单片机通信系统中CRC算法的设计和在单片机硬件下的编程实现。为了实现单片机系统之间高效无差错的数据传输,必须对数据进行检错,当传
    发表于 03-03 14:02

    单片机在硬件上是怎样去实现CRC算法计算引擎的

    单片机在硬件上是怎样去实现CRC算法计算引擎的?
    发表于 02-23 06:10

    单片机讲座--单片机基础知识

    单片机讲座--单片机基础知识
    发表于 07-16 11:12 108次下载

    简单实用的单片机CRC快速算法

    摘要:提供两个实用的、能够在单片机上通过软件来实现的CRC快速算法,其中一个适用于51系列等单片机,另一个适用于PIC单片机,这两种
    发表于 09-09 17:52 33次下载

    C51实现单片机CRC快速算法

    摘要:本文介绍了CRC的基本原理和计算方法,给出了利用C51实现单片机CRC的快速算法关键字:CRC;C51;
    发表于 09-10 11:14 51次下载

    CRC差错检验法在PC与8031单片机串行通讯中的应用

    CRC差错检验法在PC与8031单片机串行通讯中的应用摘  要  通过对不同校验方法的分析,介绍了一种适合PC
    发表于 03-14 16:44 751次阅读
    <b class='flag-5'>CRC</b>差错检验法在PC<b class='flag-5'>机</b>与8031<b class='flag-5'>单片机</b>串行<b class='flag-5'>通讯</b>中的应用

    STC单片机相关知识

    本内容提供了 STC单片机 的各个方面的相关知识,对STC单片机学习者有所帮助
    发表于 08-11 17:22 732次下载
    STC<b class='flag-5'>单片机</b><b class='flag-5'>相关</b><b class='flag-5'>知识</b>

    protel,pcb,单片机,stm32相关知识

    protel相关知识,pcb相关知识单片机相关知识
    发表于 03-10 17:18 0次下载

    简单实用的单片机CRC快速算法

    本文提供两个实用的、能够在单片机上通过软件来实现CRC快速算法
    发表于 03-22 16:40 3次下载

    51单片机C语言各种算法大全

    电子专业单片机相关知识学习教材资料——51单片机C语言各种算法大全
    发表于 07-25 09:49 0次下载

    51单片机最基础的知识

    关于51单片机最基础的知识及如何认识单片机的组成与相关功能的介绍,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-11 11:55 11次下载

    单片机原理及应用教程之单片机基础知识概述

    本文档的主要内容详细介绍的是单片机原理及应用教程之单片机基础知识概述包括了:1. 单片机概述,2. 单片机学习的预备
    发表于 04-16 08:00 23次下载
    <b class='flag-5'>单片机</b>原理及应用教程之<b class='flag-5'>单片机</b>基础<b class='flag-5'>知识</b>概述

    如何使用51单片机实现CRC校验算法

    介绍了CRC(循环冗余码校验)原理及集成混合信号片上系统单片机C8051F的新特性,推导获得以字节为单位的数据序列CRC码递推算法,利用C8051F
    发表于 12-17 16:09 17次下载
    如何使用51<b class='flag-5'>单片机</b>实现<b class='flag-5'>CRC</b>校验<b class='flag-5'>算法</b>

    [单片机] crc32

    [单片机] crc32
    发表于 11-23 17:36 5次下载
    [<b class='flag-5'>单片机</b>] <b class='flag-5'>crc</b>32

    单片机CRC原理及应用

    单片机CRC原理及应用
    的头像 发表于 09-27 16:02 1925次阅读
    <b class='flag-5'>单片机</b>中<b class='flag-5'>CRC</b>原理及应用