ZHCACJ7 april 2023 MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G3105 , MSPM0G3106 , MSPM0G3107 , MSPM0G3505 , MSPM0G3506 , MSPM0G3507 , MSPM0L1105 , MSPM0L1106 , MSPM0L1303 , MSPM0L1304 , MSPM0L1305 , MSPM0L1306 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346
在本应用手册所述的实现方案中,扇区根据虚拟 EEPROM 的大小分为“记录”区域。每条记录都包含标头和数据。标头显示记录的状态。记录的其余部分(总记录大小减去标头的 8 字节大小)用于存储用户数据。一个扇区中的记录数为(扇区大小/记录大小)。对于 128 字节记录大小,一个扇区中有 8 条记录。图 2-1 显示了 EEPROM 仿真的结构。
所有这些记录都用于存储同一虚拟 EEPROM 的数据。当尝试修改虚拟 EEPROM 的数据时,实际上会创建一条新记录,而不是在原来记录上进行修改。闪存中记录之间的差异体现在数据是新数据还是旧数据。换句话说,它们是同一数据的不同版本。它更像是 RAM 中存储器区域的备份。
共有三个用户可配置的参数,可根据应用程序要求在 eeprom_emulation_type_a.h 中进行配置。这些参数会影响空间利用和耐写次数,稍后将对此进行分析。
EEPROM 仿真的基本行为如图 2-2 所示。当执行写入操作时,用户的数据将作为新记录存储到闪存中。执行读取操作时,将读取最新记录。仅当扇区已满时才执行擦除操作。
标头用于管理记录。通过检查单个记录的标头,可以确定该记录的状态。通过检查所有记录的标头,可以找到最新记录,并检查 EEPROM 仿真的格式。
每条记录都有一个可显示其状态的标头。标头设置为 8 个字节,具有 3 个标志。根据标志的不同,总共有四种记录状态。标志与记录状态之间的关系如下所示。
记录状态 | 活动记录标志 | 已用记录标志 | 记录结束标志 |
---|---|---|---|
Erased | 0xFFFF | 0xFFFF | 0xFFFF |
Recording | 0x0000 | 0xFFFF | 0xFFFF |
Active (latest) | 0x0000 | 0xFFFF | 0x0000 |
Used (Not latest) | 0x0000 | 0x0000 | 0x0000 |
所有标志都会首先被擦除。写入新记录时,首先会设置活动记录标志并将状态更改为“Recording”。然后将数据写入记录。仅当数据完全写入时,才会设置记录结束标志。它监测写入操作的完成。如果系统在写入数据时断电,恢复时将检测到记录状态为“Recording”。
出现新的活动记录后,旧的活动记录将通过设置已用的记录标志来更改为“Used”。图 2-3 显示了执行写入操作时的记录状态变化。可以看到始终有一条活动记录,这有助于从断电状态中恢复。