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

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2实现
  6. 3软件说明
  7. 4应用程序方面
  8. 5参考文献

实现

原理

在本应用手册所述的实现方案中,扇区根据虚拟 EEPROM 的大小分为“记录”区域。每条记录都包含标头和数据。标头显示记录的状态。记录的其余部分(总记录大小减去标头的 8 字节大小)用于存储用户数据。一个扇区中的记录数为(扇区大小/记录大小)。对于 128 字节记录大小,一个扇区中有 8 条记录。图 2-1 显示了 EEPROM 仿真的结构。

所有这些记录都用于存储同一虚拟 EEPROM 的数据。当尝试修改虚拟 EEPROM 的数据时,实际上会创建一条新记录,而不是在原来记录上进行修改。闪存中记录之间的差异体现在数据是新数据还是旧数据。换句话说,它们是同一数据的不同版本。它更像是 RAM 中存储器区域的备份。

共有三个用户可配置的参数,可根据应用程序要求在 eeprom_emulation_type_a.h 中进行配置。这些参数会影响空间利用和耐写次数,稍后将对此进行分析。

  • 记录大小:64 字节、128 字节或 256 字节
  • 使用的扇区数:至少 2 个
  • 扇区地址

EEPROM 仿真的基本行为如图 2-2 所示。当执行写入操作时,用户的数据将作为新记录存储到闪存中。执行读取操作时,将读取最新记录。仅当扇区已满时才执行擦除操作。

GUID-602E941D-327F-40D3-95CA-60E56B54FD3C-low.png图 2-1 EEPROM 仿真的结构
GUID-C173AA8D-09E8-4FD5-BF7C-E2156299A780-low.png图 2-2 EEPROM 仿真的基本行为

标头

标头用于管理记录。通过检查单个记录的标头,可以确定该记录的状态。通过检查所有记录的标头,可以找到最新记录,并检查 EEPROM 仿真的格式。

每条记录都有一个可显示其状态的标头。标头设置为 8 个字节,具有 3 个标志。根据标志的不同,总共有四种记录状态。标志与记录状态之间的关系如下所示。

表 2-1 标志与记录状态之间的关系
记录状态 活动记录标志 已用记录标志 记录结束标志
Erased 0xFFFF 0xFFFF 0xFFFF
Recording 0x0000 0xFFFF 0xFFFF
Active (latest) 0x0000 0xFFFF 0x0000
Used (Not latest) 0x0000 0x0000 0x0000

所有标志都会首先被擦除。写入新记录时,首先会设置活动记录标志并将状态更改为“Recording”。然后将数据写入记录。仅当数据完全写入时,才会设置记录结束标志。它监测写入操作的完成。如果系统在写入数据时断电,恢复时将检测到记录状态为“Recording”。

出现新的活动记录后,旧的活动记录将通过设置已用的记录标志来更改为“Used”。图 2-3 显示了执行写入操作时的记录状态变化。可以看到始终有一条活动记录,这有助于从断电状态中恢复。

GUID-B0FC6697-13F2-4C96-B42B-3B17DAC3D050-low.png图 2-3 执行写入操作时记录状态如何变化