ZHCADD5A November 2023 – April 2024 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
EEPROM_UpdatePageStatus() 函数的功能是更新上一页的状态。此函数由 EEPROM_Write() 函数调用。首先读取页状态,以确定如何继续。
Bank_Status[0] = *(Bank_Pointer); // Read Bank Status from Bank Pointer
Page_Status[0] = *(Page_Pointer); // Read Page Status from Page Pointer
如果此状态表示该页面为空,该函数便会退出,因为此状态会在 EEPROM_Write() 函数中更新。否则,页面状态会更新,以显示页面已满,同时页面指针会递增,为对下一个页面进行编程做好准备:
// 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;
}