Flash retention with E2PROM UM


Question: Do we get the same datasheet specified flash retention while using E2PROM UM.

Answer: The flash endurance specified in the data sheet can be obtained if the Temperature parameter for the bE2Write Function is correctly set.

To write data to the E2PROM, the E2PROM_bE2Write function is used.  The prototype of the function is

char E2PROM_bE2Write(WORD wAddr, BYTE *pbData, WORD wByteCount, char Temperature);

The Temperature parameter is used by the E2PROM API to calculate the flash write pulse width.  At higher temperatures the flash has to be written with a smaller pulse width and at lower temperatures with a longer pulse width.  The flash will meet its maximum endurance and write cycles if it is written with the correct pulse width.  If the device is going to operate within a temperature range of 0 to 50 degrees, it is ok to pass the value of 25 for temperature.  But for operation over the full temperature range, use FlashTemp user module and pass the correct die temperature.  If this is not done, either the data retention or the flash endurance will be compromised.  If the temperature value passed is less than the operating temperature, the flash will be written with a longer pulse width than required.  This will reduce the flash endurance.  On the other hand, if the temperature value passed is higher than the operating temperature, the flash will be written with a lower pulse width than required.  While this does not affect the endurance, the data retention will be less than the guaranteed 10 years. 

For more information, refer to the "Design Aids: Reading and Writing PSoC Flash AN2015" Application Note and a Blog posted on PSoC Hacker "E2PROM User Module - Usage Notes"