Adesto DataFlash (AT45DB641E) reads zeros after exercising flash for several minutes

flashserial

I am using the AT45DB641B Adesto DataFlash and not in Low Power mode.

In my application I am recording a stream of raw sensor data and constantly writing to flash every second. I have a self-test that is invoked every minute to read back a sentinel from flash to make sure everything is running correctly. However, when I have been running my recording for from between 10 minutes up to 4 hours, at some point the flash would read back all zeros at this sentinel address. This memory address is set once initially and is never modified during the course of the recording.

In my test unit, I exercise heavily erase/program then read back and different set of data and all operations seem to work normally.

I wonder what could possibly cause a flash to read back zeros and that it happens inconsistently.

Best Answer

I presume your test unit uses a different physical chip. There is a huge variability of erase times possible from chip-to-chip and with supply voltage, and different ways of writing/erasing. I also presume you're not writing a file system, because that has a different set of challenges.

But the simplest thing.. are you checking the busy flag before reading the sentinel location? If the chip is in the middle of a page erase it could go off the radar for many (like 35) milliseconds.