本帖最后由 caizhiwei 于 2021-2-19 09:40 编辑
#申请原创# 首先说明,感谢官方做了一个历程:https://bbs.21ic.com/icview-2966960-1-1.html
AN0002—AT32 MCU如何使用片上Flash来实现EEPROM功能
当前诸多嵌入式应用场景都需要用到 EEPROM 作为非易失性的数据存储设备。出于客户低成本的考虑,AT32 系列部分型号的 MCU 并未搭载片上 EEPROM,但是在此我们将介绍一种使用片上 Flash来模拟 EEPROM 使用的方法,以作为对此应用需求的补充。
本文档将详细阐述在 AT32 系列 MCU 上使用片上 Flash 来模拟 EEPROM 的应用原理和软件使用方法。
Flash 与 EEPROM 的不同
以应用的角度来看,Flash 和 EEPROM 最大的不同在于以下两点:a) EEPROM可以按位(实际应用通常按字节)擦写,Flash需按页进行擦除。b) Flash的页擦除寿命周期大概是10000次,EEPROM的擦除寿命周期更优。针对以上两个大的不同点进行分析,取 EEPROM 易于擦写和高擦写寿命周期的特点来对 Flash 中的存储流程进行优化,以达到 Flash 模拟 EEPROM 的目的。
Flash 模拟 EEPROM 原理
Flash 模拟 EEPROM 的方案综合考虑了操作 Flash 的限制和要求。根据工程应用中 Flash 空间的使用情况和 MCU Chip 型号的不同,在片上 Flash 中找到至少两个 Page 大小的 Flash 未使用区域(地址应 Page 对齐)作为数据的交换存储区,各 Page 存储区按 Page 状态机制进行交替使用,构建的大致模型如下: AN0002—AT32 MCU如何使用片上Flash来实现EEPROM功能
当前诸多嵌入式应用场景都需要用到 EEPROM 作为非易失性的数据存储设备。出于客户低成本的考虑,AT32 系列部分型号的 MCU 并未搭载片上 EEPROM,但是在此我们将介绍一种使用片上 Flash来模拟 EEPROM 使用的方法,以作为对此应用需求的补充。
本文档将详细阐述在 AT32 系列 MCU 上使用片上 Flash 来模拟 EEPROM 的应用原理和软件使用方法。
Flash 与 EEPROM 的不同
以应用的角度来看,Flash 和 EEPROM 最大的不同在于以下两点:a) EEPROM可以按位(实际应用通常按字节)擦写,Flash需按页进行擦除。b) Flash的页擦除寿命周期大概是10000次,EEPROM的擦除寿命周期更优。针对以上两个大的不同点进行分析,取 EEPROM 易于擦写和高擦写寿命周期的特点来对 Flash 中的存储流程进行优化,以达到 Flash 模拟 EEPROM 的目的。
Flash 模拟 EEPROM 原理
Flash 模拟 EEPROM 的方案综合考虑了操作 Flash 的限制和要求。根据工程应用中 Flash 空间的使用情况和 MCU Chip 型号的不同,在片上 Flash 中找到至少两个 Page 大小的 Flash 未使用区域(地址应 Page 对齐)作为数据的交换存储区,各 Page 存储区按 Page 状态机制进行交替使用,构建的大致模型如下:
我把可移植部分拧了出来:
仿真测试:
总结:
说明确实是很好的idea,每个变量只要有虚拟地址,我就能找到它,读eeprom 有点像 python中的对象字典,但是查找算法还有待优化,目前是很傻的while循环中一个一个的找。
代码下载见官方的帖子。
|