关于EEPROM循环使用的方法

2019-07-21 05:53发布

各位大侠,高手们
     最近遇到一个问题,写了一个程序用EEPROM存放数据,
     数据量不大但是一天内可能写的次数在20次左右。为了尽量提高使用寿命
     我想使整片EEPROM循环使用起来,但那样搜索范围变的比原来大很多了
     所以想将EEPROM分成块来使用,还是没想出来分块后具体怎么使用
      最近一直没想到一个好的方法,所以想请教一下各位大侠是怎么处理的?
    
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 09:50
用一个地址X(存放在eeprom)存储当前使用的EEPROM地址,每次上电,先读取X的值,然后读写都在X指向的地址操作,每次写完读一次,进行校验,如果校验正确,说明没写坏,如果不一致,说明本地址已经报废,写入下一个地址,并将新地址值写入X,如此,即可最大程度的使用EEPROM了...
shihantu
2楼-- · 2019-07-21 14:12
 精彩回答 2  元偷偷看……
shihantu
3楼-- · 2019-07-21 18:57
回复【2楼】正点原子:
---------------------------------
这个方式有一个隐患,存储器失效并不是瞬时表现的,它本身表现为存储寿命的下降.

典型EEPROM的存储寿命是10yrs,擦除次数是100k,意思是厂家保证在100k次的擦写操作后,存储单元仍能保证有10yrs的存储寿命.

所以,通过1s内的存储寿命验证并不能确保数据的可靠性,网上有些所谓的"经过n*100*标称周期的擦写,仍能正确读出数据,所以这个这个参数可以放心过度使用"的"测评"本身是不全面的.
yangbo18416
4楼-- · 2019-07-21 23:11
正点原子 发表于 2013-3-10 00:16
用一个地址X(存放在eeprom)存储当前使用的EEPROM地址,每次上电,先读取X的值,然后读写都在X指向的地址操作, ...

万一存储地址的 块坏了怎么弄呢?还有怎么知道读出来的数据是可靠的?
半旧
5楼-- · 2019-07-22 00:49
正点原子 发表于 2013-3-10 00:16
用一个地址X(存放在eeprom)存储当前使用的EEPROM地址,每次上电,先读取X的值,然后读写都在X指向的地址操作, ...

大佬你好,请问这个地址X是怎么把EEPROM后面的所有地址都指向的呢...单片机小白的疑问
林光华ing
6楼-- · 2019-07-22 06:26
原子的方法挺好。
意思是设置地址区与数据区。比如地址区是首地址0,数据区是除了首地址所在扇区的其他扇区。地址区存储数据所在地址。每次存取数据之前,首先读地址区,查找(获取)数据所在位置。而如果想写数据,则需要先写后读,判断此数据是否还完好。如果不完好(此扇区坏了),就更改地址,同时要把地址记录在地址区。
此方法,一般来说,在地址扇区损坏之前,
数据扇区早已损坏完了。所以不必担心假如地址区坏的问题。。。(真担心那就把地址区扩大,也是写后读取,验证是否坏块。)
因为数据扇区损坏一次,地址扇区才会写一次。一个EEPROM能有多少个扇区?100K的擦除次数,代表100K个扇区,每个扇区4K,那是1.5GB了。那么大,基本都用TF卡了吧。


一周热门 更多>