RM0016 Flash program memory and data EEPROM
Doc ID 14587 Rev 8 49/449
The HVOFF flag can also be polled by the application which can execute other instructions
(RWW) during the actual programming phase of the DATA.
The EOP and WR_PG_DIS bits of the FLASH_IAPSR register can be checked to determine
if the fast block programming operation has been correctly completed.
Caution: The data programmed in the block are not guaranteed when the block is not blank before
the fast block program operation.
Block erasing
A block erase allows a whole block to be erased.
To erase a whole block, the ERASE/NERASE bits in the FLASH_CR2 and FLASH_NCR2
registers must be previously set/cleared to enable block erasing (see Section 4.8.2: Flash
control register 2 (FLASH_CR2) and Section 4.8.3: Flash complementary control register 2
(FLASH_NCR2)). The block is then erased by writing ‘0x00 00 00 00’ to any word inside the
block. The word start address must end with ‘0’, ‘4’, ‘8’, or ‘C’.
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.
4.6.5 Option byte programming
Option byte programming is very similar to data EEPROM byte programming.
The application writes directly to the target address. The program does not stop and the
write operation is performed using the RWW capability.
Refer to the datasheet for details of the option byte contents.
4.7 ICP and IAP
The in-circuit programming (ICP) method is used to update the entire content of the memory,
using the SWIM interface to load the user application into the microcontroller. ICP offers
quick and efficient design iterations and eliminates unnecessary package handling or
socketing of devices. The SWIM interface (single wire interface module) uses the SWIM pin
to connect to the programming tool.
In contrast to the ICP method, in-application programming (IAP) can use any communication
interface supported by the microcontroller (I/Os, I
2
C, SPI, USART...) to download the data to
be programmed in the memory. IAP allows the Flash program memory content to be
reprogrammed during application execution. Nevertheless, part of the application must have
been previously programmed in the Flash program memory using ICP.
Refer to the STM8S and STM8A Flash programming manual (PM0051) and STM8 SWIM
protocol and debug manual (UM0470) for more information on programming procedures.
Table 5. Block size
STM8 microcontroller family Block size
Low density STM8S 64 bytes
Medium density STM8S and STM8A (up to 32 Kbytes) 128 bytes
High density STM8S and STM8A (up to 128 Kbytes) 128 bytes