大家好、
我使用 VCU 模块的 CRC 校验功能来验证 SCI 通信、代码如下。
获得的 CRC 代码与使用 CRC 计算器和表查找方法获得的结果始终不同、使用 CRC 自定义计算器根据配置的 CRC 结构参数计算的结果也与程序获得的结果不同。
请告诉我如何配置它以获得 Modbus 格式的 CRC 代码、以及如何使用 CRC 计算器计算与程序结果相同的 CRC 代码?
CRC.seedValue = 0xFFFF;
crc.nMsgBytes = uiLen; //communication array length=uiLen (16位)
crc.parity = crc_parity;
crc.crcResult = 0;
crc.pMsgBuffer =(uint16 *) pucFrame; //pucFrame 是通信数组的地址
crc.pCrcTable =空;
CRC.init =(void (*)(void *)) crc_init16Bit;
CRC.run =(void (*)(void *)) crc_run16BitPoly1Reflected;
//步骤2:运行 VCU 16位 CRC 例程并保存结果
handleCRC =&CRC;
// CRC.init(handleCRC);
CRC.run(handleCRC);
uiCRC = crc.crcResult;
上面配置的多项式 I 为8005、CRC 的初始值为 FFFF、输入数据被反转。
读取例程后、我不确定 结果的 XOR 值是0000还是 FFFF。 我尝试了与计算机的各种组合,但没有获得与程序相同的结果。
VCU 执行 CRC 校验时、结果的 XOR 值(XOROUT)是多少? 如果 我知道该值、 我可能可以使用计算器来计算程序的结果。 是 FFFF 还是0000? 我已经尝试过这两种方法、但看起来并不正确。
此致、
凯瑟琳