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.

[参考译文] RM57L843:CRC 计算

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1432046/rm57l843-crc-calculation

器件型号:RM57L843

工具与软件:

您好!

如何计算不是64位倍数的数据的 CRC64? 例如、我想计算以下10字节数据的 CRC

DATA ={0x00、0x01、0x02、0x03、0x04、 0x07、0x08、0x90、0x12、0x13}

在 crcModConfig_t 结构中、我应该将 src_data_pat 和 data_length 字段设置为什么?

Ravi

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

    Ravi

    由于印度的排华节假日、敬请期待延迟回复。

    此致、

    Brennan

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

    尊敬的 Ravi:

    根据我的理解、CRC 压缩始终仅对64位数据进行。

    如果要计算0x00、0x01和0x02的 CRC、则应提供0x000000000000、 0x000000000001和0x0000000000000002 。

    因此、您可以按如下方式编写代码:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "HL_crc.h"
    uint64_t Data_Buffer[10] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x90, 0x12, 0x13};
    uint8_t CRC_Completion_Flag = 0;
    crcConfig_t sCrcParams;
    uint64_t compressed_crc;
    int main(void)
    {
    crcInit();
    Data_Initialization();
    sCrcParams.crc_channel = CRC_CH1;
    sCrcParams.mode = CRC_FULL_CPU;
    sCrcParams.pcount = 0u;
    sCrcParams.scount = 0u;
    sCrcParams.wdg_preload = 0u;
    sCrcParams.block_preload = 0u;
    crcChannelReset(crcREG1, CRC_CH1);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    您无需提及更高的字节、在我们使用64位声明数组大小时、它会将更高的字节视为全零。

    ——

    谢谢、此致、
    Jagadish。