3.5 Flash擦除操作

Flash在SEC_ERASE和CHIP_ERASE状态可以完成擦除操作的时序转化。

进入擦除操作需要CPU执行两步总线写操作,第一步,配置擦除模式,第二步,总线写操作给出擦除地址,对于扇区擦除,总线写操作地址即是擦除地址,片擦除可以是任意地址。

以扇区擦除为例,详细的步骤是:

(1)配置扇区擦除模式,READ状态跳转到WAIT_WR状态;

(2)在WAIT_WR状态,向目的扇区地址发起AHB总线写,状态机跳转到SEC_ERASE状态,同时锁定总线的写地址,提取待擦除的扇区地址,然后hready信号拉低,进行扇区擦除时序转化;

(3)在SEC_ERASE状态,ERASE信号拉高,WEB信号拉低,ERASE信号持续时间达到配置Thv的值时,状态机跳到TRCV_E,之后TRW,返回READ态。

举例:以图15为例说明Flash扇区擦除时序。比如擦除0x00_8004扇区(CPU地址为0x0002_0010)。write_sfr_valid信号(配置SEC_ERASE模式脉冲)触发READ状态跳到WAIT_WR状态,然后write_valid 信号(AHB总线写0x0002_0010地址)触发WAIT_WR状态跳到SEC_ERASE,开始时序转化。

基于IAP流程的两片Flash拼接的Flash控制器方案设计

3.6 Flash自编程操作

Flash自编程操作即是Flash写程序在Flash内部执行,同时对Flash其他区域进行扇区擦除和写操作的过程。

CPU每执行一条指令的操作一般分为取指令、分析指令、执行指令。转化为对Flash的操作就是读或写。利用写Flash操作之后hready拉低,锁定总线,进行Flash读写时序转化。

扇区擦除操作的分解步骤如下:

(1)(READ状态)读Flash操作取指令;

(2)发起总线写操作,配置扇区擦除模式寄存器(从READ跳转到WAIT_WR);

(3)(WAIT_WR状态)读Flash操作取指令;

(4)发起总线写操作(从WAIT_WR跳转到PROG);

(5)hready拉低,锁定总线,同时从总线写地址高bit提取Flash扇区地址(当前总线写数据不必关心),然后发起扇区擦除时序转化;

(6)(从PROG跳转到TRCV_E,然后TRW,返回READ)hready拉高,释放总线,返回步骤(1)。

写操作的分解步骤如下:

(1)(READ状态)读Flash操作取指令;

(2)发起总线写操作,配置写模式寄存器(从READ跳转到WAIT_WR);

(3)(WAIT_WR状态)读Flash操作取指令;

(4)发起总线写操作(从WAIT_WR跳转到PROG);

(5)hready拉低,锁定总线,同时锁定总线当前地址作为写地址,利用hready拉低AHB总线数据扩展周期期间写数据不变原理锁定当前写数据,发起word写时序转化;