Flash program memory and data EEPROM RM0016
48/449 Doc ID 14587 Rev 8
Block operations can be performed both to the main program memory and DATA area:
● In the main program memory:
Block program operations to the main program memory have to be executed totally
from RAM.
● In the DATA area
– Devices with RWW capability: DATA block operations can be executed from the
main program memory. However, the data loading phase (see below) has to be
executed from RAM.
– Devices without RWW capability: Block program operations must be executed
totally from RAM.
There are three possible block operations:
● Block programming, also called standard block programming: The block is
automatically erased before being programmed.
● Fast block programming: No previous erase operation is performed.
● Block erase
During block programming, interrupts are masked by hardware.
Standard block programming
A standard block program operation allows a whole block to be written in one shot. The
block is automatically erase before being programmed.
To program a whole block in standard mode, the PRG/NPRG bits in the FLASH_CR2 and
FLASH_NCR2 registers must be previously set/cleared to enable standard block
programming (see Section 4.8.2: Flash control register 2 (FLASH_CR2) and Section 4.8.2:
Flash control register 2 (FLASH_CR2)). Then, the block of data to be programmed must be
loaded sequentially to the destination addresses in the main program memory or DATA
area. This causes all the bytes of data to be latched. To start programming the whole block,
all bytes of data must be written. All bytes written in a programming sequence must be in the
same block. This means that they must have the same high address: Only the six least
significant bits of the address can change. When the last byte of the target block is loaded,
the programming starts automatically. It is preceded by an automatic erase operation of the
whole block.
When programming a block in DATA area, the application can check the HVOFF bit in the
Flash status register (FLASH_IAPSR). As soon the HVOFF flag is reset the actual
programming phase starts and the application can return to main program memory.
The EOP and the WR_PG_DIS control flags of the FLASH_IAPSR together with the Flash
interrupt can be used to determine if the operation has been correctly completed.
Fast block programming
Fast block programming allows programming without first erasing the memory contents.
Fast block programming is therefore twice as fast as standard programming.
This mode is intended only for programming parts that have already been erased. It is very
useful for programming blank parts with the complete application code, as the time saving is
significant.
Fast block programming is performed by using the same sequence as standard block
programming. To enable fast block programming mode, the FPRG/NFPRG bits of the
FLASH_CR2 and FLASH_NCR2 registers must be previously set/cleared.