Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现

JFM25F32A Flash写操作流程如图1所示,对于Flash类型的存储器,向已经存在数据的单元写入数据时,直接写入是无法写入的,在写入之前必须先执行擦除命令,再进行写入即可;如果待写入的单元为新的单元(“FF”),则可以直接写入数据。下面为Flash写操作的流程,如果写入的单元为新的数据单元,则写操作中的擦除流程可以取消掉。

1. JFM25F32A操作指令(instruction)的规则

(1) JFM25F32A Flash存储单元的地址为24bit ADDR[23:0],每一个基本存储单元容量为一个字节;
(2) 数据移位时,高位在前,低位在后;
(3) 页编程命令至少需要一个字节的数据,最多256个字节的数据;
(4) 每一个操作指令通过SPI接口独立的写入,CS#下降沿开始每一个指令的传输,CS#上升沿结束本次命令,执行相应的操作写入相应的指令即可;
(5) 在向存入数据的单元写入数据时,必须先进行擦除操作,再写入相应的数据;

2 指令列表

Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现_第1张图片

3. JFM25F32A的状态寄存器

JFM25F32A有两个状态寄存器,状态寄存器1(S7-S0),状态寄存器2(S15-S8)两个,具体的位分布如下:
表2状态寄存器1
S7 S6 S5 S4 S3 S2 S1 S0
SRP0 SEC TB BP2 BP1 BP0 WEL WIP
表3状态寄存器2
S15 S14 S13 S12 S11 S10 S9 S8
R CMP ERR R R LB R SRP1
注:在进行读写操作时,我们只需要读状态寄存器1,判断其中的WEL位于WIP位即可,状态寄存器2以及状态寄存器1的其他位不需要关注。

4 编程注意事项
编写Flash驱动程序时,除了在保证驱动时序正确的情况下,还应该关注相应操作所需的时间条件,即:每一次执行相应的命令至少需要的时间,这些参数告诉我们,即使这个指令发送完毕,也不能立即操作,也需等待这么久的空闲时间才能进行下一次操作,特别是在擦除操作、写操作必须满足相应的时间;这些参数的获取在器件手册的交流参数表中获取。JFM25F32A的关键交流参数如表5。
符号 参数含义 MIN TYP(典型) MAX
Tpp 页编程时间 — 5ms
Tse 扇区擦除时间 300ms
Tbe 区块擦除时间 3s
Tce 全芯片擦除 12s 100s
注:在使用时必须注意这些参数,否则有可能导致读写操作失败,数据写不进去,或者第一个数据写进去。
5 JFM25F32A相应操作时序图
以下的所有时序图,均是在SPI模式下操作Flash的时序图。
(1)读状态寄存器时图
Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现_第2张图片

(2)写使能时序图
Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现_第3张图片

(3)扇区擦除时序图
Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现_第4张图片

(4)页编程时序图
Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现_第5张图片

(5)读操作时序图
Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现_第6张图片
创作不易,如果笔者的搓作对您有帮助,请您点赞关注一下;如果需要提供基于FPGA Verilog的Flash操作帮助,可以在下方评论。联系邮箱:[email protected]

你可能感兴趣的:(Flash&SPI,fpga开发)