工具/软件:Code Composer Studio
我有一个 RM44L920、它可以与 F021_API_CortexR4_LE_v3D16.lib 版本1.00搭配使用。 组需要迁移到 同一库名称的最新2.X 版本。
我已在新库中进行了编译和链接、 并且我有一个摘录、来自随该发行版提供的 SPNA148.pdf 擦除/编程应用报告。
我正在尝试使用此代码擦除0x0处的第一个扇区、对 Fapi_getFsmStatus 的调用 将返回成功(0)、但闪存不会被擦除。 所有 oReturnChecks 都将正常返回(Fapi_StatusFsmReady)。
Fapi 函数都位于代码段中、这是在 V1.00中完成的。 -
#pragma CODE_SECTION (Fapi_initializeFlashBanks、".flashapi");
oReturnCheck = Fapi_initializeFlashBanks (180);
oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank0);
oReturnCheck = Fapi_enableMainBankSectors (Fapi_FlashBank0);
oReturnCheck = fapi_checkFsmForReady();
flash_control_register->Fbprot.u32Register = 1U;//禁用1级保护
FLASH_CONTRAL_REGISTER->Fbse.u32Register = 0xFFFF;//为擦除和编程启用所有扇区。
FLASH_CONTRAL_REGISTER->Fbprot.u32Register = 0U;//启用1级保护
FLASH_CONTRAL_REGISTER->FsmWrEna.u32Register = 0x5U;//解锁 FSM 寄存器以进行写入
flash_control_register->Fbse.u32Register = 0xFFFE0000;//禁用除扇区0之外的所有扇区
flash_control_register->FsmCommand.FSM_command_bits。FSMCMD = Fapi_ClearStatus;
FLASH_CONTRAL_REGISTER->FsmExecute.FSM_EXECUTE=0x15U;//执行命令
FLASH_CONTROL_REGISTER->Faddr.u32Register = 0x0U;//将地址写入 FADDR 寄存器。 该地址必须位于要擦除的组内
FLASH_CONTRAL_REGISTER->FsmCommand.FSM_COMMAND_BITS.FSMCMD = Fapi_EraseBank;//将命令设置为擦除
FLASH_CONTRAL_REGISTER->FsmExecute.FSM_EXECUTE=0x15U;//执行命令
while (fapi_checkFsmForReady ()=fapi_Status_FsmBusy)
{
DWDRESET();
}
FSM_Status = Fapi_getFsmStatus();