Chapter 17 Flash Memory
MPC5602P Microcontroller Reference Manual, Rev. 4
372
Freescale Semiconductor
During erase suspend, all reads to blocks targeted for erase return indeterminate data.
An erase suspend can be initiated by changing the value of the MCR[ESUS] bit from 0 to 1. MCR[ESUS]
can be set to 1 at any time when MCR[ERS] and MCR[EHV] are high and MCR[PGM] is low. A 0-to-1
transition of MCR[ESUS] causes the module to start the sequence that places it in erase suspend.
The user must wait until MCR[DONE] = 1 before the Module is suspended and further actions are
attempted. MCR[DONE] will go high no more than t
ESUS
after MCR[ESUS] is set to 1.
Once suspended, the array may be read. Flash core reads while MCR[ESUS] = 1 from the block(s) being
erased return indeterminate data.
Example 17-3. Sector Erase Suspend
MCR
= 0x00000007;
/* Set ESUS in MCR: Erase Suspend */
do
/* Loop to wait for DONE=1 */
{ tmp
= MCR;
/* Read MCR */
} while ( !(tmp & 0x00000400) );
Notice that there is no need to clear MCR[EHV] and MCR[ERS] in order to perform reads during erase
suspend.
The Erase sequence is resumed by writing a logic 0 to MCR[ESUS].
MCR[EHV] must be set to 1 before MCR[ESUS] can be cleared to resume the operation.
The Module continues the erase sequence from one of a set of predefined points. This may extend the time
required for the erase operation.
Example 17-4. Sector Erase Resume
MCR
= 0x00000005;
/* Reset ESUS in MCR: Erase Resume */
17.3.8.1.3
User Test mode
User Test mode is a customer-accessible mode that can be used to perform specific tests to check the
integrity of the Flash module. Three kinds of test can be performed:
•
Array integrity self-check
•
Margin mode read
•
ECC logic check
The User Test mode is equivalent to a Modify operation. Read accesses attempted by the user during User
Test mode generate a Read-While-Write Error (the MCR[RWE] bit is set).
User Test operations are not allowed on the Test and Shadow blocks.
17.3.8.1.3.1 Array integrity self check
Array integrity is checked using a predefined address sequence (proprietary), and this operation is
executed on selected and unlocked blocks. Once the operation is completed, the results of the reads can be
checked by reading the MISR value (stored in UMISR0–4), to determine if an incorrect read, or ECC
detection was noted.