仍在等待您的营销部门发送NDA,以便我们可以查看库源代码。 由于认证原因,我们不能使用F021库。
我正在尝试擦除闪存扇区,但收到PCV错误。 我是否需要以某种方式预处理闪存? 我是否正确访问未记录的FsmSector寄存器?
测试呼叫:
CpfSelectFlashBank(1); //已验证:FMAC ==1.
CpfEraseSector (1,0); //失败: PCV == 1
静态空CpfEraseSector(UINT32 uBankNum, UINT32 uSectorNum)
{
断言(uBankNum=1)
while (CpfIsBankBusy(uBankNum));// 待办:添加超时
//设置FBSE - 1 =为WR/Erase启用扇区
//--------------------------------------------
cpfL2F -> Fbprot.u32Register = 1; //启用FBSE访问
cpfL2F -> Fbse.u32Register =(UINT32) 0xFFFF; //启用所有扇区
cpfL2F -> Fbprot.u32Register = 0; //禁用FBSE访问
CpfClearStatus();
//仅将“写入启用”设置为要擦除的扇区
//------------------------------------------------
cpfL2F -> FsmWrEna.u32Register = 5; //启用对FSM_Sector的访问
UINT32 umask =~(0x1万<uSectorNum);
cpfL2F -> FsmSector.u32Register = umask; //未记录的寄存器:高位似乎映射到FSM_SECTOR1
cpfL2F -> FsmWrEna.u32Register = 0; //禁用对FSM_Sector的访问
//将地址寄存器设置为“扇区内的任意”
cpfL2F -> Faddr.u32Register =(0x20万 * uBankNum)+ 0x2万 * uSectorNum;
CpfSetCmd (F021Cmd_EraseSector); //命令= erase_sector
CpfExecute();// 开始
}
此致,
Mark Samarin
AFuzion公司
