Flash Write in XMC1302 AB revision fails

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

cross mob
Not applicable
Hello,

some Flash routines that worked with the "XMC1302 AA" silicon revision now fail with the "AB" revision. Unfortunately our manufacturer did not notify us, that the new revision was assembled for the lastest batch.

I assume the problem comes from the flash erase cycle.

Current code section:
 // 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)


This is correct according to the latest user manual, too. (Infineon-xmc1300-AB_rm-UM-v01_02-EN.pdf, page 224)
However in the latest errata sheet there is a functional deviation "NVM_CM.001". (Infineon-xmc1300_AB-ES-v01_03-EN.pdf, page 18)
It describes a problem using the low level ERASE routine and suggests usage of a ROM routine.

Is there a code example available using the ROM routines for the flash?

As we have some devices already cast in epoxy I would like to learn a little more about this issue especially about the part "the erase operation is not always executed" (as written in the errata sheet).
There is a small chance to do some bit-level modifications to "repair" the flash write routines on the already enclosed devices. Knowing a little more about the error mechanism will help to decide, if the already enclosed devices are for the trashbin or if a fix is possible.

A quick answer would be nice.

Thanks
Bernd
0 Likes
0 Replies