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.

[参考译文] LAUNCHXL2-RM57L:芯片写入内部闪存时出现数据错误

Guru**** 2562120 points
Other Parts Discussed in Thread: RM57L843

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1058315/launchxl2-rm57l-data-error-when-chip-writes-internal-flash

器件型号:LAUNCHXL2-RM57L
主题中讨论的其他器件:RM57L843

大家好、

问题:使用 RM57L843开发板读取或写入内部闪存时、写入的数据会发生错误。 例如,写入全部35,但某些地址上的数据错误,如下图所示:

写入内部闪存的代码如下:

空 Internal_flash_write (uint32 addr、uint8* buff、uint8 len)

Fapi_StatusType oReturnCheck = Fapi_Status_Success;
oReturnCheck = Fapi_initializeFlashBanks (180);
if ((oReturnCheck = Fapi_Status_Success)&&(flash_control_register->fmstat.fmstat_bits.Busy!= Fapi_Status_FsmBusy))

if (((addr >= 0x00000000)&&(addr <= 0x003FFFFF)))

if (addr <= 0x003FFFFF)
oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank0);
其他
oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank1);
oReturnCheck = Fapi_enableMainBankSectors (0xFFFF);

否则 if (((addr >= 0xF0200000)&&(addr<= 0xF021FFFF))

oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank7);
oReturnCheck = fapi_enableEprompankSecectors (0xffffff,0xffffffff);

while (flash_control_register->fmstat.fmstat_bits.busy = fapi_Status_FsmBusy);
oReturnCheck = fapi_issueProgrammingCommand (uint32_t*)(addr)、buff、len、0、0、0、 Fapi_AutoEccGeneration);
/*在此处放置特定的示例代码*/
/*等待 FSM 完成*/
while (flash_control_register->fmstat.fmstat_bits.busy = fapi_Status_FsmBusy);

工程如下:

/cfs-file/__key/communityserver-discussions-components-files/151/Internal-flash.zip

您可以帮助检查此案例吗? 谢谢。

此致、

樱桃

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

    您好、Cherry、

    如果在向闪存写入数据时计算和编程 ECC、则 MEMORY 窗口应正确显示数据。 如果未对 ECC 进行编程、您将在内存浏览器窗口中看到错误的数据。  

    屏幕截图太小、无法阅读内容。

    我注意到、当您对闪存进行编程时会生成 ECC。 RM57支持高达330MHz 的 CPU 频率、系统时钟为165MHz。 为什么在代码中使用180MHz:

    oReturnCheck = Fapi_initializeFlashBanks (180);

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

    您好!

    很抱歉出现错误的屏幕截图。

    上图是否清晰?

    谢谢、此致、

    樱桃

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

    看起来 ECC 值不正确。 闪存和 SRAM 受 ECC 保护。  ECC 可与使用闪存 API 的实际应用代码一起编程到闪存阵列中。