Edit online

功能描述

3 Mar 2025
Read time: 1 minute(s)

CRC 校验算法配置

CRC 校验算法的配置流程如下:
  1. 通过 CRC_POLY 寄存器配置 CRC 多项式。

  2. 通过 CRC _INIT 寄存器配置 CRC 初始值。

  3. 通过 CRC _XOROUT 寄存器配置 CRC 结果异或值,输出结果前会与该值进行异或。

  4. 通过寄存器配置是否反转输入和输出数据,反转方式选择如下:
    • Bit In Word 每个 Word 里的 Bit 进行逆序处理。

注: 关于输入输出反转运算的详细说明,可查看 CRC 算法的反转运算说明


1. CRC 使用流程

CRC 算法的反转运算说明

CRC 算法涉及的反转运算的详细说明如下图所示:



2. Bit In Word 反转

CRC 硬件运算流程

CRC 硬件运算流程如下所示:
  1. 按照配置,选择对输入数据进行输入反转或不反转。
  2. 设置 CRC 多项式和多项式长度。
  3. 设置 CRC 初始值。初始值长度与多项式长度一致。
  4. 将输入数据的第 n 个 Byte 与当前值进行异或,从第一个 Byte 开始。
  5. 检查当前值最低 bit 是否为 1,并将该值向右移一位,末位丢弃,高位补零。
  6. 如果最低 bit 为 0,重复 5 步;否则,将当前值与多项式 进行异或。
  7. 重复 56 步,直到总共完成了 8 次移位。至此,输入数据的第一个 Byte 处理完毕。
  8. 重复 5 - 7 步,对输入数据的下一个 Byte 进行相同的处理,直至所有数据全部处理完毕。
  9. 所有数据处理完毕后,当前值按照配置进行输出反转或不反转。
  10. 将经过上面所有步骤处理后的当前值与结果异或值进行异或运算得出的即为最终的 CRC 校验码。

    以多项式为 0x4C11DB7 为例,图示如下: