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.

[参考译文] TMDX570LC43HDK:01252018I6

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1006643/tmdx570lc43hdk-01252018i6

器件型号:TMDX570LC43HDK

您好!

我正在尝试擦除和编程闪存、我使用的第一条指令是 Fapi_initializeFlashBanks (150)、该指令返回错误 Fapi_Error_OtpChecksumMismatch、我不知道为什么会出现此错误。

请帮帮我。

此致、

BEA

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

    您好、Beatriz、

    请确保您的项目中使用了正确的闪存 API 库:

    F021_API_CortexR4_BE_L2FMC_V3D16.lib -->适用于 TMS570LC43x 器件

    F021_API_CortexR4_BE_V3D16.lib   -->用于 TMS570LSx 器件

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

    QJ Wang、您好!

    我已删除 F021 Lless F021_API_CortexR4_be_l2FMC_V3D16.lib 中包含的所有库、OTP 错误已消失、感谢您的回复。 但是、当我对闪存进行编程时、这些值是不正确的。  

    我的代码是:

    无符号字符数据[16]={'A'、'B'、'C'、'D'、'A'、 'b'、'C'、'D'、'A'、'B'、'C'、'D'、'A'、 'b'、'C'、'D'};

    擦除闪存:

    fapi_disableAutoEccCalculation ();
    Fapi_initializeFlashBanks (150);

    Fapi_setActiveFlashBank (Fapi_FlashBank1);
    Fapi_enableMainBankSectors (0xFFFF);
    while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
    while (fapi_get_FSM_status!= fapi_Status_Success);

    if (fapi_check_FSM_ready_busy = fapi_Status_FsmReady)

    Fapi_issue19 CommandWithAddress (Fapi_EraseSector、(uint32_t *) 0x00220000);
    while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
    while (fapi_get_FSM_status!= fapi_Status_Success);

    和用于程序:

    Fapi_initializeFlashBanks (150);

    fapi_disableAutoEccCalculation ();
    while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
    while (fapi_get_FSM_status!= fapi_Status_Success);

    Fapi_setActiveFlashBank (Fapi_FlashBank1);
    Fapi_enableMainBankSectors (0xFFFF);
    while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
    while (fapi_get_FSM_status!= fapi_Status_Success);

    if (fapi_check_FSM_ready_busy = fapi_Status_FsmReady)

    return_chcek = fapi_issueProgrammingCommand (((uint32_t *) BANK1_START_ADDR、(uint8_t*) Data、16、0、0、Fapi_DataOnly);
    while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
    while (fapi_get_FSM_status!= fapi_Status_Success);

    闪存中的结果为:

    0x00220000  0x41420344 0x67424344 0x40424344  0x41424344

    只有最后一个位置是正确的、您能帮我吗?

    此致、

    BEA

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

    您好、再说一次、

    我发现了我的错误。 我在该论坛的另一个用户提供的代码中包含了一个函数"coreCleanInvalidateDC()"、我使用函数"Fapi_enableAutoEccCalculation "启用了 ECC 计算、在用于编程的函数中、我已通过 Fapi_AutoEccGeneration 更改了 Data_only、现在它的工作了!!

    感谢您的帮助!