1、Flash 存储 W25Q16 芯片 1 一般描述 W25Q16BV(16M-bit)是为有限的空间、引脚和功耗的系统提供一个存储解决方案。 25Q系列比普通的串行 Flash存储器更灵活,性能更优越。基于双倍 /四倍的 SPI,它们能够可以立即完成提供数据给 RAM,包括存储声音、文本和数据。芯片支持的工作电压 2.7V到3.6V,正常工作时电流小于 4mA,掉电时低于 1uA。工作温度为 -40 到 85 。所有芯片提供标准的封装。 W25Q16BV 由 8192 个编程页组成,每个编程页 256-bytes。每页的 256 字节用一次页编程指令即可完成。每次擦除 16页(扇区擦除)、 1
2、28页( 32KB 块擦除)、 256页( 64KB块擦除)和全片擦除。 W25Q16BV 有 512个可擦除扇区或 32个可擦除块。最小4KB扇区允许更灵活的应用去要求数据和参数保存(见图 2)。 W25Q16BV 支持标准串行外围接口( SPI),和高速的双倍 /四倍输出,双倍 /四倍用的引脚:串行时钟、片选端、串行数据 I/O0(DI)、 I/O1(DO)、 I/O2(WP)和 I/O3(HOLD)。SPI最高支持 104MHz,双倍速是 208MHz,四倍速是 416MHz。这个传输速率比得上 8位和 16位的并行 Flash存储器。连续读模式允许利用少至 8-clocks指令去读取
3、24-bit 地址来实现高效的存储访问,允许真正的 XIP(execute in place)操作。 HOLD 引脚和写保护引脚可编程写保护。此外,芯片支持 JEDEC标准,具有唯一的 64位识别序列号。 2 特 性 l SPI串行存储器系列 灵活的 4KB扇区结构 -W25Q80:8M位 /1M字节 (1,048,576) -统一的扇区擦除( 4K 字节) -W25Q16:16M位 /2M字节 (2,097,152) -块擦除( 32K和 64K 字节) -W25Q32:32M位 /4M字节 (4,194,304) -一次编程 256字节 -每 256字节可编程页 -至少 100,000 写
4、 /擦除周期 -数据保存 20年 标准、双倍和四倍 SPI -标准 SPI:CLK、 CS、 DI、 DO、 WP、 HOLD 高级的安全特点 -双倍 SPI:CLK、 CS、 IO0、 IO1、 WP、 HOLD -软件和硬件写保护 -四倍 SPI:CLK、 CS、 IO0、 IO1、 IO2、 IO3 -选择扇区和块保护 -一次性编程保护(1) 高性能串行 Flash存储器 -每个设备具有唯一的64位 ID(1) -比普通串行 Flash性能高 8倍 注 1: -104MHz时钟频率 这些特点在特殊订单中。 -双倍 SPI相当于 208MHz 请联 系 Winbond 获得更详细资料。 -
5、四倍 SPI相当于 416MHz 封装 -40MB/S连续传输数据 -8-pinSOIC 208-mil -50MB/S随机存取(每 32字节) -8-padWSON 高效 ”持续读模式 ” -短指令 -少至 8个时钟到达 1个地址内存 -允许真正 XIP操作 -强过并行 Flash强 16倍 5 8个脚的引脚图类似如下。 6 引脚描述 7 16个脚的引脚图类似如下, N/C 表示 not connect 8.1 封装类型 W25Q16BV 提供了 8-pin塑料 150-mil 或者 208-mil宽度 SOIC(封装代号 SNTB=1,底部 )是否出现在状态寄存器保护列表里,非易失TB位决
6、定块保护位 (BP2、 BP1、 BP0) 是否受保护。 TB出厂设置为 0。 TB位可以通过基于 SRP0、 SRP1和 WEL位的写状态寄存器指令设置。 11.1.5 扇区 /块保护 (Sector/BlockProtect-SEC) 非易失性扇区保护位 (SEC)控制 块保护位 (BP2、 BP1、 BP0)是否保护 TB数组里的 4KB扇区 (SEC=1)或者 64KB块 (SEC=0)。这个 TB(TB=0,顶端 ;TB=1,底部 )数组显示在 状态寄存器保护列表中。 SEC 默认设置为 0。 11.1.6 状态寄存器保护 (SRP1,SRP0) 状态寄存器保护位 (SRP1和 SR
7、P0)在状态寄存器 (S8、 S7)中是非易失性读写位。SRP 控制写保护方式:软件保护、硬件保护、掉电或者一次性可编程保护。 11.1.7 擦除暂停状态 (EraseSuspend Status-SUS) 暂停状态位在状态寄存器 (S15)中是个只读位。它在执行一次擦除暂停指令 (75h)后自动置成 1。在擦除恢复指令 (7Ah)后自动清 0.如同掉电、上电 循环一样。 11.1.8 四倍使能 (QuadEnable-QE) 四倍使能位在状态寄存器 (S9)中是个非易失性读写位。它允许四倍 SPI操作。 QE 位为 0时 (出厂默认值 ), /WP 脚和 /HOLD 启用。 QE为 1时,四
8、倍 IO2 和 IO3启用, /WP脚和 /HOLD 停用。 WARNING:如果 /WP或者 /HOLD 脚在标准 SPI或者二倍速 SPI操作中直接连接到电源或者接地, QE位将不能设成 1。 11.1.9 状态寄存器内存保护 11.2 指令集 W25Q16BV 指令集包含 30 个基础指令。他们都是通过 SPI总线受控。指令在片选 (/CS)下降沿初始化。 DI 输入上的第一个字节提供指令码。 DI输入上的数据在时钟的上升沿按照最重要标志位优先级取样。 指令长度变化单个字节到几个字节不等。可能按照地址字节,数据字节,空字节。或某些情形下的一个组合。指令完成在片选信号 (/CS)的上升沿。
9、所有的读指令可以在任意时钟里成。然而,像写指令、编程写、或擦除指令必须在一个字节边界里完成(一个 8bit计时后,片选 (/CS)驱动就会变高。此外,内存在 编程写或者擦除时,或者在写状态寄存器时,除了读状态寄存器以外的指令都被忽略,直到编程写或者擦除循环完成。 11.2.1 制造商和设备识别码 11.2.2 指令集表 1(擦除,编程指令) Notes: 1.数据字节按照 MSB(MostSignificant Bit first)顺序提交。字节区域用 “()”表示数据从 DO脚读取 2.状态寄存器的内容会不断重复,直到 / CS终止指令。 3.四倍速页编程输入数据: IO0 = ( D4,D
10、0, ) IO1 = ( D5,D1, ) IO2 = ( D6,D2, ) IO3 = ( D7,D3, ) 4.使用双倍速或四倍速 “持续读取模式 ”时,推荐采用 “Continuous Read Mode Reset”指令。 11.2.3 指令集表 2(读取指令) 11.2.4 指令集表 3(ID、安全指令 ) 11.2.5 写使能 (06h) 写使能指令会将状态寄存器中的写使能锁 WEL位置成 1.WEL位优先级需高于页编程、扇区擦除、块擦除、芯片擦除以及读状态寄存器 指令。写使能指令通过使片选信号 (/CS)低电平,在时钟信号( CLK)上升沿时提取指令码 “06h”到 DI引脚时载
11、入,然后在片选信号高电平时驱动。 11.2.6 禁止写 (04h) 禁止写指令会将状态寄存器中的写使能锁 WEL位置成 0.禁止写指令通过驱动片选信号低电平,提取指令码 ”04h”到 DI脚时载入,然后在片选信号高电平时驱动。记住, WEL位在加电、写状态寄存器、页编程、块擦除、芯片擦除指令完成后自动重置。 11.2.7读状态寄存器 1(05h) 和 读状态寄存器 2(35h) 读状态寄存器指令允许读取 8-bit状态寄存器。这个指令通过驱动片选信号 (/CS)为低电平时,然后在时钟信号 (CLK)上升沿提取指令码 (05h-寄存器 1;35h-寄存器 2)送入 DI脚时载入。状态寄存器位在时
12、钟信号下降沿按照 MSB顺序取出,送到 DO引脚。状态寄存器位参考图标 3a和 3b。 读状态寄存器指令可以在任何时间使用。这就允许通过检查 BUSY状态位来判断循环指令是否完成、设备能否接受其他指令。状态寄存器可以持续读取。该指令在片选信号高电平时完成。 11.2.8 写状态寄存器 (01h) 写状态指令允许状态寄存器可写。 必须先执行写使能指令,从而使设备能够接收到写状态寄存器指令(状态寄存器 WEL位必须为 1)。一旦写使能,该指令通过使片选信号低电平,发送指令码 ”01h”,然后写状态寄存器数据字节时载入。 仅非易失性状态寄存器位 SRP0, SEC, TB, BP2, BP1, BP
13、0(对应状态寄存器 1的第 7位,第 5位,第 4位,第 3位,第 2位) 以及 QE, SRP1(状态寄存器 2的第 9,第 8位)是可写的。其他只能的状态寄存器位不受写状态寄存器影响。 在第 8个或者第 16个时钟后,必须拉高片选信号。如果不这样 操作,将不执行写状态寄存器指令。如果第 8个时钟后片选信号被拉高,则 QE和 SRP1位将清 0。在片选信号被置为高电平时,自计时写寄存器循环将着手一个 tw(参见 AC特性 )的时间间隔。写状态寄存器循环在执行时,然后可以检查寄存器 BUSY位。 BUSY为 1,则表示正在写寄存器;为 0,表示写循环完成或在准备接收其他指令。写寄存器指令完成后
14、 WEL 位将被清 0。 写状态寄存器指令可以设置块保护位 (SEC, TB, BP2, BP1以及 BP0),用来保护擦除和编程写指令时的内存。被保护区变成只读。 它也可以设置状态 寄存器保护位 (SRP0,SRP1)。这些位与写保护引脚 (/WP)连接,锁起或者一次性编程 (OTP)特性来禁止写状态寄存器。所有状态寄存器位的出厂默认设置都为 0。 11.2.9 读数据 (03h) 这个指令可以按顺序从内存中读出一个或多个数据字节。这个指令通过拉低片选信号,提取指令码 ”03h”加上一个 24-bits地址 (A23-A0) 放到 DI引脚中来初始化。指令码和地址位在时钟信号的上升沿载入。当
15、地址接受后,按照 MSB原则在时钟信号下降沿将指定地址上的内存数据将被提取到 DO引脚。当一个字节取 出后,地址自增长,从而组成一个连续数据流。这意味着整个内存读可以通过单一的指令来访问,只要时钟一直继续。片选信号为高电平时该指令结束。 当正在擦除指令、编程写、或者写循环 (BUSY = 1)时,读数据指令将被忽略并且在当前循环中不起作用。读数据指令允许时钟速率从 D.C. 到 fR的最大值 (参见 AC电子特性 ) 11.2.10 快速读 (0Bh) 快速读类似于 在较高的 FR频率下执行读数据指令。它通过在 24-bit地址后面加入 8个空时钟来实现的。如图 9所示。空时钟可以让设备内部
16、电路补充时间来设置初始地址。在这空时钟, DO引脚上的数据是无用的,可以不关注。 11.2.11 快速读双倍输出 (3Bh) 快速读双倍输出指令类似于 标准快速读指令 (0Bh),用 IO0 和 IO 1 两个引脚输出。这样数据就可以在 W25Q16BV上以标准 SPI设备两倍的速率传递。快速读双倍输出指令可以从Flash里快速下载代码到 RAM去执行。 类似于快速读指令,快速读双倍输出指令可以在 Fr高频率下操作。通过在 24-bit地址后面加入 8个空时钟来实现的。空时钟可以让设备内部电路补 充时间来设置初始地址。空时钟期间, DO引脚上的数据是无用的,可以不关注。但是, IO 0 引脚在
17、第一个数据输出时钟的下降沿时必须是高阻抗。 12.2.12快速读四倍输出 (6Bh) 快速读四倍输出 同快速读双倍输出 (3Bh)类似,只是通过 IO 0 、 IO1、 IO2、 IO3 四个引脚输出。在接受快速读四倍输出指令前,状态寄存器 2中的四倍使能必须启用( QE =1)。 其他同快速读双倍输出 (3Bh)。 11.2.13 快速读 双倍 I/O (BBh) 快速读 双倍 I/O指令可以提升随机访 问同时维护 2个 IO引脚, IO 0 和 IO 1。它类似于快速读双倍输出 (3Bh),但是每个时钟读入 2个地址 (A23-0)。在某些程序中这种减少指令开销可以直接在双倍 SPI上执行代码 (XIP)。 快速读 双倍 I/O 之 持续读模式 快速读 双倍 I/O指令通过在输入地址位( A23-0)后设置 ”连续读取模式 ”