这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 延长EEPROM寿命的方法

共2条 1/1 1 跳转至

延长EEPROM寿命的方法

专家
2010-05-12 08:35:29     打赏
       向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);//存放累积量
}



关键词: 延长     EEPROM     寿命     方法     存放    

高工
2010-05-12 12:00:33     打赏
2楼
不错的方法,分块存储,对EEPROM中的所有空间等次数使用

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]