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.

[参考译文] MSPM0L1228:如何一次擦除8个字节的闪存?

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1421219/mspm0l1228-how-to-erase-flash-8-bytes-at-a-time

器件型号:MSPM0L1228

工具与软件:

您好!

我尝试一次擦除8个字节的闪存、 但结果是擦除了一个扇区(1024字节)。

代码有什么问题吗?

bool FLS_EraseOneWord(const uint32_t addr)
{
    bool flashStat;

    DL_FlashCTL_executeClearStatus(FLASHCTL);

    DL_FlashCTL_unprotectSector(FLASHCTL, addr, DL_FLASHCTL_REGION_SELECT_MAIN);

    DL_FlashCTL_eraseMemory(FLASHCTL, addr, DL_FLASHCTL_COMMAND_SIZE_ONE_WORD);

    flashStat = DL_FlashCTL_waitForCmdDone(FLASHCTL);

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

    尊敬的 Sho:

    扇区是 MSPM0中可以擦除的最小区域。扇区大小为1KB、因此擦除能力不能小于1KB。

    如果您想详细介绍8字节的用例、我可以为内存管理提供几个不同的想法/解决方案。

    此致、
    Luke

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

    你好、

    感谢您的回复。
    我也会在数据表中找到它。



    如果您想为8字节的用例提供更多信息、我可能可以为内存管理提供几个不同的想法/解决方案。

    是的、请向我展示想法/解决方案。

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

    尊敬的 Sho:

    如果可以使用空闲的存储器空间、则可以增加存储器的使用率、并且只需循环使用整个扇区的数据。 在扇区的开头启动地址、并在执行更新时使地址递增。 这会浪费存储器扇区、但比每次擦除和重写该扇区要快、这也有助于提高存储器的耐久性。

    如果存储器受限、则需要将扇区复制到 RAM 中、擦除扇区、然后在屏蔽8个字节的同时写入以前的数据。 之后您可以对您的8个字节进行编程。

    此致、
    Luke

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

    你好、

    感谢您的解决方案。