EEPROM Library

While the Raspberry Pi Pico RP2040 does not come with an EEPROM onboard, we simulate one by using a single 4K chunk of flash at the end of flash space.

Note that this is a simulated EEPROM and will only support the number of writes as the onboard flash chip, not the 100,000 or so of a real EEPROM. Therefore, do not frequently update the EEPROM or you may prematurely wear out the flash.

EEPROM Class API

EEPROM.begin(size=256…4096)

Call before the first use of the EEPROM data for read or write. It makes a copy of the emulated EEPROM sector in RAM to allow random update and access.

EEPROM.read(addr), EEPROM[addr]

Returns the data at a specific offset in the EEPROM. See EEPROM.get later for a more

EEPROM.write(addr, data), EEPROM[addr] = data

Writes a byte of data at the offset specified. Not persisted to flash until EEPROM.commit() is called.

EEPROM.commit()

Writes the updated data to flash, so next reboot it will be readable.

EEPROM.end()

EEPROM.commit() and frees all memory used. Need to call EEPROM.begin() before the EEPROM can be used again.

EEPROM.get(addr, val)

Copies the (potentially multi-byte) data in EEPROM at the specific byte offset into the returned value. Useful for reading structures from EEPROM.

EEPROM.put(addr, val)

Copies the (potentially multi-byte) value into EEPROM a the byte offset supplied. Useful for storing struct in EEPROM. Note that any pointers inside a written structure will not be valid, and that most C++ objects like String cannot be written to EEPROM this way because of it.

EEPROM.length()

Returns the length of the EEPROM (i.e. the value specified in EEPROM.begin() ).

EEPROM Examples

Three EEPROM examples are included.