ZHCAEZ8 February 2025 MSPM0C1103 , MSPM0C1103-Q1 , MSPM0C1104 , MSPM0C1104-Q1 , MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G1519 , MSPM0G3105 , MSPM0G3105-Q1 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3505 , MSPM0G3505-Q1 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1 , MSPM0G3519 , MSPM0L1105 , MSPM0L1106 , 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
该子系统演示了如何在应用中实现电可擦除可编程只读存储器 (EEPROM) 仿真(A 型)。EEPROM 仿真允许器件在闪存存储器中仿真 EEPROM,并使其具有与 EEPROM 等效的耐用性。使用闪存存储器可获得以下功能:
MSPM0 有两种类型的 EEPROM 仿真库。A 型是使用静态随机存取存储器 (SRAM) 缓冲器存储一个大型数据块(64 字节、128 字节或 256 字节)。有关库的详细信息,请参阅 EEPROM 仿真 A 型设计 应用说明。B 型 是存储许多带有项目标识符的小数据项(16 位或 32 位)。有关库的详细信息,也请参阅 EEPROM 仿真 B 型设计 应用说明。
该子系统介绍了 A 型 的用法。有关 B 型 子系统,请参阅使用闪存(B 型)子系统设计的仿真 EEPROM。
图 1-1 展示了该子系统的功能图。
此应用需要闪存。
子块功能 | 外设使用 | 注释 |
---|---|---|
闪存 API | (1 ×) 闪存 | 在代码中称为 FLASHCTL |
根据表 2-1 中的要求,该示例与表 3-1 中列出的器件兼容。相应的 EVM 可用于原型设计。
兼容器件 | EVM |
---|---|
MSPM0Gxxxx | LP-MSPM0G3507 |
MSPM0Lxxxx | LP-MSPM0L1306 |
MSPM0Cxxxx | LP-MSPM0C1104 |
MSPM0Hxxxx | LP-MSPM0H3216 |
drivelib
。用户可以在 eeprom_emulation_type_a.h 中修改起始地址、要使用的扇区数和记录大小。用于 EEPROM 仿真的默认闪存地址为 0x00001000,默认使用两个扇区,因此占用 0x00001000-0x000017ff。此外,仿真 EEPROM 的默认大小为 128 字节。
uint32_t EEPROMEmulationBuffer[EEPROM_EMULATION_DATA_SIZE / sizeof(uint32_t)];
main()
的开头添加初始 函数,通常在 SYSCFG_DL_init()
之后。此操作可正确格式化相关的闪存区域并正确分配全局变量。在步骤 3 中,初始函数 EEPROM_TypeA_init()
还会搜索活动记录并将数据从闪存加载到缓冲器。EEPROM_TypeA_init(&EEPROMEmulationBuffer[0])
;EEPROM_TypeA_writeData()
在闪存中创建新记录。EEPROM_TypeA_writeData(&EEPROMEmulationBuffer[0]);
gEEPROMTypeAEraseFlag
添加擦除函数。再次写入数据之前需要擦除闪存,擦除的最小单位为扇区。对于 EEPROM 仿真,在一个扇区已满后,设置 gEEPROMTypeAEraseFlag
。用户可以根据标志调用 EEPROM_TypeA_eraseLastSector()
。例如、在步骤 5 中的 EEPROM_TypeA_writeData()
之后添加以下代码。用户还可以根据需要选择一个适当的时间点来擦除整个扇区。EEPROM_TypeA_eraseLastSector();
EEPROM_TypeA_writeData
或 EEPROM_TypeA_eraseLastSector
期间断电,则可能会损坏数据或标头。要检测损坏并从损坏中恢复,请执行 EEPROM_TypeA_init
。加电后立即调用 EEPROM_TypeA_init
。EEPROM_TypeA_init
会检查所有记录的标头以确认 EEPROM 仿真的数据存储是否正确,并在必要时执行格式修复。
在 EEPROM 仿真的结构中,标头可显示相应记录的状态。一共有四种状态。节 4 中详细介绍了这四种状态之间的变化。
图 6-1 显示了 EEPROM 仿真 A 型 的代码流程图,其中介绍了如何在应用代码中添加函数来实现 EEPROM 仿真。这里需要三个功能:EEPROM_TypeA_init
、EEPROM_TypeA_writeData
、EEPROM_TypeA_eraseLastSector
。
实现此功能需要六个函数。除 节 6 中提到的三个函数外,其余三个函数主要由 EEPROM_TypeA_init
调用。
EEPROM_TypeA_init
EEPROM_TypeA_writeData
EEPROM_TypeA_eraseLastSector
EEPROM_TypeA_readData
EEPROM_TypeA_searchCheck
EEPROM_TypeA_repairFormat
此外,七个全局变量用于记录 EEPROM 仿真的状态。有四个全局变量用于跟踪活动记录。
uint32_t gActiveRecordAddress
uint32_t gNextRecordAddress
;uint16_t gActiveRecordNum
;uint16_t gActiveSectorNum
;gActiveRecordAddress
和 gNextRecordAddress
用于存储活动记录相关地址。
gActiveRecordNum
和 gActiveSectorNum
用于跟踪活动记录的位置。
有三个全局变量用于表示标志。
gEEPROMTypeASearchFlag
;gEEPROMTypeAEraseFlag
;gEEPROMTypeAFormatErrorFlag
;当存在活动记录时设置 gEEPROMTypeASearchFlag
。
当扇区已满且需要擦除时设置 gEEPROMTypeAEraseFlag
。
当发现格式错误时设置 gEEPROMTypeAFormatErrorFlag
。
Other TMs
TI 均以“原样”提供技术性及可靠性数据(包括数据表)、设计资源(包括参考设计)、应用或其他设计建议、网络工具、安全信息和其他资源,不保证其中不含任何瑕疵,且不做任何明示或暗示的担保,包括但不限于对适销性、适合某特定用途或不侵犯任何第三方知识产权的暗示担保。
所述资源可供专业开发人员应用TI 产品进行设计使用。您将对以下行为独自承担全部责任:(1) 针对您的应用选择合适的TI 产品;(2) 设计、验证并测试您的应用;(3) 确保您的应用满足相应标准以及任何其他安全、安保或其他要求。所述资源如有变更,恕不另行通知。TI 对您使用所述资源的授权仅限于开发资源所涉及TI 产品的相关应用。除此之外不得复制或展示所述资源,也不提供其它TI或任何第三方的知识产权授权许可。如因使用所述资源而产生任何索赔、赔偿、成本、损失及债务等,TI对此概不负责,并且您须赔偿由此对TI 及其代表造成的损害。
TI 所提供产品均受TI 的销售条款 (http://www.ti.com.cn/zh-cn/legal/termsofsale.html) 以及ti.com.cn上或随附TI产品提供的其他可适用条款的约束。TI提供所述资源并不扩展或以其他方式更改TI 针对TI 产品所发布的可适用的担保范围或担保免责声明。IMPORTANT NOTICE
邮寄地址:上海市浦东新区世纪大道 1568 号中建大厦 32 楼,邮政编码:200122
Copyright © 2025 德州仪器半导体技术(上海)有限公司