FMC 提供了整片擦除功能可以初始化主存储闪存块的内容。当设置 FMC_CTL 寄存器中 MER
为 1 时,擦除过程作用于整片闪存。整片擦除操作,寄存器设置具体步骤如下:
确保FMC_CTL寄存器不处于锁定状态;
检查FMC_STAT寄存器的BUSY位来判定闪存是否正处于擦写访问状态,若BUSY位为1,
则需等待该操作结束,BUSY位变为0;
如果整片擦除闪存,置位FMC_CTL寄存器的MER位;
通过将FMC_CTL寄存器的START位置1来发送整片擦除命令到FMC;
等待擦除指令执行完毕,FMC_STAT寄存器的BUSY位清0;
如果需要,使用SBUS读并验证是否擦除成功。
当整片擦除成功执行,FMC_STAT 寄存器的 ENDF 位置位。若 FMC_CTL 寄存器的 ENDIE
位被置 1,FMC 将触发一个中断。由于所有的闪存数据都将被复位为 0xFFFF_FFFF,可以通
过运行在 SRAM 中的程序或使用调试工具直接访问 FMC 寄存器来实现整片擦除操作。此外,
如果任何闪存页处于擦除/编程保护下,整片擦除操作会被忽略。在这种情况下,如果 FMC_CTL
寄存器的 ERRIE 位被置位,该操作将触发操作出错中断。在中断服务程序中,软件可以通过
检查 FMC_STAT 寄存器中的 WPERR 位来检测这种情况。
|