EEPROM Readability – Best Practices for Long-Term EEPROM Readability


What is the best strategy if I have a static value that I want to store in EEPROM once and then be able to read it as far into the future as possible?

Is it better to write it one time and never write to it again, or is it better to periodically (like once per decade) re-write the the value back to the EEPROM to "refresh" it?

Speaking here about modern EEPROM, specially on-board an ATXMEGA which is rated for 100,000 cycles/100 year retention at 25C.

Asked differently, is that 100 year retention specification from the time the the EEPROM is first written to, or from the time the EEPROM was most recently written to?

Best Answer

1) Use a forward error correction system which offers to recover from multiple missing bits. Distribute the FEC data across different blocks in the EEPROM.

2) Keep at least two whole separate copies to allow re-writing.

2) Periodically re-read and check for any bit errors. Re-write damaged bits. If they don't re-write cleanly, report an error (how? to whom?)

4) Pay huge attention to your board design and part selection; watch out for rotting capacitors etc.

5) You might want to consider "single event upset" (SEU) rates in the processor: while this is normally only a consideration for aerospace, you're running the thing for much longer.

EEPROMS are floating charge devices. They do leak over time, so I think the retention is from the most recent write cycle.