SPRADE8 November 2023 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
The EEPROM_UpdatePageStatus() function provides functionality for updating the previous page’s status. This function is called from the EEPROM_Write() function. The page status is first read to determine how to proceed.
Bank_Status[0] = *(Bank_Pointer); // Read Bank Status from Bank Pointer
Page_Status[0] = *(Page_Pointer); // Read Page Status from Page Pointer
If this status indicates that the page is blank, the function is exited as this status is updated in the EEPROM_Write() function. Otherwise, the page status is updated to show it is full and the page pointer is incremented to prepare to program the next page:
// Check if Page Status is blank. If so return to EEPROM_WRITE.
if(Page_Status[0] == BLANK_PAGE)
return;
// Program previous page's status to Used Page
else
{
// Set Page Status to Used Page
Page_Status[0] = CURRENT_PAGE;
Page_Status[1] = CURRENT_PAGE;
Page_Status[2] = CURRENT_PAGE;
Page_Status[3] = CURRENT_PAGE;
// 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);
// Program Bank Status to current bank
oReturnCheck = Fapi_issueProgrammingCommand((uint32*) Page_Pointer+2,
Page_Status, 4, 0, 0,
Fapi_AutoEccGeneration);
// Wait for completion and check for any programming errors
EEPROM_CheckStatus(&oReturnCheck);
// Increment Page Pointer to next page
Page_Pointer += EEPROM_PAGE_DATA_SIZE + 8;
}