这个crc是如何正确计算的?

How is this crc calculated correctly?

我正在寻求帮助。我通过 SPI (MAX22190) 使用的芯片指定:

CRC 多项式:x5 + x4 + x2 + x0

使用前 19 个数据位填充 5 位初始字 00111 来计算 CRC。

然后将 5 位 CRC 结果附加到原始数据位以创建 24 位 SPI 数据帧。

我用多种工具计算得到的CRC结果为:0x18

但是,芯片在这上面显示了CRC错误。它期望:0x0F

谁能告诉我我的计算哪里出错了?

我的输入数据(19个数据位)是:

19 位数据:

0x04 0x00 0x00

0000 0100 0000 0000 000

24位,用初始值填充:

0x38 0x20 0x00

0011 1000 0010 0000 0000 0000

=> 我发送的数据:0x38 0x20 0x18

=>芯片需要的数据:0x38 0x20 0x0F

CRC算法详解here。 我认为您的错误来自 00111 填充,必须在右侧而不是左侧填充。