没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
2011 年 10 月文档 ID 022108 第 1 版 1/20
AN3969
应用笔记
STM32F40x/STM32F41x 微控制器中的 EEPROM 仿真
简介
在工业应用中经常使用 EEPROM(电可擦除可编程只读存储器)来存储可更新的数据。
EEPROM 是用在复杂系统(例如计算机)和其它电子器件中的一种永久(非易失)存储器
存储系统,它可以在电源故障时存储和保留少量数据。
为降低成本,外部 EEPROM 可以用 STM32F40x/STM32F41x 的以下功能之一替代:
● 片内 4 KB 备份 SRAM
● 片内 Flash,具有特定软件算法
STM32F40x/STM32F41x 具有 4 KB 备份 SRAM,当主 VDD 电源断电时,可通过 VBAT 电源
为该 SRAM 供电。
借助 CPU 频率下的高速访问(通常在用电池供电的应用中)优势,只要 VBAT 存在,此备份
SRAM 就可以用作内部 EEPROM(不带任何附加软件)。
但是,当备份 SRAM 用于其它目的并且/或者应用不使用 VBAT 电源时,片内 Flash(具有特
定软件算法)可以用于仿真 EEPROM 存储器。
本应用笔记介绍了使用 STM32F40x/STM32F41x 器件的片上 Flash 通过仿真 EEPROM 机制
来取代独立 EEPROM 的软件解决方案。
要实现这种仿真,至少要使用 Flash 中的两个扇区。EEPROM 仿真代码会在扇区填满后,
以对用户透明的方式交换数据。
此应用笔记随附的 EEPROM 仿真驱动程序满足以下要求:
● 提供简单 API 的轻量级实现,这种 API 由初始化、读写数据和降低存储器占用量三种功
能构成。
● 简单且可轻松更新的代码模型
● 对用户透明的清除和内部数据管理
● 后台扇区擦除
● 至少使用两个 Flash 扇区,如果需要进行耗损均衡,则需要更多
要仿真的 EEPROM 大小可在扇区大小的限制范围内随意调整,并允许 EEPROM 使用扇区的
最大空间。
www.st.com
目录 AN3969
2//20 文档 ID 022108 第 1 版
目录
1 外部 EEPROM 与仿真 EEPROM 之间的主要差异 . . . . . . . . . . . . . . . . . . . 5
1.1 写访问时间上的差异 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 擦除时间上的差异 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 写方法上的相似之处 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 实现 EEPROM 仿真 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 使用实例:应用示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 EEPROM 仿真软件说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 EEPROM 仿真内存占用量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 EEPROM 仿真时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 嵌入式应用的相关信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1 数据粒度管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 耗损均衡:增加 Flash 可擦写次数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1 耗损均衡实现示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 断电时的页头恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 循环性能和页分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.1 循环性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.2 Flash 页分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5 实时注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
文档 ID 022108 第 1 版 3/20
AN3969 表格索引
3
表格索引
表 1. 外部 EEPROM 与仿真 EEPROM 之间的差异. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
表 2. 仿真页可能的状态和相应操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
表 3. STM32F40x/STM32F41x Flash 扇区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
表 4. API 定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
表 5. EEPROM 仿真机制的内存占用量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
表 6. 系统时钟为 168 MHz 的 EEPROM 仿真时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
表 7. Flash 编程函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
表 8. 应用设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
表 9. 文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
图片索引 AN3969
4/20 文档 ID 022108 第 1 版
图片索引
图 1. 在 page0 与 page1 之间切换的头状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
图 2. EEPROM 变量格式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
图 3. 数据更新流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
图 4. WriteVariable 流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
图 5. EEPROM 仿真的 Flash 占用情况(机制和存储) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
图 6. 四页的页交换机制(耗损均衡) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
剩余19页未读,继续阅读
资源评论
chenguolun
- 粉丝: 0
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功