返回首页
当前位置: 主页 > 互联网技术 > 网络安全 >

如何增加EEPROM的擦写次数

时间:2014-01-09 01:00来源:电脑教程学习网 www.etwiki.cn 编辑:admin

目前在做的一个应用,为了保证设备断电重启后连不上网络依然能维护时间,因此将UTC时间保存到EEPROM重启后读出。

考虑到EEPROM的擦写次数有限,因此需要一定的机制避免写坏。而保存的频率越高间隔越短,则重启后不能联网时获取的时间误差越小,精度越高。

目前使用的SOC芯片内的EEPROM擦写次数在比较高的温度下(85°)竟然只有5万次,这远远不能达到项目的需求,因此需要想办法增加擦写次数。

Atmel128RFA1/256RFR2片内的EEPROM擦写次数为:
The endurance of the entire data memory (EEPROM) is
• 125°C – 20,000 Write/Erase cycles
• 85°C – 50,000 Write/Erase cycles
• 25°C – 100,000 Write/Erase cycles

芯片是固定的,没办法更改,物理性能已经确定,只能在使用上想办法增加擦写次数。

于是想到一个简单的办法,牺牲空间来换时间,通过使用更多的EEPROM空间来换取更久的使用时间,方法很简单,就是把原本存取一个位置的数据使用更多的位置来存储,轮番存取各个位置,使擦写次数分散。

按照10年使用寿命,85°环境,每天运行12小时计算,如果重复读写一个位置保证不写坏,则读写的间隔为10*365*12*3600/50000,即约3153秒写一次。

因此采取使用多个位置轮换读写的方案,这样可以扩展EEPROM的寿命。因此在EEPROM内保存如下结构:

当前使用的block

Block1擦写次数

Block1数据

Block2擦写次数

Block2数据

   

这样,如果使用到200个block则可以在15秒写一次的情况下不至于将EEPROM写坏。

在代码中,现在采取200个block,每20秒保存一次时间,可使EEPROM使用寿命延长到十年以上,如果需要更久的寿命,则可以使用更多的block。

------分隔线----------------------------
标签(Tag):EEPROM
------分隔线----------------------------
推荐内容
猜你感兴趣