我正在尝试了解如何在 TI Delfino 单核处理器上使用闪存。
我从以下几个方面开始:
Fapi_StatusType oReturnCheck; InitFlash_BANK0 (); InitFlash_BANK1 (); EALLOW; PUMPREQUEST = 0x5A5A0002; oReturnCheck = Fapi_initializeAPI (F021_CPU0_W0_BASE_ADDRESS、200); if (oReturnCheck!= Fapi_Status_Success) { // //检查闪存 API 文档以了解可能的错误 // 返回-1; } // // Fapi_setActiveFlashBank 函数进一步设置闪存组和 FMC //闪存操作将在组上执行 // oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank0); if (oReturnCheck!= Fapi_Status_Success) { // //检查闪存 API 文档以了解可能的错误 // 返回-2; } EDIS; 返回 oReturnCheck;
然后我尝试写入存储器:
Fapi_StatusType ret; uint32 * addr =(uint32 *) Bzero_SectorC_start + 8*SEL; uint16 dbuf[2]; dbuf[0]= val & 0xFFFF; dbuf[1]=(val>>16)和0xFFFF; EALLOW; while (fapi_checkFsmForReady()!= fapi_Status_FsmReady){} RET = Fapi_issueProgrammingCommand (addr、dbuf、2、0、0、Fapi_DataOnly); while (fapi_checkFsmForReady()!= fapi_Status_FsmReady){} EDIS; 返回(int)转塔;
然后回读:
Fapi_FlashStatusWordType 状态; uint32 * addr =(uint32 *) Bzero_SectorC_start + 8*SEL; uint32 rcvBuf = 0; EALLOW; if (fapi_doBlankCheck (addr、1、status)){ rcvBuf = status.au32StatusWord[1]; }否则{ 返回0; } EDIS; 如果 onoff=0、///Shift 向下16 rcvBuf =(rcvBuf >>(16 *(!onoff))); return (uint16) rcvBuf;
我希望 rcvBuf 等于写入尝试期间提供的值、但它显示的是0x0001AA00、这与它开始时的值相同。
但是、调试时、闪存写入的返回值始终 为 Fapi_Status_Success、这意味着写入正确。 那么、无论我尝试写入多少次、回读值为什么不会从0x0001AA00更改?