ZHCAEZ8A February   2025  – August 2025 MSPM0C1103 , MSPM0C1103-Q1 , MSPM0C1104 , MSPM0C1104-Q1 , MSPM0C1105 , MSPM0C1106 , MSPM0C1106-Q1 , MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G1518 , MSPM0G1519 , MSPM0G3105 , MSPM0G3105-Q1 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3505 , MSPM0G3505-Q1 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1 , MSPM0G3518 , MSPM0G3518-Q1 , MSPM0G3519 , MSPM0G3519-Q1 , MSPM0H3216 , MSPM0H3216-Q1 , MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1

 

  1.   1
  2. 1说明
  3. 2所需外设
  4. 3设计步骤
  5. 4设计注意事项
  6. 5软件流程图
  7. 6应用代码
  8. 7其他资源
  9. 8修订历史记录
  10.   商标

设计步骤

  1. 添加 EEPROM 仿真库。MSPM0 软件开发套件 (SDK) 包括 EEPROM 仿真库。
    注: EEPROM 仿真库基于闪存 API,因此也需要来自 SDK 的 drivelib
    对于 A 型,需要包含以下文件:
    1. eeprom_emulation_type_a.c
    2. eeprom_emulation_type_a.h
    MSPM0L1306, MSPM0G3507, MSPM0C1104 EEPROM 仿真文件图 3-1 EEPROM 仿真文件
  2. 在 eeprom_emulation_type_a.h 的代码中添加包含路径。MSPM0L1306, MSPM0G3507, MSPM0C1104

    用户可以在 eeprom_emulation_type_a.h 中修改起始地址、要使用的扇区数和记录大小。用于 EEPROM 仿真的默认闪存地址为 0x00001000,默认使用两个扇区,因此占用 0x00001000-0x000017ff。此外,仿真 EEPROM 的默认大小为 128 字节。

    1. #define EEPROM_EMULATION_ADDRESS (0x00001000)
    2. #define EEPROM_EMULATION_SECTOR_ACCOUNT (2)
    3. #define EEPROM_EMULATION_RECORD_SIZE (128)
  3. 将全局数组定义为随机存取存储器 (RAM) 中的缓冲器。每次打开系统电源时,都会使用初始函数将仿真 EEPROM 的数据从闪存加载到该缓冲器中。数组大小应等于步骤 2 中的记录大小。
    • uint32_t EEPROMEmulationBuffer[EEPROM_EMULATION_DATA_SIZE / sizeof(uint32_t)];
  4. main() 的开头添加初始 函数,通常在 SYSCFG_DL_init() 之后。此操作可正确格式化相关的闪存区域并正确分配全局变量。在步骤 3 中,初始函数 EEPROM_TypeA_init() 还会搜索活动记录并将数据从闪存加载到缓冲器。
    • EEPROM_TypeA_init(&EEPROMEmulationBuffer[0])
    MSPM0L1306, MSPM0G3507, MSPM0C1104 EEPROM 初始化图 3-2 EEPROM 初始化
  5. 用户可以在初始化后根据需要读取或修改 RAM 中的缓冲器。当需要存储从缓冲器到闪存的数据时,请调用 EEPROM_TypeA_writeData() 在闪存中创建新记录
    注: 断电后,RAM 中的数据会丢失。为实现断电后的数据存储,请至少执行一次该功能。
    • EEPROM_TypeA_writeData(&EEPROMEmulationBuffer[0]);
    MSPM0L1306, MSPM0G3507, MSPM0C1104 EEPROM 写入图 3-3 EEPROM 写入
  6. 根据 gEEPROMTypeAEraseFlag 添加擦除函数。再次写入数据之前需要擦除闪存,擦除的最小单位为扇区。对于 EEPROM 仿真,在一个扇区已满后,设置 gEEPROMTypeAEraseFlag。用户可以根据标志调用 EEPROM_TypeA_eraseLastSector()。例如、在步骤 5 中的 EEPROM_TypeA_writeData() 之后添加以下代码。用户还可以根据需要选择一个适当的时间点来擦除整个扇区。
    • EEPROM_TypeA_eraseLastSector();
    MSPM0L1306, MSPM0G3507, MSPM0C1104 EEPROM 擦除图 3-4 EEPROM 擦除

在完成步骤 1 到步骤 6 之后,将在应用中实现 EEPROM 仿真 A 型。请参阅 节 5 了解流程。