在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8476|回复: 33

[资料] 如何提高FLASH的擦写次数

[复制链接]
发表于 2011-2-19 11:06:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

如何提高FLASH的擦写次数

在实际应用中,用户经常需要在程序运行过程中保存或读取一些数据,这些数据在工作中经常会变化,而且掉电后也不能丢失,所以需要及时地进行存储,存储这些数据常用的存储器是EEPROMHXM6002虽然本身不带EEPROM,但是它支持自编程技术,可以利用FLASH来模拟EEPROM,这样不仅简化了设计,而且降低了成本。

一般情况下,FLASH都是以2n次方为一页,在执行擦除指令时,一次最少要擦除一页的数据。FLASH支持单字节读写,但每次在更新数据前都必须先擦除原数据,然后才能重新写入数据,而不能在原数据基础上更新内容。

HXM6002模拟EEPROMFLASH每页为512字节。在实际应用中,即使只需要存储少量的数据,如32字节的数据,也必须以512字节来模拟EEPROM。最简单的存储方法是,在每次更新数据前执行擦除指令,然后写入新数据。该方法适用于更新数据频率不高的应用场合,因为HXM6002的擦写次数典型值为1000次。对于更新数据频率较高的应用场合,如需要1万次的擦写次数,就需要采用“空间换时间”的方法了,擦写的次数和存储数据的大小成反比。所谓“空间换时间”,是指利用相对多的代码空间来换取相对多的擦写时间(次数)。即在一页内,可以依次将数据写入FLASH,当写满一页后,再全部擦除,比如存储32字节的数据块,一页就可以写16个数据块,写满后再全部擦除,这样该页的擦写次数就可以提高15倍,即1.6万次。

下面以32字节的数据块为例,来简要说明“空间换时间”的软件实现方法。首先需要选取数据块中的某一字节作为地址INDEX,更新数据时第一个写入FLASH,该字节必须满足任何时候都不能为FFH,否则会发生错误。

1)保存数据:每次保存数据时,从地址到地址依次(以32为步进)判断INDEX的内容。如果为FFH,表示该地址空间未写过数据,写入需要更新的数据;如果不为FFH,表示该地址空间已写过数据,继续查询;如果所有的INDEX16个)都不为FFH,表示该页已经写满,执行擦除指令后从首地址写入数据。

2)读取数据:每次读取数据时,从地址到地址依次(以32为步进)判断INDEX的内容,这是为了查询到最新的数据。如果不为FFH,表示该地址已写过数据,读取数据;如果所有的INDEX16个)都为FFH,表示该页还未写入数据。

前面提到,每次在更新数据前都必须先擦除原数据,然后才能重新写入数据,而不能在原数据基础上更新内容,这并不是绝对的。根据FLASH写操作的特性,只能将‘1’写成‘0’,而不能将‘0’写成‘1’。而1Byte=8Bit,所以,如果每次只是写1比特为‘0’,则一个字节可以写8次。例如,第一次写第0位为‘0’,第二次写第1位为‘0’,……,第八次写第7位为‘0’。在实际应用中,也可以利用该特性,来获取更多的擦写次数。




发表于 2011-2-19 21:28:15 | 显示全部楼层
good information
发表于 2011-2-28 17:09:13 | 显示全部楼层
不错,很好
发表于 2014-8-31 08:28:08 | 显示全部楼层
谢谢 !!!!!!!!
发表于 2014-10-24 09:48:15 | 显示全部楼层
好像一般的FLASH擦写次数都用不完把
发表于 2014-10-24 14:28:23 | 显示全部楼层
mark!
赚钱走人。
发表于 2014-10-25 09:10:16 | 显示全部楼层
学习了,
谢谢楼主。
发表于 2014-10-25 21:21:29 | 显示全部楼层
回复 1# speedUp


    谢谢共享
发表于 2014-10-27 11:10:47 | 显示全部楼层
Nor Flash可以byte by byte program啊
mcu都是nor的吧
发表于 2014-11-5 09:58:02 | 显示全部楼层
回复 1# speedUp


    好想法,试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-2-7 14:58 , Processed in 0.025441 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表