22.4.3 Flash Commands
The EEFC offers a set of commands to manage programming the Flash memory, locking and unlocking lock regions, consecutive programming, locking and full Flash erasing, and so on.
The commands are listed in the following table.
Command | Value | Mnemonic |
---|---|---|
Get Flash Descriptor | 0x00 | GETD |
Write Page | 0x01 | WP |
Write Page and Lock | 0x02 | WPL |
Erase Page and Write Page | 0x03 | EWP |
Erase Page and Write Page and then Lock | 0x04 | EWPL |
Erase All | 0x05 | EA |
Erase Pages | 0x07 | EPA |
Set Lock Bit | 0x08 | SLB |
Clear Lock Bit | 0x09 | CLB |
Get Lock Bit | 0x0A | GLB |
Set GPNVM Bit | 0x0B | SGPB |
Clear GPNVM Bit | 0x0C | CGPB |
Get GPNVM Bit | 0x0D | GGPB |
Start Read Unique Identifier | 0x0E | STUI |
Stop Read Unique Identifier | 0x0F | SPUI |
Get CALIB Bit | 0x10 | GCALB |
Erase Sector | 0x11 | ES |
Write User Signature | 0x12 | WUS |
Erase User Signature | 0x13 | EUS |
Start Read User Signature | 0x14 | STUS |
Stop Read User Signature | 0x15 | SPUS |
To execute one of these commands, select the required command using the FCMD field in the Flash Command register (EEFC_FCR). As soon as EEFC_FCR is written, the FRDY flag and the FVALUE field in the Flash Result register (EEFC_FRR) are automatically cleared. Once the current command has completed, the FRDY flag is automatically set. If an interrupt has been enabled by setting the bit EEFC_FMR.FRDY, the corresponding interrupt line of the interrupt controller is activated (This is true for all commands except for the STUI command. The FRDY flag is not set when the STUI command has completed).
All the commands are protected by the same keyword, which must be written in the eight highest bits of EEFC_FCR.
Writing EEFC_FCR with data that does not contain the correct key and/or with an invalid command has no effect on the whole memory plane, but the FCMDE flag is set in the Flash Status register (EEFC_FSR). This flag is automatically cleared by a read access to EEFC_FSR.
When the current command writes or erases a page in a locked region, the command has no effect on the whole memory plane, but the FLOCKE flag is set in EEFC_FSR. This flag is automatically cleared by a read access to EEFC_FSR.