C8051F340/1/2/3/4/5/6/7

12.1.3. Flash Write Procedure

Bytes in Flash memory can be written one byte at a time, or in groups of two. The FLBWE bit in register PFE0CN (SFR Definition 10.1) controls whether a single byte or a block of two bytes is written to Flash during a write operation. When FLBWE is cleared to ‘0’, the Flash will be written one byte at a time. When FLBWE is set to ‘1’, the Flash will be written in two-byte blocks. Block writes are performed in the same amount of time as single-byte writes, which can save time when storing large amounts of data to Flash memory.During a single-byte write to Flash, bytes are written individually, and a Flash write will be per- formed after each MOVX write instruction. The recommended procedure for writing Flash in single bytes is:

Step 1. Disable interrupts.

Step 2. Clear the FLBWE bit (register PFE0CN) to select single-byte write mode. Step 3. Set the PSWE bit (register PSCTL).

Step 4. Clear the PSEE bit (register PSCTL). Step 5. Write the first key code to FLKEY: 0xA5. Step 6. Write the second key code to FLKEY: 0xF1.

Step 7. Using the MOVX instruction, write a single data byte to the desired location within the 512-byte sector.

Step 8. Clear the PSWE bit. Step 9. Re-enable interrupts.

Steps 5-7 must be repeated for each byte to be written.

For block Flash writes, the Flash write procedure is only performed after the last byte of each block is writ- ten with the MOVX write instruction. A Flash write block is two bytes long, from even addresses to odd addresses. Writes must be performed sequentially (i.e. addresses ending in 0b and 1b must be written in order). The Flash write will be performed following the MOVX write that targets the address ending in 1b. If a byte in the block does not need to be updated in Flash, it should be written to 0xFF. The recommended procedure for writing Flash in blocks is:

Step 1. Disable interrupts.

Step 2. Set the FLBWE bit (register PFE0CN) to select block write mode. Step 3. Set the PSWE bit (register PSCTL).

Step 4. Clear the PSEE bit (register PSCTL). Step 5. Write the first key code to FLKEY: 0xA5. Step 6. Write the second key code to FLKEY: 0xF1.

Step 7. Using the MOVX instruction, write the first data byte to the even block location (ending in 0b).

Step 8. Write the first key code to FLKEY: 0xA5.

Step 9. Write the second key code to FLKEY: 0xF1.

Step 10. Using the MOVX instruction, write the second data byte to the odd block location (ending in 1b).

Step 11. Clear the PSWE bit. Step 12. Re-enable interrupts.

Steps 5–10 must be repeated for each block to be written.

110

Rev. 0.5

Page 110
Image 110
Silicon Laboratories C8051F345, C8051F347, C8051F346, C8051F341, C8051F343, C8051F340, C8051F344 Flash Write Procedure