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.

[参考译文] MSP430F5359:针对闪存的"累积编程时间"澄清

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/860530/msp430f5359-clarification-on-***-programming-time-for-the-flash-memory

器件型号:MSP430F5359

我已经读过几个关于 Flash 存储器"累积编程时间"限制的主题:

但建议似乎有些不完整,在某些情况下是相互矛盾的。 我想问一下
一些澄清。

我要说的基本要点是:不能对块中的闪存单元施加高电压应力、以实现更多功能
小于(对于我的 MSP430F5359) 16ms。 这样做的时间越长、就会引发错误
存储在该块中的任何数据中、并可能永久损坏存储的栅极氧化层
晶体管。 到目前为止、非常好。

我无法明确理解的是、我们是如何根据该16ms 裕度计算时间的。

这是 SLAU208P 的相关图、即"MSP430x5xx 和 MSP430x6xx 系列用户"
指南”:

以下是 MSP430F5359数据表中的相关表格

以下是我感到困惑的地方:

用户指南中提到了 Twrite、但数据表中没有该参数。 而是具有 Tword
它们是否指的是同一实体? (因此、当我从正在运行的代码启动一个闪存编程操作时
从闪存中、我的程序因 Twrite = Tword = 64µs μ s 最小值、85µs μ s 最大值而被阻止?)

这是我需要根据16ms 的"累积编程时间"裕度进行调整的时间吗?
或者、它是不是看起来未命名且未指定的较小"编程操作激活"时间
不包括启动和停止编程电压发生器的时间? (芯片实际上是不是这样的
编程电压发生器停止时保持停滞?)

最后、我假设这一"累积编程时间"限制适用于较长的时间范围
如果我在16毫秒内花费16毫秒、或者我在课程中花费16毫秒、这一点无关紧要
天;无论通过哪种方式、我都可以获得每个闪存块16毫秒的"累积编程时间"
每个块都使用自己的16ms 分配进行单独计数、因此运算次数为多个
块可能会重叠。

本质上、我要问:我是否可以擦除块、然后逐字或对块进行编程
在秒、分钟或小时的过程中按长字长整型、与总和一样长
 特定块的所有 TWRITE 值中的值不超过16ms?

这会让我再问一个问题:

该系列用户指南明确记录了三种闪存写入模式:

  • 字节或字写入(由指令使用的访问大小决定)

  • 长字写入(由字节或字写入的任意组合激活
    闪存的对齐、连续32位长字)

  • 长字块写入(编程电压发生器保持在此状态)
    您必须仅从 RAM 执行)

而 MSP430F5359的数据表指出、它确实可以执行长字写入、但可以执行长字写入
没有为此定义任何时序。 那么、Tlongword 需要多长时间?

Atlant

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

    在 F5xx 器件上、字节/字/长字闪存写入将花费相同的时间。 它不是恒定时间(与 F2xx 系列类似)、对于每个 F5xx 器件来说是不同的(例如、一个 F5359的闪存比另一个 F5359快20%)、因此数据表中存在范围。

    累积编程时间与一个块(128字节)相关。 例如、将128个字节写入同一个块(典型固件更新)不是问题。 问题是在不同块之间跳转和写入字节、当在累积编程时间内将第一个字节和最后一个字节写入同一个块。

    无论如何、对我来说、最佳(和最快)选项是长字块写入、代码从 RAM 中执行。 或在启用智能位的情况下提高两倍。

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

    当我查看这个时、我得出结论、即使使用单字节写入、也不可能超过累积编程时间。(该部分给出了闪存时序发生器的周期数。)

    除非您多次写入每个字节、否则我会将其归档到非问题文件夹中并忘记它。

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

    关于您的第一个问题:是的

    关于第二个问题: Twrite =  Tword ="生成编程电压"时间+ "编程操作激活"时间 +"移除编程电压"

    时间。 因此、第一个字节或字的块编程时间、 最后一个字节或字的块编程时间以及其他字节或字之间存在差异。  

    关于您的第三个和第四个问题:您是否说您只能在 MSP430的整个生命周期内对每个块进行16ms 编程?

    关于您的第五个问题: Tlongword 取决于您使用的模式。 您可以逐字写入或使用块写入模式。

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

    >它不是恒定时间(与 F2xx 系列类似)、对于每个 F5xx 器件来说是不同的
    (例如、一个 F5359的闪存比另一个 F5359快20%)和
    >因此、数据表中存在范围。

    当然、这是因为 MODOSC 不是精密时钟、对吧?

    >累积编程时间与一个块(128字节)相关。 例如、
    >将128个字节写入同一个块(典型固件更新)不是问题。
    >问题是、当第一个字节时、在不同块之间跳转和写入字节
    >和最后一个字节到同一个块在累积编程时间内被写入。

    哦、我看到了! 《系列用户指南》规定:

    闪存存储器被划分为主存储器、信息存储器和 BSL 存储器部分。
    字节、字、32字节 长字或128字节块可写入闪存存储器、
    但段是 可被擦除的闪存存储器的最小大小。

    因此、与大多数闪存不同、对于主闪存、您有个不同的擦除块
    大小与编程块和主闪存段的大小各有不同
    4 128字节编程块!

    这是一个让我逃脱的小东西!

    所有这一切(包括数据表 Teg_ERASE 时序)的含义是错误
    可在多个擦除块之间并行完成。 因此、当您:

    • 擦除个信息闪存段、一个128字节擦除块被擦除

    • 擦除 个主闪存段、四个128字节擦除块被并行擦除

    • 执行批量擦除、所有128字节擦除块都并行擦除

    • 执行 组擦除、该组中的所有128字节擦除块均并行擦除


    对吧?

    Atlant

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

    >关于第三个和第四个问题: 您是否说您只能在 MSP430的整个生命周期内对每个块进行16ms 的编程?

    否 我重申系列用户指南数据表的声明、即一旦一个段被擦除、就必须在"累积编程时间"后的16ms 内完成该段内每个单独128字节块的所有重新编程。

    如果您要超过该16ms、则必须擦除并重新开始。

    Atlant

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

    >当我看这篇报告时,我得出结论,不可能超过累积值
    >编程时间、即使使用单字节写入也是如此。(该部件根据提供了时间
    >闪存时序发生器的周期。)

    是的! 我最初在《系列用户指南》中遗漏了这一子细节、但它支持这一点
    您的争用:

    闪存存储器被划分为主存储器、信息存储器和 BSL 存储器部分。
    字节、字、32字节 长字或128字节块可写入闪存存储器、
    但段是 可被擦除的闪存存储器的最小大小。

    因为主闪存"段"(大多数闪存用户会将其称为"擦除块")
    µs 包含4个128字节的块、然后用于 MSP430F5359及其最大85 μ A
    Tword 编程  µs、我们分别得到的最大值为10、880 μ s (~11ms)
    对一个128字节块中的所有字节进行一次性编程。

    正如您所说的、似乎只需要担心累积编程
    1) 1)不擦除而对字节重新编程的时间、2)使用块编程
    运行模式、但您执行它的速度太慢。

    Atlant

     

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

    [引用 user="Atlantis Schmidt"]当然,这是因为 MODOSC 不是精密时钟,对吗?[/quot]

    是的、我认为这 与闪存时钟有关。 在这里、您可以看到我的测试设备按刷新率(KByte/sec)值排序。
    获取器件
    # JTID 熔丝芯硬软 LotWafer DieX Diey
    0 91  正常  3881 1106 10   219CA446 1800 0F00
    1 91  OK  5435 0100 10  10 ADE98146 0A00 2100
    2 91  正常  3180 1104 12   013BB046 1200 1E00
    3 91  正常  3180 1104 12   013BB046 0D00 1E00
    4 91  OK  5435 0100 10  10 ADE98146 0400 2000
    5 91  正常  3180 1104 12   013BB046 2a00 2100
    6 91  正常  3080 1104 30  10 B15B9446 2000 1700
    7 91  OK  3081 2106 10   B7A50951 0A00 1100

    写入测试
    SMART #0#1      #2   #3#4#5#6#7             
     0   93、8 100、6 102、0 102、2 102、5 103、3 105、4 106、4
     1  216、8 232、5 235、7 236、1 236、9 238、6 243、6 245、9

    只是为了回到这里……

    [引用 user="Atlanter Schmidt">我的基本要点是:无法对块中的闪存单元施加高压应力、以实现更多功能
    小于 (对于我的 MSP430F5359) 16ms。 这样做的时间越长、就会引发错误
    存储在该块中的任何数据中、并可能永久损坏存储的栅极氧化层
    晶体管。 到目前为止、非常好。[/引述]

    我在使用相同的 F5xx 目标器件板的闪光灯上工作了多年、在开发过程中、所有其他闪烁故障都会多次发出16ms 的限制信号。 所有这些目标器件上的闪存存储器都在工作(我可以通过 使用边界读取来看到)、这与它是全新的时相同。

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

    >我使用相同的 F5xx 目标器件板在 Flasher 工作多年、
    >在开发过程中、该16ms 限值多次被各种类型的发出
    >其它刷写故障。 所有这些目标器件上的闪存存储器都在工作(正如我所说的
    >可以通过 边际读取来查看)今天与全新的情况相同。

    这是很好的了解! 持久闪存总是一件好事!

    同时、这里是另一个线程中 Jens-Michael Gross 的回复、仅供参考
    规定超过累积编程时间可能会对电池造成损害:

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/19724/1476172#1476172

    在块写入模式下、当第一个字节被写入块时、应用编程电压、
    并在写入另一个块或禁用写入模式时从块中移除。

    调试器会暂停 CPU、但不会停用块写入模式。

    单步执行闪存写入代码是不安全的、无论是从闪存运行还是从 RAM 运行。

    如果超过累积写入时间、写入的闪存内容将不可靠。 保留时间
    可能会显著减小、甚至可能发生未编程的位切换为"0"的情况。 闪存
    将在下一个擦除周期恢复、但会长时间施加编程电压
    也会像多次编程(和擦除)一样对闪存单元绝缘施加应力、
    从而减少可用写入周期的数量。

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

    下面是对特定样本的"long-Word"写入的样子
    MSP430F5359微处理器:

    只有标记为"DB_TP_XP"的米色迹线才有意义。

    它向我们展示的是、写入闪存的三个字节大小的写入速度非常快
    µs (每个约1.1 μ s、因此可能是8MHz MCLK 的9个周期)和
    第四个字节 µs 完成长字、然后花费70.3 μ s、
     µs 产品说明书64 μ A 范围的低侧、只是一个 smidgen
    至85 µs。

    (这两个时间都包含大约1 BIS.B #& instruction's worth
    更新所使用的 DB_TP_XP GPIO 信号时的开销
    演示所有这些操作的时序;下面显示了完整的代码。)

    这确认了字节写入字写入和非块模式
    长字写入都需要相同的时间。

    Atlant

    -------------

    注:

    下面是执行上述写入操作的实际代码:

    DB_TP_XP_OUT_REG |= DB_TP_XP_BIT;
       F2D080002202 BIS.B #0x80、&0x222  
    *address_ptr =* src_ptr;          //因为我们在闪存中执行、无论何时是长字
       FC4D0000 MOV.B @R13+、0 (R12)
    DB_TP_XP_OUT_REG &&~DB_TP_XP_BIT;     //  传输完成,处理器将自动卡在此处
       F2C080002202 BIC.B #0x80、&0x222

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

    您好、 Atlanta,

    您的问题是否已解决?

    如果不是、您能向我解释一下进展情况吗? 我可以咨询我们的专家。

    伊斯天

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

    伊斯天:

    >您的问题是否已解决?

    我认为我的所有问题都已经解决、所以我将按下"Resolved"按钮、但我鼓励您与维护 MSP430系列用户指南数据表的技术作者分享此主题、因为此主题暴露了这些文档和多个领域之间的几个不一致之处 这可以更完整地记录下来。

    感谢您的帮助和其他所有人、也感谢您的帮助!

    Atlant

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

    您好、 Atlanta,

    感谢您指出。 我已将请求提交给我们的相关同事。

    伊斯天

x 出现错误。请重试或与管理员联系。