使用 Nucleo L053R8 CRC 计算单元计算 3 字节 CRC

calculate a 3-Bytes CRC using Nucleo L053R8 CRC calculation unit

我想使用 Nucleo L053R8 的 crc 计算单元计算一个 3bytes 的 CRC 值。 生成多项式如下: g(X)=x^24 + x^10 + x^9 + x^6 + x^4 + x^3 + x + 1

似乎使用这个CRC计算单元我只能生成一个32位长度的CRC,更小的值只是32位结果的LSBS。 我也知道 CRC32 的 LSB 不等于 CRC16。

知道我应该对 input/output 数据执行哪些操作以获得我想要的正确 CRC24 吗?

通过将生成多项式左移 8 位,将其乘以 x^8。如果你有一个初始值,也将它乘以 x^8,将它左移 8 位。使用具有移位多项式和初始值的 32 位 CRC 代码,然后将生成的 32 位 CRC 右移 8 位。

g(X)*x^8 = x^32 + x^18 + x^17+ x^14 + x^12 + x^11 + x^9 + x^8