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 指令列表

在这里插入图片描述

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)读状态寄存器时图
在这里插入图片描述

(2)写使能时序图
在这里插入图片描述

(3)扇区擦除时序图
在这里插入图片描述

(4)页编程时序图
在这里插入图片描述

(5)读操作时序图
在这里插入图片描述
创作不易,如果笔者的搓作对您有帮助,请您点赞关注一下;如果需要提供基于FPGA Verilog的Flash操作帮助,可以在下方评论。联系邮箱:cwnult2021@163.com

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CWNULT

如果对您有帮助,请君随意打赏小

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值