原创 EEPROM长效读写

2007-1-9 13:14 4631 8 8 分类: MCU/ 嵌入式

常用的EEPROM24LC04等的使用寿命大概是10万次,这在一些频繁修改存储数据的场合往往不够。一个很自然的想法是以空间换时间,用分块的方式轮流写入。设想在00H单元记录当前数据区首地址,每次根据00H单元内容查找当前数据区,写入后立刻回读比较数据是否相同,若不同则说明存储单元损坏,那么换下一存储区,这样可延长的寿命倍数就是数据块的块数,缺点就是每次需要回读判断比较慢。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


一时想不到其他思路,看看其他人的做法。晓奇的方法是:在一个储存数据区的前面加一个特殊的字节例如:'55',用他表示这个区正在使用,每次写入更换一个区,同时对上一次为'55'的标志字节写入'aa',如果每次写入的数据有5字节则以6字节位一组,整个eeprom内轮流循环写。读数据的时候首先按照n*6做地址搜索'55',要死一起死。这样就无需判断存储单元好坏,轮流写入,不过一个存储单元坏整个EEPROM就报废了。另外每次都要查找当前地址,标志字节修改次数是其他数据的两倍。


如果改进一下在00H单元记录当前数据区首地址,那么就没有这两个缺点了,不过每次都要修改当前数据区首地址,这样00H单元用不了多久的,看来晓奇是为了避免这样的结果才搞的这么麻烦。如果不用每次都换数据区,那么00H单元就没有寿命问题了。综合考虑一下:00H单元记录当前数据区首地址,每次根据该地址读写数据;数据区的首位作为计数器,初始时置为N,每写一次就减一,计到零就重置为N,并修改00H单元,跳到下一数据区,N的取值与00H单元的写次数直接相关,应根据数据区的块数取值;这样一来避免了晓奇方法的两个缺点,也不用每次判断存储单元好坏,当然一个存储单元坏整个EEPROM就报废的木桶效应无法避免。跟第一个方法相比各有利弊,大家看情况取舍吧。

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条