admin 发表于 2019-8-20 09:13:12

HT32 EEPROM 模拟


简介
本文介绍了使用 HT32 系列微控制器的嵌入式 Flash 内存来模拟 EEPROM 的软件方法。

外部 EEPROM 是一种非挥发性储存器,通常以 byte、half-word 或word 为单位来写入数据,在许多嵌入式应用中常被使用。将数据写入 EEPROM 很简单,可以连续对同一个内存地址 写入新值,不像 Flash 内存,还需要穿插擦除操作才能完成。

对于一些使用嵌入式 Flash 内存的微控制器,其应用只有很少的信息需要保存在 EEPROM 中。在这种情况下,使用软件模拟 EEPROM,可以减少一些外部芯片、元件和 PCB 空间来降低系统成本。


主要差异
EEPROM 的写入/擦除次数高于 Flash 内存,但 Flash 内存的访问时间比 EEPROM 快。此外, Flash 内存需要穿插擦除操作才能完成数据覆写。外部 EEPROM 和嵌入式 Flash 内存之间的主要差异如表 1 所示。



外部 EEPROM (HT24LC64)
嵌入式 Flash 内存(HT32 系列)
写入时间
5ms
字编程时间:40μs

擦除时间
N/A
页/整片擦除时间:20ms

写入/擦除次数
10,000K
20K

表 1   EEPROM 和Flash 内存之间的差异
外部 EEPROM 和模拟 EEPROM 的写入方法也不同。对于外部 EEPROM,CPU 复位不会中断写入操作,只有断电才会造成数据的丢失。对于模拟 EEPROM,CPU 复位和断电都将中断写入操作。产品应用的系统设计师应分析这些差异,决定异常发生时的处理程序。


使用寿命问题
虽然 Flash 内存的使用寿命比 EEPROM 短,本文件中所述的软件方法可以通过平均分散 Flash
内存页面的写入/擦除次数,提高模拟 EEPROM 的使用寿命,达到 1,000K 次。




实施

方法
EEPROM 模拟至少需要两个相同大小的 Flash 内存页面来储存非挥发性数据。一个页面最初 处于 ACTIVE 状态,提供应用程序读取和写入有效数据。另一个页面处于 ERASED 状态,在 ACTIVE 页已满时接替它。每个页面都有三种可能的状态:




图 3   模拟 EEPROM 的操作流程
数据格式
模拟EEPROM的数据格式是由一个16位的数据索引和一个16位的数值所组成。每笔写入的资料是依次放置的。连续写入相同索引的数据不会覆盖原来的数据,但会附加上去。扣掉用来记录页面状态的32位,以一个1KB的Flash内存页面为例,总共可容纳255笔16位的数据直到页满。

操作流程
下图显示了模拟EEPROM的操作流程。在本例中,会写入四个不同索引值的数据,不包括0xFFFF。



数据格式的位长度
上述例子中的数据格式是 16/16 位的数据索引和数值。根据应用程序的不同需求,可以调整 数据格式的位长度。例如:8/8 位,8/24 位或 32+32 位数据索引和数值。

初始化和错误回复
在断电发生后,应考虑 EEPROM 模拟软件的初始化和错误回复。上电后,初始化函数应该在任何数据被写入或从模拟 EEPROM 读取之前运行。当断电导致页面状态或数据异常,初 始化函数必须先修正这些问题。



Page 1
ERASED
TRANSFER
ACTIVE





Page 0

ERASED
[无效]TODO:擦除两个页, page 0 设为 ACTIVE[有效]TODO:擦除 page 0, page 1 设为 ACTIVE[有效]TODO:擦除 page 0, page 1 设为 ACTIVE

TRANSFER
[有效]TODO:擦除 page 1, page 0 设为 ACTIVE[无效]TODO:擦除两个页, page 0 设为 ACTIVE[有效]TODO:重做转移到 page 0,擦除 page 1

ACTIVE
[有效]TODO:擦除 page 1, page 0 设为 ACTIVE[有效]TODO:重做转移到 page 1,擦除 page 0[无效]TODO:擦除两个页, page 0 设为 ACTIVE
表 2   有效页面状态和无效页面状态




擦写循环能力
擦写循环能力取决于应用程序使用的数据量/大小,模拟 EEPROM 的寿命是有限的,由最频繁写入的数据的更新速率决定。

在这个例子中使用了两个 1KB 页面,写入 16/16 位的数据索引和数值。最大的写入/擦除次 数可达 10,200K(2 页面×20K 次×255 笔数据)。对于一个使用 4 个数据的应用程序,每个数据的更新速率是 20 次/小时,它的寿命是127,500 小时,也就是 14.55 年。如果使用四个页面来模拟 EEPROM,寿命将是双倍。


zm2020 发表于 2019-9-25 13:28:04

感谢分享,Cool:):):)

johnny968 发表于 2020-2-1 15:38:27

感谢分享,正好有这个需求

allan-001 发表于 2020-3-22 15:41:21

感谢分享,使用寿命是一個问题
页: [1]
查看完整版本: HT32 EEPROM 模拟