第4章 常见QSPI Flash型号介绍

市面上能看到的QSPI Flash,型号多得让人眼花。但说实话,真正在工业产品和消费电子里大量铺货的,翻来覆去就那么几个系列。

我个人习惯,选型时先看两个指标:容量和电压。然后才是速度、封装。这里介绍几个我打交道最多的型号,也是你迟早会遇到的。

4.1 W25Q系列——绕不开的“国民级”芯片

华邦的W25Q系列,基本上是QSPI Flash的代名词。我做过的项目里,十个有七八个用的它。为什么?性价比高,资料全,而且兼容性极好。

常用的型号有:

  • W25Q64FV:64Mbit(8MB),3.3V供电,最常见。
  • W25Q128JV:128Mbit(16MB),目前主流容量。
  • W25Q256JV:256Mbit(32MB),注意这个型号进入4字节地址模式。

它的指令集几乎成了行业标准。你想想看,后来出的很多Flash,指令集都和W25Q系列高度相似。我建议你先把W25Q系列的指令集吃透,其他型号上手会快很多。

小经验:W25Q系列的“JV”后缀是较新的版本,支持DTR(双倍传输速率)。老一点的“FV”版本没有这个功能,代码里要区分。

4.2 MX25L系列——万能的“替代选项”

旺宏的MX25L系列,市场份额也很大。它的特色是:和W25Q系列的引脚基本兼容,但某些时序参数略有不同。我在项目中遇到过这种事,板子画好了,W25Q缺货,临时换成MX25L,改几行初始化代码就能跑。

几个核心型号:

  • MX25L6436F:64Mbit,3.3V,和W25Q64FV基本对标。
  • MX25L12835F:128Mbit,注意有些批次支持1.8V供电。
  • MX25L25645G:256Mbit,支持DTR模式。

两者的区别主要在ID寄存器的值和状态寄存器的某些位定义。移植时,我习惯把ID读取和状态寄存器配置做成宏定义,换型号只用改头文件。

注意:MX25L系列的部分型号在进入QSPI模式时,需要额外发送一个“写入状态寄存器”的指令使能Quad功能。W25Q系列通常不需要这一步,或者指令不同。这是最常见的坑。

4.3 其他常见型号一览

除了上面两个大家族,还有一些型号在特定领域很常见:

型号 厂商 容量 特点
GD25Q64C 兆易创新 64Mbit 国产物料,和W25Q高度兼容,近年用的多
S25FL128S Cypress(英飞凌) 128Mbit 支持1.8V/3.3V双电压,车规级应用常见
N25Q128A 美光 128Mbit 老型号,但部分工控存量项目还在用
MT25QL128ABA 美光 128Mbit 新系列,支持DTR,性能更强

GD25系列现在是国产替代的主力。我去年有个项目就全部换成了GD25Q64C,代码几乎没改,成本降了一截。

4.4 核心参数对比——别被“兼容”两个字骗了

厂家都说自己的Flash“兼容W25Q”,可实际用起来,坑都在细节里。我给你列一张对比表,初始化配置时重点关注这些:

参数 W25Q64FV MX25L6436F GD25Q64C
JEDEC ID 0xEF4017 0xC22017 0xC86017
状态寄存器1复位值 0x00 0x00 0x00
Quad使能位(QE) 状态寄存器2的bit1 状态寄存器2的bit6 状态寄存器2的bit1
读ID指令 0x9F 0x9F 0x9F
写使能指令 0x06 0x06 0x06
快速读Quad指令 0xEB 0xEB 0xEB

你看,ID肯定不同。QE位位置居然不一样!这意味什么?如果你在MX25L上用W25Q的QE配置代码,Quad模式根本使能不了。我曾经因为这个问题查了一整天,最后发现是寄存器位搞混了。

4.5 选型时我给新人的建议

说白了,选哪个型号,主要看你的产品定位和供应链情况:

  1. 原型验证阶段:无脑用W25Q64JV或W25Q128JV。资料最多,遇到问题网上都能搜到。
  2. 国产化需求:优先看GD25Q64C/GD25Q128C,兼容性好,原厂支持也不错。
  3. 高可靠性/车规:考虑Cypress的S25FL系列,或者旺宏的车规级MX25L系列。
  4. 大容量(256Mbit以上):注意地址模式切换,W25Q256和MX25L256都需要在初始化时进入4字节地址模式。

最后提一点:不管选什么型号,初始化代码的第一件事,一定是读JEDEC ID。确认ID正确了,才进行后面的配置。这是防止硬件和软件不匹配的最笨、也最有效的方法。

常见QSPI Flash型号生态概览 华邦 W25Q系列 行业事实标准 旺宏 MX25L系列 引脚兼容首选替代 兆易 GD25系列 国产替代主力 核心对比要点 JEDEC ID不同 · 状态寄存器QE位位置不同 指令集基本一致 · 初始化流程略有差异 建议:初始化时先读JEDEC ID做验证 再根据ID动态配置QE位和模式