This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用VCU模块的CRC校验功能对SCI通信进行校验,代码如下所示
得到的CRC码与使用CRC计算器和查表法得到的结果一直不同,按照配置的CRC结构体参数使用CRC自定义计算器算出来的结果也和程序跑出来的结果不同
请问我怎么配置才能得到modbus格式的CRC码,怎么才能使用CRC计算器计算出和程序结果一样的CRC码。
CRC.seedValue = 0xFFFF;
CRC.nMsgBytes = uiLen; //通信数组长度=uiLen (16bit)
CRC.parity = CRC_parity_even;
CRC.crcResult = 0;
CRC.pMsgBuffer = (UINT16 *)pucFrame; //pucFrame为通讯数组的地址
CRC.pCrcTable = NULL;
CRC.init = (void (*)(void *))CRC_init16Bit;
CRC.run = (void (*)(void *))CRC_run16BitPoly1Reflected;
// Step 2: Run the VCU 16-bit CRC routine and save the result
handleCRC = &CRC;
// CRC.init(handleCRC);
CRC.run(handleCRC);
uiCRC = CRC.crcResult;
我上面配置的多项式是8005,CRC初值FFFF,输入数据反转,
看了例程不知道结果异或值是0000还是FFFF,用计算机尝试了各种组合也没有得到程序跑出的结果。
VCU进行CRC校验的时候它的结果异或值(XOROUT)是多少,知道了这个值或许能用计算器计算出程序跑出的结果,它是FFFF或者0000吗,这两种我都试过但是都不对