编程技术分享平台

网站首页 > 技术教程 正文

FLASH 模拟 EEPROM

xnh888 2025-02-11 14:01:47 技术教程 23 ℃ 0 评论

1. 简介

FLASH 和 EEPROM 都是非易失性储存器,在掉电后数据还会保留。FLASH 和 EEPROM 最 大的区别是擦除方式不同,EEPROM 可以按字节进行擦除,但 FLASH 最小擦除单位是页,一 页通常包含多个字节甚至几 K 字节。FLASH 和 EEPROM 擦写属性决定了 EEPROM 容量小 但擦写寿命比较高,而 FLASH 容量非常大,但擦写寿命短。 在 MCU 主频高的情况下,可以采用 FLASH 模拟 EEPROM 来降低成本。

本文介绍了一种采 用 FLASH 模拟 EEPROM 的方法,实现了 EEPROM 按字节进行数据修改,可防止复位或掉 电产生的数据丢失,当采用的 FLASH 存储空间越大,EEPROM 性能越好。

2. EEPROM 备份区结构

本文以63页DATA FLASH模拟2K字节EEPROM来介绍FLASH模拟EEPROM的方法。

2.1. GD32A50x FLASH 简介

GD32A50x提供高达384KB片上FLASH,其中bank0 256KB,bank1 128KB。基地址和大小如 表2-1. 384KB闪存基地址和大小所示。

2.2. EEPROM 数据备份结构



3. FLASH 模拟 EEPROM

方案 3.1. 算法实现

3.1.1. 参数宏

3.1.2. API 函数

函数 eeprom_init 函数 eeprom_init 用于初始化 EEPROM 备份区,并获取当前正在用于 EEPROM 备份的 FLASH 页相对编号。





函数 eeprom_write

函数 eeprom_write 用于索引当前可写的地址,并将数据写到对应 FLASH 地址。注意该函数 的入参 ee_addr 是模拟 EEPROM 地址,范围为 0-135。

表 3-3. EEPROM 写函数



3.1.3. 测试结果

测试在 EEPROM 中改写第一个字节共 16 次。写入数据如图 3-1. 读写数据所示。


代码如表 3-5. 测试 demo 所示。


测试结果如图 3-2. EEPROM 备份区数据所示

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表