W25QXX系列串行Flash存储器技术详解
W25QXX系列串行Flash存储器技术详解
串行Flash存储器在嵌入式系统中扮演着重要角色,特别是在FPGA和微控制器(如STM32)的程序存储方面。本文将详细介绍华邦(Winbond)W25QXX系列串行Flash的相关知识,包括其功能特性、存储结构、SPI通信方式以及SFDP参数等内容。
1. 芯片外观
华邦W25QXX系列芯片采用SOIC封装,以下是其外观示意图:
2. 功能和特性
华邦W25QXX系列包括W25Q32、W25Q64、W25Q128等型号,分别对应不同的存储容量。该系列支持SPI的三种模式:
- 标准SPI:CLK, /CS, DI, DO
- 双线SPI:CLK, /CS, IO0, IO1
- 四线SPI:CLK, /CS, IO0, IO1, IO2, IO3
其主要性能参数如下:
- 133MHz单线、双线/四线SPI时钟
- 266/532MHz等效双线/四线SPI
- 66MB/S连续数据传输速率
3. 存储结构
不同容量的Flash存储结构如下:
- W25Q32JV:1024个可擦除扇区(sectors),或64个可擦除块(blocks)。关系为1 Block = 16 sectors,1 sector = 4KB,总容量为4M-byte。
- W25Q64JV:2048个可擦除扇区(sectors),或128个可擦除块(blocks)。关系为1 Block = 16 sectors,1 sector = 4KB,总容量为8M-byte。
编程写数据时,由于Flash的特性,只能从1编程0,因此写数据前需要先擦除,将数据恢复为0xFF。
上电后设备自动处于写禁用状态(Write Enable Latch, WEL为0)。在进行Page Program、Sector Erase、Block Erase、Chip Erase或Write Status Register指令前,必须先进行写使能指令。指令完成后,WEL会自动变为0。
BUSY位是状态寄存器0的第0位,当执行页编程、区擦除、块擦除、芯片擦除、写状态寄存器、擦除/编程安全寄存器指令时,其值为1,期间不再接收新的指令,但可以接收读状态寄存器指令和擦除编程挂起指令。
4. SPI通信
常用标准SPI模式进行数据读写。SPI通信包含四根数据线:片选CS、时钟CLK、数据输入DI、数据输出DO。
5. 器件信息
华邦品牌系列的代号为EFh。不同容量的Flash对应不同的容量代号:
- W25Q32:15h
- W25Q64:16h
- W25Q128:17h
- W25Q256:18h
6. 寄存器
该Flash包含多个状态寄存器,提供了有关闪存阵列可用性、设备可写状态、写保护状态、Quad SPI设置、安全寄存器锁定状态、擦除/编程挂起状态、输出驱动强度和上电状态的信息。
7. 指令解析
该Flash支持的指令长度不是固定的,可以是单独一个指令,也可以是指令+数据的形式。具体格式需要根据指令类型决定。例如,读取制造商/设备ID(90h)指令后需要接24bit值为0的地址,最后返回两个字节的数据。
8. 读取SFDP
Serial Flash Discoverable Parameter(SFDP)包含有关设备配置、可用指令和其他功能的信息。读取SFDP的指令是5Ah,需要接24bit地址和一个dummy byte,使用0填充即可,返回数据共256byte。
SFDP标准(JESD216)自2011年发布以来,已经迭代了多个版本,目前的版本号是V1.0。开发人员可通过发送操作指令0x5A来读取当前Flash的SFDP相关内容,这有利于开发人员了解Flash之间的差异,提高开发效率,缩短整个开发周期。
总结
本文详细介绍了华邦W25QXX系列串行Flash的主要特性和使用方法,包括其存储结构、SPI通信方式、指令集以及SFDP参数等内容。对于从事嵌入式系统开发、FPGA设计或者相关硬件开发的工程师来说,这些知识具有很高的参考价值。