Datasheet

Data Sheet ADE5166/ADE5169/ADE5566/ADE5569
Rev. D | Page 111 of 156
Flash Functions
The following sample 8052 code is provided to demonstrate how to
use the the flash functions. For these examples, Flash Memory
Byte 0x3C00 is accessed.
Write Byte
Write 0xF3 into Flash Memory Byte 0x3C00.
MOV EDATA, #F3h ; Data to be written
MOV EADRH, #3Ch ; Set up byte address
MOV EADRL, #00h
MOV FLSHKY, #3Bh ; Write flash security
key.
MOV ECON, #01H ; Write byte
Erase Page
Erase the page containing Flash Memory Byte 0x3C00.
MOV EADRH, #3Ch ; Select page through
byte address
MOV EADRL, #00h
MOV FLSHKY, #3Bh ; Write flash security
key.
MOV ECON, #02H ; Erase Page
Erase All
Erase all of the 62 kB flash memory.
MOV FLSHKY, #3Bh ; Write flash security
key.
MOV ECON, #03H ; Erase all
Read Byte
Read Flash Memory Byte 0x3C00.
MOV EADRH, #3Ch ; Set up byte address
MOV EADRL, #00h
MOV FLSHKY, #3Bh ; Write flash security
key.
MOV ECON, #04H ; Read byte
; Data is ready in EDATA register
Note that the read byte command can be used to view the status
of the protection bytes located in the upper 21 bytes, Page 123.
The write byte command is not valid for this area.
PROTECTING THE FLASH MEMORY
Two forms of protection are offered for this flash memory: read
protection and write/erase protection. The read protection ensures
that any pages that are read protected cannot be read by the end
user. The write protection ensures that the flash memory cannot
be erased or written over. This protects the final product from
tampering and can prevent the code from being overwritten in
the event of a runaway program.
Write/erase protection is individually selectable for all 124 pages.
Read protection is selected in groups of four pages (see Figure 95
for the groupings). The protection bits are stored in the last flash
memory locations, Address 0xF7EB through Address 0xF7FF
(see Figure 96). Sixteen bytes are reserved for write/erase pro-
tection, four bytes for read protection, and another byte to set
the flash protection key (PROTKY, Address 0xBB). The user
must enable write/erase protection for the last page, at a minimum,
for the entire protection scheme to work.
Note that the read protection does not prevent MOVC commands
from being executed within the code.
There is an additional layer of protection offered by a flash pro-
tection security key (PROTKY) that can be set up by the user so
that the protection scheme cannot be changed without this key.
After the protection key has been configured, it cannot be
modified.
Enabling Flash Protection by Code
The protection bytes in the flash can be programmed by using
the flash controller command and programming the ECON
SFR to 0x08. Issuing the ECON protection command initiates
the programming of one byte of protection data. The EADRL
(Address 0xC6) and EDATA (Address 0xBC) data pointer SFRs
are used to store the least significant address and data bytes,
respectively. Note that the EADRH data pointer SFR is not used
in this command.
The following sequence should be followed to enable the flash
protection:
1. Set the EDATA flash data pointer with the write/erase or
read protection data. When erased, the protection bits default
to 1, like any other bit of flash memory. The default protection
setting is for no protection. To enable protection, write a 0
to the bits corresponding to the pages that should be pro-
tected. Note that when setting the read protection, each
protection bit protects four pages.
2. Set the EADRL flash data pointer with the least significant
byte of the protection address. For example, to access the
protection on Page 112 through Page 119 (Address 0xF7FE),
EADRL should be written to 0xFE.
3. Enable access to the flash by writing 0x3B to the FLSHKY
SFR (Address 0xBA).
4. Issue the protection command by writing 0x08 to the
ECON SFR (Address 0xB9).
Step 1 to Step 3 should be repeated for each byte that requires
protection. While configuring the final byte of write/read pro-
tection, the PROTKY SFR (Address 0xBB) can be enabled for a
further level of code security. If enabled, the flash protection key is
required to modify the protection scheme. To enable the flash
protection key, the Flash Location 0xF7EB where the PROTKY
is located should be written to using the flash control SFR (ECON,
Address 0xB9). The PROTKY can be written to any 8-bit value;
once configured, it cannot be modified. To enable the PROTKY
and activate the flash protection, the part must be reset.