STM32 QSPI驱动W25Q80FLASH不成功问题记录

问题描述

最近使用STM32的QSPI驱动W25QXX系列Flash时遇到的一个现象:原子的例程,同样的程序驱动W25Q16JVSIQ没有任何问题,但是驱动W25Q80DVSIG的时候读不到芯片ID,读写数据也都不成功。

问题排查

于是网上搜索了很多相关的问题,确定大概的方向:W25Q80DVSIG上状态寄存器2的QE位没有置1导致,而W25Q16JVSIQ出厂时默认QE位已经置1(也许后缀为Q的型号就是QE出厂置1的意思,未验证,但手册上有提及)
后缀为"IG"的型号出厂默认QE位为0
在这里插入图片描述

既然出厂时没有帮我们把QE位置1,那我们就自己将它置1就好了。步骤也不难,无非就是先把状态寄存器的写保护位WEL置1,关掉写保护,再把状态寄存器2读出来,读出来的值第2位 置1后再写回状态寄存器2就行了。但问题就在于,原子的例程里初始化FLASH的时候已经有将QE位 置1的代码了。。。在这里插入图片描述

问题解决

经过调试以及研读芯片手册,发现问题所在。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上几张图是原子例程参照W25Q32(或其他型号)手册写的指令表,这没什么问题,当我找到W25Q80DV芯片手册的指令表时,问题就突显出来了。
在这里插入图片描述
W25Q80DV的写入状态寄存器指令只有一条:“0x01”,而W25Q32JV(或其他大部分型号)不同状态寄存器的写入指令是不同的(01h/31h)。W25Q80DV是一条指令就把状态寄存器1和2一起写入:“01h S7-S0 S15-S8”,指令后的第一个字节是状态寄存器1的写入值,第二个字节是状态寄存器2的写入值。所以只要稍微修改一下程序就可以用了,修改如下:
在这里插入图片描述
在这里插入图片描述
以上就是这次QSPI驱动W25Q80不成功的问题记录以及解决方法,如果有疑问或者有不同见解的朋友欢迎评论区一起交流!

1. W25Q80 (8M-bit)、W25Q16 (16M-bit)和W25Q32 (32M-bit)串行闪存为空间、引脚和电源有限的系统提供了存储解决方案。25Q系列提供的灵活性和性能远远超过普通的串行闪存设备。他们是理想的代码隐藏到RAM,执行代码直接从双/四SPI (XIP)和存储声音,文本和数据。设备运行在单一2.7V至3.6V的电源上,电流消耗低至5mA有源,断电1a。所有的设备都提供节省空间的包装。W25Q80/16/32数组被组织成4,096/8,192/16,384个可编程页,每个页有256个字节。多达256字节可以被编程一次使用页程序指令。页面可以按16组(扇区擦除)、128组(32KB块擦除)、256组(64KB块擦除)或整个芯片(芯片擦除)擦除。W25Q80/16/32分别有256/512/1024个可擦除扇区和16/32/64个可擦除块。小的4KB扇区为需要数据和参数存储的应用程序提供了更大的灵活性。(见图2)。W25Q80/16/32支持标准串行外围接口(SPI),和高性能双/四输出以及双/四I/O SPI使用SPI引脚:串行时钟,芯片选择,串行数据I/O0 (DI), I/O1 (DO), I/O2 (/WP),和I/O3 (/HOLD)。SPI时钟频率高达80MHz的支持允许等效时钟率160MHz的双输出和320MHz的四次输出时,使用快速读双/四次输出指令。这些传输速率可与8位和16位并行闪存存储器相媲美。一个保持针,写保护针和可编程写保护,顶部或底部阵列控制,提供进一步的控制灵活性。此外,该设备支持JEDEC标准制造商和设备识别64位唯一序列号。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值