Electronic – have more flash (STM32F103RCT6) than what the datasheet says

flashmicrocontrollerstm32

I'm writing a firmware to a STM32F103RCT6 microcontroller that has a flash of 256KB according to the datasheet.

Because of a mistake of mine, I was writing some data at 0x0807F800 that according to the reference manual is the last page of a high density device. (The ref. manual make no distinction of different sizes of 'high density devices' on the memory layout)

The data that I wrote, was being read with no errors, so I did some tests and read/wrote 512KB of random data and compared the files and they matched!

I did some research I couldn't find similar experiences. Are those extra flash reliable? Is that some kind of industrial maneuver?

Best Answer

All MCUs in a family or a family line are made on the very same silicon die. 512KB, and 256KB, and other MCUs are physically the same thing, however when you have 8 million transistors or more, some of them will not work, or will not work reliably, or will not work reliably at a particular temperature, or in the case of flash memory will not retain your information long enough.

Most likely your MCU started its life as a 512KB part, but during manufacturing testing it turned out that only 256KB are reliable across all operating conditions. The manufacturer probably does not have a facility in the chip to disable half of the flash, so only the identification bits are written accordingly and the programmer is expected to obey them.

Another hypothesis: it can be a counterfeit part (512KB) that was rejected from the factory, but someone found that 256KB is "good enough" and relabled it.