Closed jerabaul29 closed 2 years ago
Most of your answers are in the datasheet. Unfortunately Ambiq has done something dumb with their registration wall before you can get the datasheet so I can't get the latest Apollo3 datasheet, here's the old one:
But I can get the Apollo3 Blue Plus (basically same core, more memory):
Depending on the EEPROM you want to compare to, these are all similar numbers except the 10,000 write cycles. In comparison, the 'real' EEPROM in ATmega328 is rated for 100k cycles but I found it would last 16 times that amount (see Flash Thrasher).
I cannot immediately find a spec for flash write time. I know I've read it before (bootloading timing) so it's probably buried in a different app note. This too might be a difference of concern for you as Apollo erases and re-writes entire pages of memory whereas an EEPROM can write to a given location. If you're using the EEPROM library in the core, its transparent, and I suspect similar in write times, but I can't confirm without the flash write time specs.
I use emulated EEPROM on a variety of devices (ESP32, Apollo3, etc) and have not found a major drawback. Unless you're logging a new value to EEPROM every second or something (don't do that, use SD instead), you should never get near the 10k write cycle limit; using the internal flash for user settings (or other slowly changing data) is perfectly fine.
I have a few questions about the "EEPROM emulation" (really, non volatile memory using the Flash memory instead of the volatile RAM).
I am a bit in doubt in a project if I want to either use the flash through "EEPROM emulation" as a non volatile memory, or if I would be better off adding an external FRAM breakout. Any advices / thought / perspective on that? :) .