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.

[参考译文] TMS320F280025C-Q1:如何设置 CRC 设置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1531504/tms320f280025c-q1-how-to-set-the-crc-setting

器件型号:TMS320F280025C-Q1
主题:C2000WARE 中讨论的其他器件

工具/软件:

您好的团队、

由于功能安全要求、客户将使用 Web CRC 工具来计算 CRC 数据、然后将其与从 DSP CRC  计算元素获得的结果进行比较。

他们在 syscfg 中配置它、它有很多设置、我们尝试很多不同的配置、很多次。

但结果始终与 Web CRC 工具提供的结果不同: CRC在线计算

您是否可以帮助根据此 Web CRC 工具在 syscfg 中配置 CRC 设置?

BRS

Shuqing

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

    尊敬的 Shuqing:

     

    下面是一个 e2e、我相信会有所帮助

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1275572/tms320f280039c-vcrc-configuration-to-match-standard-crc-32-algorithm/4834892#4834892

     

    具体来说:

    1. 我注意到输入和输出都是反向的(两者都在 e2e 中包含的中文 pic 中进行检查)。 因此、要使用的多项式不是 crc_run32BitPoly1、而是 crc_run32BitPoly1 Reflected、另外还有 crc_run32BitPoly1
    2. syscfg 中的种子值需要设置为 0xFFFFFFFF、而不是 0x0(基于 e2e 中包含的中文 pic 中的设置)
    3. 由于输出是 XORd(基于您在 e2e 中包含的中文 pic 中的设置)、您需要像这样对输出 CRC 进行后处理、即位反转

    myVRCR0_Handle->run (myVRCR0_Handle);

    crcResult = myVRCR0_handle -> crcResult;

    crcResult =__flip32 (crcResult);

          crcResult =~crcResult;

    1. 最后、这特定于库进行计算的方式。 它首先处理 LSB、然后处理 MSB、因此在测试数据中 (0x3700、0x1234、..) 如果您希望 CRC 计算的处理顺序为 0x37、然后是 0x00、0x12、然后是 0x34、…μ s …应提供为(0x0037、0x3412、0 Ω)

     

    谢谢、

    Sira

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

    尊敬的 Sira:

    当我 更改为 此项时、它仍然不起作用:

    还有一个问题:

    1.

    最后、这特定于库进行计算的方式。 它首先处理 LSB、然后处理 MSB、因此在测试数据中 (0x3700、0x1234、..) 如果您希望 CRC 计算的处理顺序为 0x37、然后是 0x00、0x12、然后是 0x34、…μ s 它们应以(0x0037、0x3412,…)
    提供

    我认为可以通过更改以下设置来解决此问题? 不需要更改输入数据?

    2.  

    我注意到输入和输出都是反向的(两者都在 e2e 中包含的中文 pic 中检查)。 因此、要使用的多项式不是 crc_run32BitPoly1、而是 crc_run32BitPoly1 Reflected、另外

    可以通过将此设置为“Set"来“来解决此问题。

    3.  crc_run32BitPoly1Reflected 与 syscfg 中的函数之间有何区别?

    BRS

    Shuqing

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

    Shuqing

    您更新的 testInput 仍然错误。 请记住、C28 不支持 8 位字节。 因此、更新后的输入缓冲区会将数据处理为 0x00 0x00 0x00 0x37 0x00 0x34 0x00...、因此不会工作。

    更改奇偶校验设置不起作用、因为这只会告诉库是从 LSB 还是从第一个字的 MSB 开始计算。 之后、它将始终使用 LSB - MSB。  

    因此、对于偶校验、它将为 (LSB-MSB)-(LSB-MSB)-(LSB-MSB);对于奇校验、它将为 (MSB)-(LSB-MSB)-(LSB-MSB)-(LSB-MSB)-。

    我不确定硬件 CRC 函数 — 您可以尝试查看它们生成的代码。  但我们建议使用  crc_run32BitPoly1Reflected 以及我发送的后处理代码。

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

    我需要这样定义吗? 不是 unit16、而是 uint8

    除此之外、

    flip32() 找不到、我将库添加到项目中

    BRS

    Shuqing

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

    Shuqing

    否、您应使用 uint16_t 并翻转字节。

    而不是 0x3700、0x1234、  

    应用

    0x0037、0x3412、...

    它是__flip32、而不是_flip32

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

    尊敬的 Sira:

    感谢你的帮助。 现在我得到了正确的结果。

    但客户希望使用 syscfg、这意味着如果需要在其工程中添加以下代码、这将不是一个好方法

    我们是否可以使用硬件 CRC 计算来实现它?

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

    Shuqing

    很高兴听到!

    您能给我另外一个详细信息吗?对于每个硬件 CRC 函数选项、生成的.run 函数是什么? 它是否与所选功能相同?

    谢谢、

    Sira

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

    您好 Sira

    客户不在乎选择哪个硬件 CRC、他们只想使用 syscfg 来生成与 Web https://www.lddgo.net/encrypt/crc 相同的结果

    您能给出一个对应的配置吗?

    BRS

    Shuqing

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

    尊敬的 Shuqing:

    简而言之、在当前的 C2000 syscfg 模块中不启用选择 VCU2 功能作为选项。 因此、第二个最好的方法是在 syscfg 中初始化和设置 CRC 结构、但在主初始化例程期间更改 run 函数、如上所示。 不理想,但它不会给程序带来任何伤害。

    我们正在研究这个 CRC 模块、并开始了关于将 VCU2 功能引入模块的内部讨论。 希望我们可以在下一个 C2000Ware 版本之前更新 CRC 模块。

    此致、

    Sen Wang