EEPROM Read Lifetime

The Spark doco says: "The EEPROM emulator allocates 100 bytes of the Spark Core’s built-in flash memory to act as EEPROM. Unlike "true EEPROM, flash doesn’t suffer from write “wear”.

The write performance is great. And my program writes to EEPROM once in a blue moon. So I’m safe.

What about EEPROM “read” lifetime? My program reads from the same 35 bits of EEPROM once each second. Can anyone tell me the estimated lifetime of the EEPROM in terms of number of reads (so I can determine the lifetime of my the Core given my current program behaviour)?

Thanks in advance

The Core doesn’t have a true EEPROM so no need to worry about wear from either write or read.
Additionally, reading an EEPROM doesn’t wear it out, only writing or erasing.

@philipq, @scottm is partially right. Both EEPROM and Flash memory have unlimited READ cycles.

Both EEPROM and flash memory types have WRITE wear issues though. EEPROM, however, has a very high number of rated write cycles as to be considered unlimited. Flash, however, has a lower write cycle lifetime. This is why flash devices (eg. SD cards) use a “wear-levelling” technique to prevent single-cell wear, giving the device a much longer lifespan.

The Core emulates EEPROM by reserving 100bytes of flash memory. At the rate you are writing, wear is not an issue. However, if you were writing at much higher rates, wear would be a concern. The amazing @mdma created a library for the Core’s external flash memory (1 MB) that implements wear-levelling and extending the non-volatile storage a user has access to :smiley:

1 Like

Great. Very reassuring. Thanks very much.

1 Like

is there a number I can use for this read / write cycles other than “very high.”

10K
100K
1,000,000
10,000,000
100,000,000
more.

Just curious. I have an application where I need to track some stuff, this will affect my resolution. I didn’t see this in the datasheet or the EEPROM documentation.

Thanks

I don’t think so since it’s not a hard limit.

But figures to consider are that manufacturers state a guaranteed minimum of I think 10K to 100K (see STM32F app note) and since @mdma has conjured up a wear leveling algorithm which will add several grades of magnitude to it, you should be safe to write once a minute for quite some time.

I would not go a lot higher in frequency if you are writing to EEPROM on a regular basis.

@jerome, you may want to consider I2C or SPI FRAM memory which has no wear issues.


Fujitsu does make a 2Mbit SPI version (1Mbit I2C) yeilding 256KB of available storage. :smile: