怎样延长EEPROM寿命的方法?
我用M8的EEPROM存储2计数值,请问一下如何延长EEPROM寿命? 少用!这是唯一的办法。如果有人跟你说循环改变存储地址神马的都是浮云。 回复【1楼】colorwolf少用!这是唯一的办法。如果有人跟你说循环改变存储地址神马的都是浮云。
-----------------------------------------------------------------------
还真是这样,EEPROM的寿命就是写入次数,写入次数少寿命就长。
如果写入字节少,软件上你可以经常换地方写,寿命会更长,我做过一个汽车仪表就是这么做的,有效果。 你换地址写容易,但你为了能找到它是不是要做个地址指针写在EEPROM一个固定的位置?还不是数据改一下地址指针也要改一下?若干万次后地址指针不就是先OVER了,地址指针OVER了不就等于你整个EEPROM都OVER了? 值得讨论 回复【3楼】colorwolf
你换地址写容易,但你为了能找到它是不是要做个地址指针写在eeprom一个固定的位置?还不是数据改一下地址指针也要改一下?若干万次后地址指针不就是先over了,地址指针over了不就等于你整个eeprom都over了?
-----------------------------------------------------------------------
1.如果数据量不大的话,可以把EEPROM的值都读出来然后再找数据的位置.这样可以不需要地址指针
2.实现将EEPROM分成若干个区,第一次上电是读区的首地址即可,类似增加地址指针的数量可以有效增加地址指针的寿命. 需要多久的寿命呢? EEPROM?正如楼上几位所说,神马都是浮云啊。跟使用次数有关。 eeprom 100万次的寿命 已经很长了,一般做 configuresave可以用 一辈子。
如果经常要写入,是 应该考虑 换 方案 ,用ram 不好吗?
eeprom 尽量少用就对了 因为计产品使用次数,eeprom 100万次的寿命,一天1W次,这样算100天就不能用了,看看5楼朋友方法可能能用吧。 我有个项目用spi Flash保存数据,一秒保存一次。Flash一般是10万次,比EEProm还小,但我做到了,并且可以用100年。
做法是:
当然是打一枪换一个地方,当然不能保存指针,每个数据都包含一个标志,这个标志可以用来区分已写区、未写区和坏区。
上电时根据标志来找到地址最高的已写区就是最近写入的数据,将此地址作为指针保存于RAM中,以后每写入一次数据都从
此指针指向的地址开始写,写完后增加此指针使其指向空区(这样就不用每次写入都要找最新数据的地址)。 用铁电好了。以后生产铁电的厂家会多起来,现在富士通也在生产铁电了。厂家多了价格自然会下来。上次无聊,测试了下CAT24C64和rohm的24G64,对同一个地址写00和AA,分别为2000万次和1500万次左右。这个是在3.3V系统和室温下测试。 回复【9楼】ykr1
因为计产品使用次数,eeprom 100万次的寿命,一天1w次,这样算100天就不能用了,看看5楼朋友方法可能能用吧。
-----------------------------------------------------------------------
设备经常断电么?1天1W次。。。。为啥不存在RAM里? 换铁电,楼上测试几千万次的是不是电压用高了?按理说铁电的寿命远不止这个数。或者电池+ram。eeprom是连想都不用想,绝对满足不了你要求。不过话说你要干嘛啊,一天1w次。。。。。。 回复【12楼】 huayuliang 花生
复【9楼】ykr1
因为计产品使用次数,eeprom 100万次的寿命,一天1w次,这样算100天就不能用了,看看5楼朋友方法可能能用吧。
-----------------------------------------------------------------------
设备经常断电么?1天1W次。。。。为啥不存在RAM里?
设备不经常断电,但要做个断电检测电路写入ROM中,才能保证下次上电计数值正确. 不常断电 RAM+断电检测+EEPROM.
几秒钟断一次电(不知道这是啥应用了....): RAM+大电容(或后备电池)+断电检测+EEPROM. 我做了个50W次后更改下一存储地址来延长EEPROM寿命,理论上是可以,不知实际中如何,正在测试中,谢谢回复。 掉电检测+小电池这样可以了吧! 回复【13楼】eggcar 八号机
换铁电,楼上测试几千万次的是不是电压用高了?按理说铁电的寿命远不止这个数。或者电池+ram。eeprom是连想都不用想,绝对满足不了你要求。不过话说你要干嘛啊,一天1w次。。。。。。
-----------------------------------------------------------------------
不好意思,没说清楚,我后面的说的是测试普通EEPROM的寿命。 追求极致是我们的追求,但不要山寨了。 回复【2楼】yuanye1127 初学嵌入式
-----------------------------------------------------------------------
2楼说的打一枪就换一个地方,这个方法应该很有用,我做了一个小板能正确的读出写入的数据,就用了这个方式。
下面我贴出原理图与测试源代码,请大家鉴定。
http://cache.amobbs.com/bbs_upload782111/files_41/ourdev_650410YPMJFB.jpg
(原文件名:sch.jpg)
http://cache.amobbs.com/bbs_upload782111/files_41/ourdev_650411BO10RK.jpg
(原文件名:原理.jpg)
点击此处下载 ourdev_650248L8SQ2W.rar(文件大小:3K) (原文件名:源代码.rar)
eeprom原理说明:
1、读取的时候,读0x01到0x7f(127)位置的EEPROM数据,一次读两个出来,找出相差值为4的位置,锁定k+2的值,
再用(k+2)+256取第二个数,用(k+2)+128取第一个数。
2、存储的时候,读0x01到0x7f(127)位置的EEPROM数据,一次读两个出来,找出相差值为4的位置,锁定k+1的值,
把k+1位置里的数加2,用(k+1)+256存第二个数,用(k+1)+128存第一个数。
当k+1,k+2不在1~127的中间的时候,要特别处理一下,源程序里面已经这样做了。 这个多个位置存储的应用,可以修改存储单元为255、63、31、15等。
这个存储方式有很大的浪费,程序中为了存2byte的数据,用掉了381byte的eeprom。 这个要顶一下 首先擦除整片,然后就整片分成若干个等大的区域,第一次写入第1个区域,开始是引导头数据后面跟有效数据,以后每次再写的时候先查询引导头数据在哪个区域,然后擦除这个区域,再将数据写向下一个区域,如果到了片末,再返回到片头,如此即可无需地址指针。缺点是每次重新上电查询引导头数据可能需要耗费一些时间,但在程序运行时由于有变量已经存储了上一次写数据的地址,因此很容易找到下一个要写的区域。 本帖最后由 sjx000000 于 2015-5-9 14:46 编辑
colorwolf 发表于 2011-3-30 17:08
你换地址写容易,但你为了能找到它是不是要做个地址指针写在EEPROM一个固定的位置?还不是数据改一下地址指 ...
可以打500(N,N一般取EpRoM容量/存数据个数)枪换心,换个地方,打枪次数用RAM存,每换地方存个地址。读写都是那个地址(RoM存)。相当于寿命提了5oo(N)倍 铁电的flash可以写100亿次 打一枪换个地方
页:
[1]