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:擦除后闪存中的数据。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1484898/mspm0l1228-data-in-flash-after-erasing

器件型号:MSPM0L1228

工具与软件:

您好!

客户对 Erasing 后闪存中的数据有疑问。

在不使用程序的扇区擦除后会立即读取什么内容?

是否读取擦除前的值?

 

本章中有以下注意事项 6.3.4 ERASE 命令 找到此示例。

  

 

在客户的用例中、定期执行 Program->SectorErase。

由于 MCU 电源可以在指示闪存控制器执行扇区擦除的同时关闭、他们考虑的是在 MCU 电源打开时读取闪存、如果全部为"1"、则他们判断扇区擦除是在电源关闭前执行的。

然而、如果在注释中所述的程序之前不保证所有"1"、是否可以对所有"1"进行一次编程、然后阅读它们?

此外、如果他们将全部"1"(0xFFFFFFFFF_FFFF)编程到断电前未擦除扇区而编程写入"0x12345678_12345678"的区域、会发生什么情况(该值是否改变?)?

谢谢。此致、
英明  

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

    您好!

    1.擦除后读取的数据通常为0xFF。 但除非您再次对闪存进行编程、否则我们不会对此作出承诺。

    2、我不是完全理解其余的问题。  对一个扇区进行编程后、除非先运行擦除、否则无法对其编程两次。  

    此致、

    Cash Hao  

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

    您好、Cash Hao、

    感谢您的答复。

     对一个扇区进行编程后、除非先运行擦除、否则无法对其编程两次。  [报价]

     

    您能详细解释以上内容吗?

    如果他们在没有先执行擦除的情况下对扇区进行编程、那么数据是否没有改变?

     

    根据下面的数据表、它们可以在扇区擦除前针对每条字线进行最长83倍编程。

    这是正确的吗?

      

    谢谢。此致、

    英明

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

    您好!

    写入操作 读取 。 扇区擦除后、您可以针对该扇区内的不同字地址对每个字线进行83次写入。  

    这并不意味着您可以写入整个扇区、然后再次写入而不擦除它。  

    此致、

    Cash Hao

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

    尊敬的 Cash:

    感谢您的回答。

    客户希望知道以下问题的答案。 您能帮助回答这个问题吗?

    [报价 userid="1059" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1484898/mspm0l1228-data-in-flash-after-erasing/5703865 #5703865"]
     对一个扇区进行编程后、除非先运行擦除、否则无法对其编程两次。  

     

    您能详细解释以上内容吗?

    如果他们在没有先执行擦除的情况下对扇区进行编程、那么数据是否没有改变?

    [报价]

    谢谢。此致、

    英明

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

    尊敬的 Cash:

    还有一个问题。 他们如何确认擦除是否已完成?

    在其系统中、可以关闭 MCU 电源、同时指示闪存控制器执行扇区擦除。 所以、他们认为无法通过检查寄存器来确认。

    谢谢。此致、
    英明

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

    您好!

    如果他们在没有先执行擦除的情况下对扇区进行编程、数据是否未更改?

    我会说是的。 数据在第二次写入时不会改变。

    此致、

    Cash Hao

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

    您好!

    在其系统中、MCU 电源可关闭、同时指示闪存控制器执行扇区擦除。 因此,他们不认为可以通过检查寄存器来确认它。

    首先、在任何闪存过程中、不建议关闭 MCU 电源。 一个适当的方法是让 MCU 确认擦除已完成、然后自行切断其电源。  

    客户可以考虑在 VDD 电源上添加一个大电容。 并让 MCU 通过 CAP 完成擦除过程。  

    此致、

    Cash Hao

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

    尊敬的 Cash:

      

    感谢您的回答、但很抱歉、下面我再确认一次。

     对一个扇区进行编程后、除非先运行擦除、否则无法对其编程两次。  [/引号]
    在扇区擦除后、对于该扇区内的不同字地址、您可以按每个字行写83次以下。  [报价]

     

    您能再次解释一下以上的含义吗? 特别是、什么是"这个部门内的不同字地址"?

      

      

    数据表中有 nW (MAX)的注释(3)、如下所示。

      

    根据此说明、如果 需要对同一字线进行额外的写入、则一旦达到每个字线的最大写入操作数、就需要进行扇区擦除。

    擦除扇区后、它们可以针对该扇区内的相同字地址、针对每个字线进行低于83次的写入。

    这是正确的吗?  

    此致、

    英明

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

    您好!

    不、这里的描述模糊。  

    我在这里运行了一些测试、结果如下。

    您可以为乘法时间编写相同的字线。 但闪存的每个位只能从1更改为0。 在写入过程中、它不能从0变为1。 所以、即使您在没有擦除的情况下写入相同的地址两次、存储在闪存中的 数据也可能既不是第一个写入的数据、也不是第二个写入的数据。 如果客户需要写入相同的地址两次、则需要在两次写入之间执行擦除过程。  

    此致、

    Cash Hao

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

    您好、Cash Hao、

     

    我很困惑...

    因此、即使您在没有擦除的情况下写入同一地址两次、存储在闪存中的数据 也既不能写入第一个数据、也不能写入第二个数据。 如果客户需要写入相同的地址两次、则需要在两次写入之间执行擦除过程。  [报价]

     

    您提到过两次、但数据表说明如下。

    必须擦除字线之前、每个字线允许的最大写入操作数(83)。 则可能会发生这种情况
    一个写操作数(83)达到每个字线的最大写入操作数后、就需要进行扇区擦除。

    您能解释一下"83"是什么意思吗?  

    此致、

    英明

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

    您好!

    我不知道如何用更好的方式解释它。  

    83的含义与数据表中的完全相同。  

    "So"、即使您在没有擦除的情况下写入相同的地址两次、存储在闪存中的 数据也可能既不是第一个写入的数据、也不是第二个写入的数据。 如果客户需要写入相同地址两次、 并希望 获得 存储在闪存中的正确数据 则 需要在两次写入之间执行擦除过程。  

    此致、

    Cash Hao

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

    您好、Cash Hao、

    感谢您的解释。 我在 TRM 中找到了以下说明。 我了解 Max 程序操作(83)。

    擦除前每个字线的最大编程操作数
    器件数据表指定了之前每个字线的编程操作数量的最大限制
    需要擦除包含字线的扇区。 超过此最大值可能会导致数据损坏
    正交。
    如果执行16位或更大的编程操作、并且不对任何16位位置进行多次编程
    在擦除扇区之前、始终不会达到最大限值、因此不需要
    灵敏度。
    如果执行8位(字节)编程操作、则必须考虑每条字线的最大编程限制
    并且不超过该范围。 如果编程操作独立于其他程序、则在 ECC 位置执行
    操作、计入需要擦除前的写入次数。

    谢谢。此致、

    英明