ZHCAEZ9 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) 仿真(B 型)。EEPROM 仿真允许器件在闪存存储器中仿真 EEPROM,并使其具有与 EEPROM 等效的耐用性。使用闪存存储器可以实现以下功能:
MSPM0 有两种类型的 EEPROM 仿真库。A 型 是使用静态随机存取存储器 (SRAM) 缓冲器存储一个大型数据块(64 字节、128 字节或 256 字节)。有关库的详细信息,请参阅 EEPROM 仿真 A 型设计 应用说明。B 型 是存储许多带有项目标识符的小数据项(16 位或 32 位)。有关库的详细信息,也请参阅 EEPROM 仿真 B 型设计 应用说明。
该子系统展示了 B 型 的用法。有关 A 型 子系统的信息,请参阅带闪存的仿真 EEPROM(A 型) 子系统设计。
图 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_b.h 中的起始地址、组数(至少两个)和一个组中的扇区数(至少一个)。用于 EEPROM 仿真的默认闪存地址为 0x00001400,默认使用六个扇区(分三组,每组两个扇区),因此占用 0x00001400-0x00002bff。
#define EEPROM_EMULATION_ADDRESS (0x00001400)
#define EEPROM_EMULATION_GROUP_ACCOUNT (3)
#define EEPROM_EMULATION_SECTOR_INGROUP_ACCOUNT (2)
main()
的开头添加初始
函数,通常在 SYSCFG_DL_init()
之后。这样就可以正确格式化相关的闪存区域并正确分配全局变量,以跟踪活动组和最新数据项。EEPROMEmulationState
= EEPROM_TypeB_init()
;EEPROM_TypeB_write
通过 16 位标识符写入 32 位数据。EEPROMEmulationState = EEPROM_TypeB_write(var_id, var_data);
EEPROM_TypeB_readDataItem
根据输入标识符读取数据。var_data_read = EEPROM_TypeB_readDataItem(var_id);
gEEPROMTypeBEraseFlag
添加擦除函数。再次写入数据之前需要擦除闪存,擦除单位是扇区。对于 EEPROM 仿真 B 型,在一个组已满后,设置 gEEPROMTypeBEraseFlag
。用户可以根据标志调用 EEPROM_TypeB_eraseGroup()
。例如,在步骤四中的 EEPROM_TypeB_write()
之后添加以下代码。用户还可以根据需要选择一个适当的时间点来擦除整个组。EEPROM_TypeB_eraseGroup();
eeprom_emulation_type_b.h
中有三个用户可配置的参数。可根据应用程序的要求相应地配置这些参数。要设置适当的参数,请参阅 EEPROM 仿真 B 型设计 应用说明中的应用方面 部分。选择正确数量的数据项至关重要。关键是根据应用需要存储的变量数量进行选择。如果变量的数量接近数据项的数量,则在更新这些变量的值时会频繁进行转移。如果变量的数量远远少于数据项的数量,则意味着组的大小相对较大,并会在转移、擦除和搜索等操作中花费额外的时间。
建议的标识符数量是最大数据项数的三分之一到一半。
EEPROM_TypeB_write
或 EEPROM_TypeB_eraseGroup
期间断电,则可能会损坏数据。要检测损坏并从中恢复,请执行 EEPROM_TypeB_init
。上电后立即调用 EEPROM_TypeB_init
。EEPROM_TypeB_init
会检查所有组的标头,以确认 EEPROM 仿真的数据存储是否正确。
在 EEPROM 仿真的结构中,标头可显示相应组的状态。一共有四种状态。节 4 中详细介绍了这四种状态之间的变化。
图 6-1 展示了 EEPROM 仿真 B 型 的代码流程图,其中介绍了如何在应用代码中添加函数以实现 EEPROM 仿真。这里需要三个函数:EEPROM_TypeB_init、EEPROM_TypeB_write
、EEPROM_TypeB_readDataItem
,以及 EEPROM_TypeB_eraseGroup
。
总共有六个函数。前四个函数由用户直接调用。最后两个函数由以下函数调用。
EEPROM_TypeB_init
EEPROM_TypeB_write
EEPROM_TypeB_readDataItem
EEPROM_TypeB_eraseGroup
EEPROM_TypeB_findDataItem
EEPROM_TypeB_transferDataItem
以下两个全局变量用于跟踪活动组:
gActiveDataItemNum
;gActiveGroupNum
;gActiveDataItemNum
用于记录数据项的数量。
gActiveGroupNum
用于记录活动组。
有两个全局变量用于表示标志:
gEEPROMTypeBSearchFlag
;gEEPROMTypeBEraseFlag
;当 EEPROM_TypeB_readDataItem
根据输入标识符找到数据项时,会设置 gEEPROMTypeBSearchFlag
。
当组已满且需要擦除时,会设置 gEEPROMTypeBEraseFlag
。
所有全局变量都在 eeprom_emulation_type_b.c
中定义。
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 德州仪器半导体技术(上海)有限公司