我已经读过几个关于 Flash 存储器"累积编程时间"限制的主题:
- https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/780840
- https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/19724/1476172
- https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/113519
但建议似乎有些不完整,在某些情况下是相互矛盾的。 我想问一下
一些澄清。
我要说的基本要点是:不能对块中的闪存单元施加高电压应力、以实现更多功能
小于(对于我的 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