tag 标签: CRC算法

相关博文
  • 热度 4
    2024-1-2 10:49
    411 次阅读|
    0 个评论
    导读: CRC 校验(循环冗余校验)是数据通讯中最常采用的校验方式。 CAN 协议中,总线通信节点也常采用 CRC 算法对各种总线传输的数据进行校验。 CRC8 校验在整车通信系统中应用比较广泛,鉴于此,本篇文章将以 CRC8 校验为例,介绍在 BabyLIN 产品中如何使用 CRC 校验算法。 CRC 校验原理 在 CAN 报文中,增加 Checksum 校验,能够用来检测和校验数据传输或保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。 CRC8 校验算法,就是对一帧报文进行校验和计算的算法。 其主要原理是:在发送节点,根据要传送的数据序列,以一定的规则产生一个校验用的校验码 (CRC 码 ) ,附在原始报文中,构成一个新的数据序列,然后发送出去。在接收节点,根据报文信息和 CRC 码之间遵循的规则进行检验,校验采用计算机的模二除法(即生成多项式)做异或运算,进行异或运算时除数和被除数最高位对齐,进行按位异或运算,若最终的数据能被除尽,则传输正确;否则,传输错误。 CRC 算法实现 在自定义 CRC 算法中, CRC 算法在线计算工具 中需要填写以下六项参数。(具体的 CRC 算法代码实现这里不做展示) 1. 宽度位数: CRC 校验结果的比特数。支持 8 位, 16 位, 32 位和 64 位。 2. 多项式 POLY : 生成公式的简写,以 16 进制表示。忽略最高位的 "1" 。 3. 初始值 INIT : 算法初始预置值,以 16 进制表示。 4. 输入数据反转 REFIN : 输入数据的每个字节是否按位反转。 5. 输出数据反转 REFOUT : 在计算后之后,结果输出之前,整个数据是否按位反转。 6. 结果异或值 XOROUT : 计算结果与此参数异或后得到最终的 CRC 值。 BabyLIN 应用与验证 在 BabyLIN 产品的 SDF 程序编写中,在 SessionConf 软件的 Signalfunctios 中定义了 CRC 算法的实现。具体的 CRC 算法实现所要设置的参数值 和 CRC 算法在线计算工具基本一致。如下图 CRC8 算法实现所示,实际中选择具体的报文帧 进行 CRC 校验即可,报文中进行 CRC 校验的数据序列 ,以及 CRC 校验值存放位置 均可根据实际情况设置。 Signalfunctios 中 CRC-8 Bit 实现具体需要设置的参数项的含义解释如图: 导入含有 CRC 算法的 SDF 程序,在 BabyLIN 产品中建立与 ECU 的通信,得到 CRC 算法实现结果,可以看出,得到的校验值与 CRC 算法在线计算工具中的计算结果一致。 结语 通过在 BabyLIN 产品中实现 CRC 算法,我们可以确保数据传输的准确性和可靠性。通过合理设置 CRC 算法的参数,以及正确应用在数据传输过程中,我们可以大大提高数据传输的稳定性,从而为各种通信系统的正常运行提供重要保障。 未来,我们还将在总线通信中继续探索和应用更先进的校验算法和技术,并在 BabyLIN 产品中进行实际应用。
相关资源
  • 所需E币: 1
    时间: 2020-8-26 12:41
    大小: 69.74KB
    上传者: symic
    CRC算法及C语言.PDF
  • 所需E币: 4
    时间: 2019-12-24 21:23
    大小: 68.73KB
    上传者: wsu_w_hotmail.com
    The13.56MHzread/writedevices(MCRF4XX)usea16-bitCyclicRedundancyCode(CRC)toensuretheintegrityofdata.Itspolynomialandinitialvaluesare:CRCPolynomial:X0+X5+X12+X16=1000-0100-0000-1000-(1)=8408(hex)InitialValue:$FFFFThispolynomialisalsoknownasCRCCCITT-16.Theinterrogatorappliesthesamepolynomialtotheincom-ingandtransmittingdata.MAN752CRCAlgorithmforMCRF45XRead/WriteDeviceAuthor:YoubokLee,PhDMicrochipTechnologyInc.INTRODUCTIONThe13.56MHzread/writedevices(MCRF4XX)usea16-bitCyclicRedundancyCode(CRC)toensuretheintegrityofdata.Itspolynomialandinitialvaluesare:CRCPolynomial:X0+X5+X12+X16=1000-0100-0000-1000-(1)=8408(hex)InitialValue:$FFFFThispolynomialisalsoknownasCRCCCITT-16.Theinterrogatorappliesthesamepolynomialtotheincom-ingandtransmittingdata.FIGURE1:CCITT-16CRCENCODERP(x)=x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15x16(x0)……
  • 所需E币: 3
    时间: 2019-6-7 09:59
    大小: 847.08KB
    上传者: royalark_912907664
    针对高速网络通信中高位宽并行数据的实时校验需求,提出了一种可单周期实现的、面向128位并行数据的循环冗余校验算法(CyclicRedundancyCheck,CRC)。该算法首先根据CRC串行编码原理得到8位并行数据的CRC校验矩阵,之后对矩阵进行迭代简化,得到32位并行数据的参数矩阵,此参数矩阵作为该CRC算法的核心实现了对数据进行预处理。最后对该算法进行了硬件实现,仿真及综合结果表明,该算法可在单周期内完成对128位并行数据的CRC编码和解码校验,时钟频率提高1.8倍,而硬件开销仅增加5.15%。