SPRADE8A November 2023 – April 2024 F29H850TU , F29H859TU-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
The EEPROM_Erase() function provides functionality for erasing the sector(s) used for emulation. At least one entire sector must be erased as partial erase is not supported. Before erasing, you must ensure that stored data is no longer needed/valid. In the Single Unit implementation, this function is only called when all EEPROM Banks and Pages are full.
The function begins by configuring the Write/Erase Protection masks for the EEPROM unit, and then calls the Fapi_issueBankEraseCommand function. Finally, it waits for completion and checks for any errors.
Fapi_StatusType oReturnCheck;
// Clears status of previous Flash operation
ClearFSMStatus();
Fapi_setupBankSectorEnable(FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTA, WE_Protection_A_Mask);
Fapi_setupBankSectorEnable(FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTB,WE_Protection_B_Mask);
// Erase the EEPROM Bank
oReturnCheck = Fapi_issueBankEraseCommand((uint32*)FLASH_BANK_SELECT);
// Wait for completion and check for any programming errors
EEPROM_CheckStatus(&oReturnCheck);
In the Single-Unit implementation, the EEPROM_Erase function leverages the Flash API to clear the Flash Bank. It no longer has any need for the Erase_Bank function from the Ping Pong Implementation and the two have been combined in EEPROM_Erase. Erase_Bank is no longer needed because it was created to optimize the erasing of all Flash Sectors designated for EEPROM Emulation when there were two EEPROM units.
For comparison, the F28003x example project's EEPROM_Erase function issuesthe Flash API erase command and then waits for completion, checking for any programming errors that occur. Write/Erase protection masks are provided outside of the scope of the function.
Fapi_StatusType oReturnCheck;
// Erase the EEPROM Bank
oReturnCheck = Fapi_issueBankEraseCommand((uint32*) FLASH_BANK_SELECT, WE_Protection_Mask);
// Wait for completion and check for any programming errors
EEPROM_CheckStatus(&oReturnCheck);