ZHCAEX4 January 2025 F29H850TU , F29H859TU-Q1
Erase_Bank 函数利用闪存 API 来擦除已满 EEPROM 单元。此函数只是围绕闪存 API 的包装程序,并且保护掩码已在 EEPROM_Erase() 函数中设置。
首先,函数会清除 FSM 状态并将保护掩码复制到闪存 API 中。
ClearFSMStatus(FLASH_BANK_SELECT, u32UserFlashConfig);
Fapi_setupBankSectorEnable((uint32_t*) FLASH_BANK_SELECT, u32UserFlashConfig,
FLASH_NOWRAPPER_O_CMDWEPROTA, WE_Protection_A_Mask);
Fapi_setupBankSectorEnable((uint32_t*) FLASH_BANK_SELECT, u32UserFlashConfig,
FLASH_NOWRAPPER_O_CMDWEPROTB, WE_Protection_B_Mask);
然后,函数会擦除闪存并检查是否存在编程错误。
oReturnCheck = Fapi_issueBankEraseCommand((uint32_t*) FLASH_BANK_SELECT, 0, u32UserFlashConfig);
while(Fapi_checkFsmForReady((uint32_t) FLASH_BANK_SELECT, u32UserFlashConfig) == Fapi_Status_FsmBusy);
if (oReturnCheck != Fapi_Status_Success)
Sample_Error();
oFlashStatus = Fapi_getFsmStatus((uint32_t) FLASH_BANK_SELECT, u32UserFlashConfig);
if (oFlashStatus != 3)
{
FMSTAT_Fail();
}
最后,如果已设置 Erase_Blank_Check,则执行空白检查。
if (Erase_Blank_Check)
{
uint32_t address = FLASH_BANK_SELECT + FIRST_AND_LAST_SECTOR[EEPROM_ACTIVE_UNIT][0] * FLASH_SECTOR_SIZE;
Fapi_FlashStatusWordType oFlashStatusWord;
oReturnCheck = Fapi_doBlankCheck((uint32_t*) address, BLANK_CHECK_LEN, &oFlashStatusWord, 0,
u32UserFlashConfig);
if (oReturnCheck != Fapi_Status_Success)
{
Sample_Error();
}
}