当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]CRC标准简介及计算过程

标准

  根据应用环境与习惯的不同,CRC又可分为以下几种标准:

  ①CRC-12码;

  ②CRC-16码;

  ③CRC-CCITT码;

  ④CRC-32码。

  CRC-12码通常用来传送6-bit字符串。

  CRC-16及CRC-CCITT码则是用来传送8-bit字符串,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。

  CRC-32码大都被采用在一种称为Point-to-Point的同步传输中。

  生成过程

  下面以最常用的CRC-16为例来说明其生成过程。

  CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0),

  之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

  计算过程

  1.设置CRC寄存器,并给其赋值FFFF(hex)。

  2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。

  3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。

  4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。

  5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。

  6.重复第2至第5步直到所有数据全部处理完成。

  7.最终CRC寄存器的内容即为CRC值。

  常用的CRC循环冗余校验标准多项式如下:

  CRC(12位) =X12+X11+X3+X2+X+1

  CRC(16位) = X16+X15+X2+1

  CRC(CCITT) = X16+X12 +X5+1

  CRC(32位) = X32+X26+X23+X16+X12+X11+X10+ X8+X7+X5+X4+X2+X+1

  以CRC(16位)多项式为例,其对应校验二进制位列为1 1000 0000 0000 0101。

  注意:这儿列出的标准校验多项式都含有(X+1)的多项式因子;各多项式的系数均为二进制数,所涉及的四则运算仍遵循对二取模的运算规则。

  (注:对二取模的四则运算指参与运算的两个二进制数各位之间凡涉及加减运算时均进行XOR异或运算,即:1 XOR 1=0,0 XOR 0=0,1 XOR 0=1,0 XOR 1=1,即相同为0,不同为1)

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在工业控制系统中,Modbus RTU协议的CRC校验如同通信网络的"免疫系统",某石化厂DCS系统曾因CRC计算错误导致0.3%的数据包丢失,引发连锁控制故障。本文将深入解析CRC-16/MODBUS算法原理,对比软件...

关键字: Modbus RTU CRC 算法

控制寄存器(Control Register)是中央处理器(CPU)中用于管理系统级操作的特殊寄存器,它为操作系统和硬件提供对处理器行为的精细控制。本文从计算机体系结构角度系统阐述控制寄存器的设计原理、功能分类、操作机制...

关键字: 寄存器 处理器

在嵌入式系统开发中,硬件抽象层(Hardware Abstraction Layer,HAL)起着至关重要的作用。它为上层软件提供了统一的硬件访问接口,隐藏了底层硬件的细节,使得软件具有更好的可移植性和可维护性。C++作...

关键字: 嵌入式C++ HAL 寄存器 封装

采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送...

关键字: 51单片机 MAX7219 寄存器

电源管理集成电路(PMIC)有益于简化最终应用并缩小其尺寸,也因此备受青睐。然而,当默认启动时序和输出电压与应用要求不符时,就需要定制上电设置。大多数情况下,电路没有可以存储这些设置的非易失性存储器(NVM)。对此,低功...

关键字: 电源管理 集成电路 寄存器

我从Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中创建了一个项目来让它工作,你可以在我的上一个项目帖子中阅读,我在QDSP-6061的5位数上显示滚动文本,上面写着“Hell...

关键字: 寄存器 AXI4 QDSP-6061 RTL模块

在单片机系统的设计中,复位电路是确保单片机正常工作的关键组成部分。它能够在系统启动时将单片机的内部寄存器和状态设置为初始值,保证单片机从一个确定的状态开始运行。与门芯片作为一种常见的数字逻辑芯片,有时会被应用于单片机复位...

关键字: 复位电路 寄存器 单片机

在数字通信领域,二进制通信协议扮演着至关重要的角色。它们不仅决定了数据如何在不同系统或设备间高效、准确地传输,还直接影响到通信的实时性、可靠性和资源利用率。本文将深入探讨二进制通信协议的序列化与解析过程,并通过实例代码展...

关键字: 二进制 通信协议 序列化

在数字电路设计中,计数器是一种基础的数字电路组件,用于记录并显示脉冲信号的数量或频率。4进制计数器,即模4计数器,是一种特殊的计数器,其计数范围从0到3,共4个状态。本文将深入探讨如何结合D触发器与寄存器来实现一个4进制...

关键字: D触发器 寄存器 计数器

上海2024年11月26日 /美通社/ -- 2024年11月22日,由上海璞咣教育科技有限公司主办的"宇宙新生时空艺术展"在长三角文博会上璀璨开幕,吸引了无数目光。本次展览以AI人工智能发展背景下的...

关键字: 人工智能 BSP 二进制 影像
关闭