English
Language : 

RM0312 Datasheet, PDF (31/275 Pages) STMicroelectronics – STM8TL5xxx microcontroller family
RM0312
Flash program memory and data EEPROM
4.6
Note:
4.6.1
Note:
4.6.2
Memory programming
The main program memory, and the DATA area must be unlocked before attempting to
perform any program operation. The unlock mechanism depends on the memory area to be
programmed as described in Section 4.5.2: Memory access security system (MASS).
The PCODE area is always readout protected. The only way to reprogram it is to reset the
ROP option byte, thus erasing the Flash program memory, DATA area, and option bytes.
Byte programming
The main program memory and the DATA area can be programmed at byte level. To
program one byte, the application writes directly to the target address.The application stops
for the duration of the byte program operation.
To erase a byte, simply write 0x00 at the corresponding address.
The application can read the FLASH_IAPSR register to verify that the programming or
erasing operation has been correctly executed:
• EOP flag is set after a successful programming operation
• WR_PG_DIS is set when the software has tried to write to a protected page. In this
case, the write procedure is not performed.
As soon as one of these flags are set, a Flash interrupt is generated if it has been previously
enabled by setting the IE bit of the FLASH_CR1 register.
Automatic fast byte programming
The programming duration can vary according to the initial content of the target address. If
the word (4 bytes) containing the byte to be programmed is not empty, the whole word is
automatically erased before the program operation. On the contrary if the word is empty, no
erase operation is performed and the programming time is shorter (see tPROG in Table
“Flash program memory” in the datasheet).
However, the programming time can be fixed by setting the FIX bit of the FLASH_CR1
register to force the program operation to systematically erase the byte whatever its content
(see Section 4.8.1: Flash control register 1 (FLASH_CR1)). The programming time is
consequently fixed and equal to the sum of the erase and write time (see tPROG in Table
“Flash program memory” in the datasheet).
To write a byte fast (no erase), the whole word (4 bytes) into which it is written must be
erased beforehand. Consequently, It is not possible to do two fast writes to the same word
(without an erase before the second write): The first write will be fast but the second write to
the other byte will require an erase.
Word programming
A word write operation allows an entire 4-byte word to be programmed in one shot, thus
minimizing the programming time.
As for byte programming, word operation is available both for the main program memory
and data EEPROM.
To program a word, the WPRG bit in the FLASH_CR2 register must be previously set to
enable word programming mode (see Section 4.8.2: Flash control register 2
(FLASH_CR2)). Then, the 4 bytes of the word to be programmed must be loaded starting
DocID022352 Rev 3
31/275
39