合泰技术论坛-合泰社区论坛

 找回密码
 立即注册-holtek

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 758|回复: 1

HT32 EEPROM 模拟

[复制链接]

41

主题

72

帖子

1813

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1813
QQ
发表于 2019-8-20 09:13:12 | 显示全部楼层 |阅读模式
合泰开发板

简介
本文介绍了使用 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 页已满时接替它。每个页面都有三种可能的状态:

1.png


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

3.png

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

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

  
  
  
Page 1
  
  ERASED
  
  TRANSFER
  
  
ACTIVE
  
  
  
  
  
  
  Page 0
  
  
  ERASED
  
  
[无效]
  
TODO:擦除两个页, page 0 ACTIVE
  
  
[有效]
  
TODO:擦除 page 0page 1 ACTIVE
  
  
[有效]
  
TODO:擦除 page 0page 1 ACTIVE
  
  
  TRANSFER
  
  
[有效]
  
TODO:擦除 page 1page 0 ACTIVE
  
  
[无效]
  
TODO:擦除两个页, page 0 ACTIVE
  
  
[有效]
  
TODO:重做转移到 page 0,擦除 page 1
  
  
  ACTIVE
  
  
[有效]
  
TODO:擦除 page 1page 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,寿命将是双倍。






上一篇:HT8 MCU LVD/LVR 应用须知
下一篇:HT66F0185定时器中断代码
回复

使用道具 举报

0

主题

3

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2019-9-25 13:28:04 | 显示全部楼层
合泰开发板
感谢分享,Cool
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册-holtek

本版积分规则

公告:

QQ|Archiver|手机版|黑名单|合泰论坛

GMT+8, 2019-12-8 03:28 , Processed in 0.145180 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表