XMC1302 Flash Write, ERASE problems

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
Hello,

the NVM flash ERASE routines of the XMC1300 seem to be faulty in the "AB" silicon revision.
(see errata sheet "NVM_CM.001" / Infineon-xmc1300_AB-ES-v01_03-EN.pdf)

The following code block that worked fine with the "AA" revision is not working anymore (under DAVE3):
 // delete complete flash bank
NVM->NVMPROG = (0x00 << NVM_NVMPROG_ACTION_Pos); // set prog to 0x00
NVM->NVMPROG = (NVM_NVMPROG_RSTVERR_Msk | NVM_NVMPROG_RSTECC_Msk); // clear ECC and Verify Errors
while(NVM->NVMSTATUS & NVM_NVMSTATUS_BUSY_Msk); // wait until ready
NVM->NVMPROG = (0x92 << NVM_NVMPROG_ACTION_Pos); // set NVM to delete flash (one-shot page erase)
*write_address = *data_address; // write to any address within the bank that should be deleted
while(NVM->NVMSTATUS & NVM_NVMSTATUS_BUSY_Msk); // wait until deleting is finished (takes approximately 7 msec)


I already found out, that by the following sequence a ROM routine can be executed and the ERASE is working:
 // Workaround for AB silicon revision
XMC1000_NvmErasePage(write_address);


Does anyone have experience, if this sequence is working reliable with the "AA" and "AB" silicon revision?

In the errata sheet it is written "the erase operation is not always executed".
Does anyone have experice under which conditions ERASE is working or not?
Has anyone information on what is not working in the NVM ERASE of the "AB" silicon revision?

Is there any information what the ROM routine does or how the erase time is compared to the NVM routine?


I hope to recover some devices that are already under an epoxy cast and use the faulty erase routine.

Thanks,
Bernd
0 Likes
1 Reply
Not applicable
Maybe important to mention:
The latest user manual (Infineon-xmc1300-AB_rm-UM-v01_02-EN.pdf, page 224) suggests the NVM ERASE, that is not working.
According to the errata sheet this function is faulty and the ROM function should be used instead.

If you want to implement some low-level flash routines use the ROM routine for ERASE!
0 Likes