我正在将数据从 python 代码发送到 stm32g0xx MCU。 我使用 stm32 硬件 CRC 计算单元和 https://pypi.org/project/crc/ 作为另一端。 不幸的是我无法理解双方的共同设置。
MCU端默认配置方式:
hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE;
hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE;
hcrc.Init.CRCLength = CRC_POLYLENGTH_32B;
hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;
hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE;
hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES;
在Python方面,我正在尝试使用相同的多项式0x04C11DB7(CRC32、BZIP2和POSIX)进行每个设置,但尚未成功。
您能给我推荐一个更好的方法,而不是尝试所有可能的组合吗?
谢谢
Python代码兼容STM32默认的神奇公式是:
from crc import Calculator, Configuration
config = Configuration(
width=32,
polynomial=0x04C11DB7,
init_value=0xffffffff,
final_xor_value=0,
reverse_input=False,
reverse_output=False,
)
感谢@Ilya证实了我当时已有的想法。