oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32Index, Buffer+(i>>1), 8, 0, 0, Fapi_AutoEccGeneration); // Wait until the Flash program operation is over while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy); if(oReturnCheck != Fapi_Status_Success) { // Check Flash API documentation for possible errors //Example_Error(oReturnCheck); return FLASH_STATUS_FAIL; } // Read FMSTAT register contents to know the status of FSM after // program command to see if there are any program operation related errors oFlashStatus = Fapi_getFsmStatus(); if(oFlashStatus != 0) { //Check FMSTAT and debug accordingly //FMSTAT_Fail(); return FLASH_STATUS_FAIL; } // Verify the programmed values. Check for any ECC errors. // The program command itself does a verify as it goes. // Hence program verify by CPU reads (Fapi_doVerify()) is optional. oReturnCheck = Fapi_doVerify((uint32 *)u32Index, 4, Buffer32+(i>>2), &oFlashStatusWord); if(oReturnCheck != Fapi_Status_Success) { // Check Flash API documentation for possible errors //Example_Error(oReturnCheck); return FLASH_STATUS_FAIL; } }
Fapi_getFsmStatus 返回 30状态码。这个状态码对应的是手册中如下内容:
请问引起这个问题的原因有哪些。