2012 05 月文 ID 022893 1 1/18
AN4061
应用笔记
STM32F0xx 微控制器中的
EEPROM 仿真
简介
在工业应用中经常使用 EEPROM电可擦除可编程只读存储器来存储可更新的数据。
EEPROM 是用在复杂系统(例如计算机和其它电子器件中的一种永久(非易失)存储器
存储系统,它可以在电源故障时存储和保留少量数据。
为了降低成本,可以使用特定的软件算法用片上 Flash 替代外部 EEPROM
此应用笔记将介绍使用 STM32F0xx 器件的片上 Flash 通过仿真 EEPROM 机制来取代独立
EEPROM 的软件解决方案。
此仿真至少要使用 Flash 中的两个扇区。EEPROM 仿真代码会在页面填满后在页面之间交
换数据,而且此过程对用户是透明的。
此应用笔记随附的 EEPROM 仿真驱动程序满足以下要求:
提供简单 API 的轻量级实现,这种 API 由初始化、读写数据和降低存储器占用量三种功
能构成。
简单且可轻松更新的代码模型。
对用户透明的清除和内部数据管理。
后台页擦除。
至少需要使用两个 Flash 页,如果需要进行耗损均衡,则需要更多。
www.st.com
目录 AN4061
2/18 文档 ID 022893 1
目录
1 外部 EEPROM 与仿真 EEPROM 之间的主要差异 . . . . . . . . . . . . . . . . . . . 5
1.1 写访问时间上的差异 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 擦除时间上的差异 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 写方法上的相似之处 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 实现 EEPROM 仿真 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 使用实例:应用示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 EEPROM 仿真软件说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 EEPROM 仿真内存占用量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 EEPROM 仿真时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 嵌入式应用的相关信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1 数据粒度管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 耗损均衡:增加 Flash 可擦写次数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1 耗损均衡实现示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 断电时的页头恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4 循环性能和页分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.1 循环性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.2 Flash 页分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5 实时注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17