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.

[参考译文] TMS320F28374S:如何修改 VCU 的 CRC 校验功能、以便计算出的 CRC 代码能够以 MODBUS 格式获得结果?

Guru**** 2052090 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1186325/tms320f28374s-how-to-modify-the-crc-check-function-of-vcu-so-that-the-calculated-crc-code-can-get-the-result-in-modbus-format

器件型号:TMS320F28374S

大家好、

我使用 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? 我已经尝试过这两种方法、但看起来并不正确。

此致、

凯瑟琳