# Initial data values of FRAM devices

I've got an FM25L16 FRAM part in a board design.

For a new part from the manufacturer, what are the initial data values? All 0x00, or all 0xFF, or other? I can't see any documentation of that in the datasheet I've got.

• I'd recommend not assuming. Just initialize. – jonk Jun 12 '19 at 6:58

FRAM does not need a pre-erase cycle like FLASH based memory. The default value is undefined unless the manufacturer specifies otherwise.

You should always initialize the memory before use.

Usually the storage format considers the values 0x00 and 0xFF to be invalid, to prevent accepting the erased state of any memory as correct value.

If memory is reliably initialized to some value, then that would be a feature a manufacturer would most definitely put in their data sheets.

If it's not in the data sheet, it's not something that a manufacturer will guarantee (and which might either simply never be the case, or subject to change at no notice, e.g. when the memory testing routine changes).

If it's not guaranteed to be in a certain state, you can't rely on it being in a certain state, and would just have to initialize it yourself.

Unless you're in a very power-constrained environment, this isn't a bad thing. You don't have to do that initialization as a production step! Instead:

I assume you're going to attach that memory to some microcontroller. Simply reserve some specific memory area to contain an "unlikely" value – for example, just 4 random bits that you hardcode into your MCU firmware. Your microcontroller reads that area, and if these bytes are there, it knows, the memory is initialized. If it's not, it initializes it – since the datasheet promises "no wait states during writes", and the thing supports SPI at 20 MHz, initializing the whole 2048 B would take about 0.1 ms.