EEPROM 如何延长寿命,求意见与方法
请问 各位,如何延长EEPROM 的寿命,求方法与意见~ 减少读写次数,仅在掉电时写入数据 使用铁电吧,这个次数多还可靠 做个有效的指针位,为写坏的EEPROM作标记,类FAT表 每个单元都有100万次的擦写寿命,你确定你能在一个位置写100万次?磨损均衡,用容量换寿命~ error_dan 发表于 2014-2-11 10:45
磨损均衡,用容量换寿命~
磨损均衡有相应的算法吗 请问 尽量不要在一个地方老是写,可以设一个指针循环写。 少用,
均衡使用 WXF_mabg 发表于 2014-2-11 13:07
磨损均衡有相应的算法吗 请问
STM32应用笔记中有一个算法。用内部FLASH的。 网上转的
向EEPROM种写入数据实际上是一个烧写的过程,对EEPROM具有一定的破坏性,因此一个EEPROM单元的擦写的次数是有限的。具体的擦写次数视不同厂家、不同系列的芯片决定。Microchip公司的PIC16F876A内部EEPROM的擦写次数为100万次(数据文档记录),对于一些不需要频繁改变的参数而言完全满足需求,但是当用在固定的4字节存放流量的积累时,是不能满足要求的。因为,在综合考虑各种因素后,如果要求流量计在运行时每10s存放1次累积量,则EEPROM能安全运行1*1000000/(360*24)=117天,不能满足要求,必须采用一定的方法延长EEPROM的寿命。
我采用的方法是在EEPROM中开辟一段空间滚动存放累积量,具体实现的方法是:将EEPROM中地址0--160的单元滚动存放累积量,每4字节为一组,共40组,每组连续存放50次(根据需要改动),然后再一组中存放。当第40组连续存放50次后,再回到第一组开始存放。由于全局变量Savetime记录在某一组连续存放的数据,EEPROM中的地址为0单元用于存放当前累积量有效值所在组的首地址,当某一组连续存放50次,滚入下一组时更新存放地址的值,实现函数如下:
void ee_Cumulation_write(double data)
{
SaveTime++;//同一组位置连续存的次数
if(SaveTime>50)
{
SaveTime=0;
SaveAddr+=4;//转到下一组位置
if(SaveAddr>157) SaveAddr=1;
eeprom_write(0,SaveAddr);//EEPROM位置0存放当前累积量的首地址
}
ee_double_write(SaveAddr,data);//存放累积量
}
如果8K的EEPROM,而只用1K,那么8个块循环写。EEPROM中记录读写的次数。
暂时用不上,平时就存在点参数,写次数完全够用 根据数据块的大小循环变换位置写 学习了··· 方法正确 延长不了的
这是由于它的硬件结构决定的
坏了就换
反正便宜的很
呵呵 学习了! 只是用在没有危险的消费电子产品中,暂时没有考虑过这个问题。学习了。 确实没考虑过,先学习了 与其竭尽全力研究平衡算法,不如使用SRAM,读写次数无限制。掉电保存的话使用一颗锂电池就可以维持了。 mark
页:
[1]