W25Q128

目录

1. 概述

2. 通信模式

2.1 Standard SPI

2.2 Dual SPI

2.3 Quad SPI

2.4 QPI

3 状态和配置寄存器

3.1 状态寄存器1

3.2  状态寄存器2

3.3  状态寄存器3

4. SPI指令集 

 4.1 Write Enable (06h)

​4.2 Write Disable (04h)

4.3 Read Status Register-1 (05h), Status Register-2 (35h) & Status Register-3 (15h)

​4.4 Write Status Register-1 (01h), Status Register-2 (31h) & Status Register-3 (11h)

4.5 Chip Erase (C7h / 60h)

​4.6 Read Manufacturer / Device ID (90h)

​4.7 Read JEDEC ID (9Fh)

​4.8 Read Unique ID Number (4Bh)

4.9 Page Program (02h)

​4.10 Sector Erase (20h)

​4.11 32KB Block Erase (52h)

​4.12 64KB Block Erase (D8h)

​4.13 Read Data (03h)

1. 概述

        W25Q128FV阵列被组织成65,536个可编程页面,每个页面256字节。每次最多可编程256字节。可以以16页为一组(即一个Sector)、128页为一组(8个Sector)、256页为一组(16个Sector)或整个芯片(芯片擦除)进行擦除。W25Q128FV分别有4,096个可擦除扇区和256个可擦除块。较小的4KB扇区为需要数据和参数存储的应用程序提供了更大的灵活性。

        标准SPI通信支持时钟频率高达104MHz,Dual SPI通信支持时钟频率高达208MHz,QSPI通信支持时钟频率高达416MHz。

        注意:W25Q128一共为128M bits(16M Byte),又分为256个块(每个块512K bit(64K Byte)),每个块又分为16个扇区(每个扇区32K bit(4 KByte)),每个扇区又分为16页(每个页2K bit(256 Byte))

2. 通信模式

2.1 Standard SPI

        W25Q128FV通过SPI兼容总线访问,该总线由四个信号组成:串行时钟(CLK),芯片选择(/CS),串行数据输入(DI)和串行数据输出(DO)。标准SPI指令使用DI输入引脚串行地向CLK上升沿上的设备写入指令、地址或数据。DO输出引脚用于从CLK下降沿上的设备读取数据或状态。SPI总线工作模式支持模式 0(CPOL = 0, CPHA = 0)和模式3(CPOL = 1, CPHA = 1)。模式0和模式3之间的主要区别是当SPI总线主总线处于备用状态并且数据不被传输到串行闪存时CLK信号的正常状态。对于模式0,CLK信号在/CS的下降沿和上升沿通常是低的。对于模式3,CLK信号在/CS的下降沿和上升沿上通常是高的。

2.2 Dual SPI

        W25Q128FV在使用“快速读取双输出(3Bh)”和“快速读取双I/O (BBh)”等指令时支持双SPI操作。这些指令允许数据以普通串行闪存设备的两到三倍的速率传输到设备或从设备传输。双SPI Read指令非常适合在上电时将代码快速下载到RAM(代码阴影)或直接从SPI总线(XIP)执行非速度关键代码。当使用双SPI指令时,DI和DO引脚变成双向I/O引脚:100和I01。

2.3 Quad SPI

        W25Q128FV在使用“快速读四元输出(6Bh)”、“快速读四元I/O (EBh)”、“字读四元I/O (E7h)”和“八进制字读四元I/O (E3h)”等指令时支持四元SPI操作。这些指令允许数据传输到或从设备的速度是普通串行闪存的四到六倍。Quad Read指令在连续和随机访问传输速率方面提供了显着改进,允许快速代码阴影到RAM或直接从SPI总线(XIP)执行。当使用Quad SPI指令时,DI和DO引脚分别变为双向IO0和IO1, WP和/HOLD引脚分别变为IO2和IO3。Quad SPI指令要求在状态寄存器-2中设置非易失的Quad使能位(QE)。

2.4 QPI

        W25Q128FV支持Quad Peripheral Interface (QPI)操作,只有当设备使用“Enter QPI (38h)”指令从标准/双/四SPI模式切换到QPI模式时。典型的SPI协议要求字节长的指令代码只能通过8个串行时钟中的DI引脚转移到设备中。QPI模式利用所有四个IO引脚输入指令代码,因此只需要两个串行时钟。这可以显著减少SPl指令开销,并提高XIP环境中的系统性能。标准/双/四SPl模式和QPI模式是不兼容的。在任何给定时间,只能有一种模式处于活动状态。使用“进入QPI (38h)”和“退出QPI (FFh)”指令在这两种模式之间切换。上电或使用“reset (99h)”指令进行软件复位后,设备的默认状态为标准/双路/四路SPI模式。为了使能QPI模式,需要设置Status Register-2中的非易失性Quad enable位(QE)。当使用QPI指令时,DI和DO引脚分别变成双向IO0和IO1, WP和/HOLD引脚分别变成IO2和IO3。

3 状态和配置寄存器

        W25Q128FV提供三个状态寄存器和配置寄存器。读取状态寄存器1/2/3指令可用于提供闪存阵列可用性的状态,设备是否启用或禁用写入,写保护状态,Quad SPI设置,安全寄存器锁定状态,擦除/程序挂起状态,输出驱动程序强度,上电和当前地址模式。写状态寄存器指令可用于配置设备写保护功能,Quad SPI设置,安全寄存器OTP锁定,保持/复位功能,输出驱动程序强度和上电地址模式。对状态寄存器的写访问由非易失性状态寄存器保护位(SRPO, SRP1)的状态、写使能指令以及在标准/双SPI操作期间的/WP引脚控制。

3.1 状态寄存器1

  •  Erase/Write In Progress (BUSY) – 只读

        BUSY是状态寄存器(SO)中的只读位,当设备执行页程序、Quad 页程序、扇区擦除、块擦除、芯片擦除、写状态寄存器或擦除/程序安全寄存器指令时,该寄存器被设置为1状态。在此期间,设备将忽略除读状态寄存器和擦除/程序暂停指令之外的其他指令(参见交流特性中的tw, tPP, tsE, be和tce)。当程序、擦除或写状态/安全寄存器指令完成时,BUSY位将被清除为0状态,表明设备已准备好接受进一步的指令。

  • Write Enable Latch (WEL) – 只读

        写使能锁存(WEL)是状态寄存器(S1)中的一个只读位,在执行写使能指令后被设置为1。当设备被禁止写时,WEL状态位被清除为0。写禁用状态发生在上电或以下任何指令之后:写禁用、页程序、Quad 页程序、扇区擦除、块擦除、芯片擦除、写状态寄存器、擦除安全寄存器和程序安全寄存器。

  • Block Protect Bits (BP2, BP1, BP0) – 读写

        块保护位(BP2、BP1、BPO)是状态寄存器(S4、S3和S2)中的非易失读写位,提供写保护控制和状态。块保护位可以使用写状态寄存器指令设置(参见交流特性中的2)。所有,无或内存数组的一部分可以不受程序和擦除指令的保护(参见状态寄存器内存保护表)。“块保护位”的出厂默认设置为“0”,表示不保护任何阵列。

  • Top/Bottom Block Protect (TB) – 读写

        非易失性的上/下位(TB)控制块保护位(BP2, BP1, BPO)是否保护数组的上(TB=0)或下(TB=1),如状态寄存器内存保护表所示。出厂默认设置为TB-0。TB位可以根据SRPO、SRP1和WEL位的状态通过写状态寄存器指令来设置。该位配合BP2,BP1,BP0控制着着保护哪一块区域的内存,具体可以看看手册上的状态寄存器内存保护表(Status Register Memory Protection Table)。

  • Sector/Block Protect Bit (SEC) – 读写

         该位为1表示保护的是4KB扇区,为0表示保护的是64KB扇区。同样可以参考状态寄存器的内存保护表

  • Status Register Protect (SRP1, SRP0) – 读写

        配合SRP1和WP引脚来决定写保护的方式。有软件保护、硬件保护、电源供应上锁、一次性可编程保护

3.2  状态寄存器2

  • Erase/Program Suspend Status (SUS) – 只读

        当执行擦除/编程挂起(75H)指令时,该位置1。当执行擦除/编程恢复指令(7AH),或者断电上电时该位为0

  •  Security Register Lock Bits(LB3,LB2,LB1)(一次性可编程)

        安全寄存器锁位(LB3, LB2, LB1)是状态寄存器(S13, S12, S11)中的非易失一次性程序(OTP)位,为安全寄存器提供写保护控制和状态。LB3-1缺省状态为0,安全寄存器未锁定。LB3-1可以使用写状态寄存器指令单独设置为1。LB3-1是一次性可编程(OTP),一旦设置为1,对应的256字节安全寄存器将永久变为只读。

  • Complement Protect (CMP) – 读写

        补码保护位(CMP)是状态寄存器(S14)中的一个非易失读写位。它与SEC、TB、BP2、BP1和BPO位配合使用,为阵列保护提供更大的灵活性。一旦CMP设置为1,之前SEC、TB、BP2、BP1和BPO设置的阵列保护将被逆转。例如,当CMP=0时,可以保护顶部64KB的块,而数组的其余部分不受保护;当CMP=1时,顶部64KB块将变得不受保护,而数组的其余部分变为只读。详细信息请参考状态寄存器内存保护表。默认为CMP-O。

  • Quad Enable (QE) – 可写

        Quad Enable (QE)位是状态寄存器(S9)中的非易失读/写位,允许Quad SPI和QPI操作。当QE位设置为0状态时(零件号的出厂默认值,订购选项为“IG”,“IP”和“IF”),/WP引脚和/HOLD被启用。当QE位设置为1(工厂默认为Quad Enabled部件号,订购选项“IQ”)时,Quad IO2和IO3引脚被启用,/WP和/HOLD功能被禁用。在发出“Enter QPl (38h)”命令将设备从标准/双/四SPI切换到QPI之前,需要将QE位设置为1,否则该命令将被忽略。当器件处于QPI模式时,QE位保持为1。QPI模式下的“写状态寄存器”命令不能将QE位从“1”修改为“0”。

3.3  状态寄存器3

  •  Write Protect Selection (WPS) – 可写

        WPS位用于选择使用哪种写保护方案。当WPS-0时,设备将使用CMP、SEC、TB、BP[2:0]位的组合来保护存储器阵列的特定区域。当WPS=1时,设备将利用单个块锁来保护任何单个扇区或块。在设备上电或复位后,所有单个块锁定位的默认值为1。

  • Output Driver Strength (DRV1, DRV0) – 可写

        DRV1和DRVO位用于确定读操作的输出驱动强度。

  • /HOLD or /RESET Pin Function (HOLD/RST) – 可写

        HOLD/RST位用于确定8脚封装的硬件引脚上是否应该实现/HOLD或/RESET功能。当HOLD/RST=0(出厂默认)时,引脚充当/HOLD;当HOLD/RST=1时,引脚充当/RESET。但是,/HOLD或/RESET函数仅在QE=0时可用。如果QE设置为1,则/HOLD和/RESET功能被禁用,该引脚作为专用数据I/O引脚。

4. SPI指令集 

        Flash编程只能将1写为0,而不能将0写成1。所以我们需要在写内存的时候将内存擦除,使用内存擦除指令擦除内存,内存变为0xFF,然后再写内存。有时候我们可能要格式化内存,那么就还需要整片擦除指令。

 4.1 Write Enable (06h)

        写使能指令将状态寄存器中的写使能锁存(WEL)位设置为1。WEL位必须在每个页程序、Quad 页程序、扇区擦除、块擦除、芯片擦除、写状态寄存器和擦除/程序安全寄存器指令之前设置。通过低电平驱动/CS,将指令码“06h”移动到CLK上升沿的数据输入(DI)引脚,然后高电平驱动/CS进入写使能指令。

 4.2 Write Disable (04h)

        写禁用指令将状态寄存器中的写使能锁存(WEL)位重置为0。通过低电平驱动/CS,将指令码“04h”移到DI引脚,然后高电平驱动/CS进入Write Disable指令。请注意,WEL位在上电后并在完成写状态寄存器、擦除/程序安全寄存器、页程序、Quad 页程序、扇区擦除、块擦除、芯片擦除和重置指令后自动复位。

4.3 Read Status Register-1 (05h), Status Register-2 (35h) & Status Register-3 (15h)

        读状态寄存器指令允许读取8位状态寄存器。通过驱动/CS低电平并将状态寄存器-1的指令码“05h”、状态寄存器-2的指令码“35h”或状态寄存器-3的指令码“15h”移到CLK上升沿的DI引脚上进入指令。然后,状态寄存器位在CLK下降沿的DO引脚上首先以最高有效位(MSB)移出。

        读状态寄存器指令可以在任何时候使用,即使在程序、擦除或写状态寄存器周期进行时也是如此。这允许检查BUSY状态位,以确定周期何时完成以及设备是否可以接受另一条指令。可以连续读取状态寄存器,指令由驱动/CS高完成。

4.4 Write Status Register-1 (01h), Status Register-2 (31h) & Status Register-3 (11h)

        写状态寄存器指令允许写状态寄存器。状态寄存器的可写位包括:状态寄存器-1中的SRPO、SEC、TB、BP[2:0];CMP, LB[3:1], QE, SRP1 in Status Register-2;状态寄存器3中的HOLD/RST, DRV1, DRVo, WPS和ADP。所有其他状态寄存器位都是只读的,不会受到写状态寄存器指令的影响。LB[3:1]是非易失性OTP位,一旦设置为1,就不能清除为0。

        要写入非易失性状态寄存器位,必须事先执行标准的写使能(06h)指令,设备才能接受写状态寄存器指令(状态寄存器位WEL必须等于1)。一旦写使能,指令通过驱动/CS低电平进入,发送指令代码“01h/31h/11h”,然后写入状态寄存器数据字节。

        要写易失性状态寄存器位,必须在写状态寄存器指令之前执行易失性状态寄存器的写使能(50h)指令(状态寄存器位WEL保持为0)。然而,由于这些位的OTP保护,SRP1和LB[3:1]不能从“1”更改为“0”。当下电或执行软/硬件复位时,易失的状态寄存器位值将丢失,而非易失的状态寄存器位值将恢复。

        在非易失性状态寄存器写入操作期间(06h结合01h/31h/11h),在/CS被驱动高电平后,自定时写入状态寄存器周期将开始,持续时间为tw(参见AC特性)。当写状态寄存器周期正在进行时,读状态寄存器指令仍然可以被访问以检查BUSY位的状态。BUSY位在写状态寄存器周期中为1,当周期结束并准备再次接受其他指令时为0。在写状态寄存器周期结束后,状态寄存器中的写使能锁存(WEL)位将被清除为0。

        在易失性状态寄存器写操作(50h结合01h/31h/11h)期间,/CS被驱动高电平后,状态寄存器位在tsHSL2时间段内刷新到新的值(参见AC特性)。在状态寄存器位刷新期间,BUSY位将保持0。

4.5 Chip Erase (C7h / 60h)

        Chip Erase指令将设备内的所有内存设置为所有1s (FFh)的擦除状态。在设备接受芯片擦除指令(状态寄存器位WEL必须等于1)之前,必须执行写使能指令。该指令通过驱动/CS引脚低电平并移动指令码“C7h”或“60h”来启动。

        在第8位锁存后,/CS引脚必须驱动到高位。如果不这样做,芯片擦除指令将不会被执行。在/CS被驱动到高电平后,自定时芯片擦除指令将开始tcE的持续时间(参见AC特性)。当芯片擦除周期正在进行时,读取状态寄存器指令仍然可以被访问以检查BUsY位的状态。BUSY位在芯片擦除周期中是1,当完成并且设备准备好再次接受其他指令时变为O。在芯片擦除周期完成后,状态寄存器中的写使能锁存(WEL)位被清除为0。如果任何内存区域受到块保护(CMP, SEC, TB, BP2, BP1和BPO)位或单个块/扇区锁的保护,则芯片擦除指令将不会执行。

4.6 Read Manufacturer / Device ID (90h)

         读取制造商/设备ID指令是下电/设备释放指令的另一种选择提供JEDEC指定的制造商ID和特定设备ID的ID指令。

4.7 Read JEDEC ID (9Fh)

        出于兼容性原因,W25Q128FV提供了几个指令,以电子方式确定设备的身份。读取JEDEC ID指令与2003年采用的SPI兼容串行存储器的JEDEC标准兼容。指令通过驱动/CS引脚低电平并移动指令码“9Fh”来启动。JEDEC为Winbond分配的制造商ID字节(EFh)和两个设备ID字节,内存类型(ID15-ID8)和容量(ID7-IDO),然后在CLK的下降沿上以最高有效位(MSB)先移出

4.8 Read Unique ID Number (4Bh)

        Read Unique ID Number指令访问一个出厂设置的只读64位数字,该数字对每个W25Q128FV设备都是唯一的。ID号可以与用户软件方法一起使用,以帮助防止复制或克隆系统。读取唯一ID指令是通过驱动/CS引脚低和移动指令代码“4Bh”,然后是四个字节的虚拟时钟来启动的。之后,64位ID在CLK的下降沿上移出

4.9 Page Program (02h)

        Page Program指令允许在先前擦除(FFh)内存位置对1到256字节(一页)的数据进行编程。在设备接受页程序指令(状态寄存器位WEL- 1)之前,必须执行写使能指令。该指令是通过驱动/CS引脚低,然后将指令代码“02h”后面跟着一个24位地址(A23-A0)和至少一个数据字节移动到DI引脚来启动的。当数据被发送到设备时,/CS引脚必须在指令的整个长度内保持低电平。

        如果要对整个256字节的页面进行编程,最后一个地址字节(8个最低有效地址位)应该设置为0。如果最后一个地址字节不为零,并且时钟的数量超过了剩余的页长度,则寻址将换行到页的开头。在某些情况下,可以编程少于256字节(部分页),而不会对同一页中的其他字节产生任何影响。执行部分页程序的一个条件是时钟的数量不能超过剩余的页长度。如果发送到设备的字节超过256个,寻址将封装到页的开头,并覆盖以前发送的数据

        写质量和擦除指令一样,在最后一个字节的第8位锁存之后,/CS引脚必须被驱动到高位。如果不这样做,页面程序指令将不会被执行。当/CS被调高后,自定时的页面程序指令将在tpp的时间段内开始。当页程序周期正在进行时,读取状态寄存器指令仍然可以被访问以检查BUSY位的状态。BUSY位在页程序周期中是1,当周期结束并且设备准备好再次接受其他指令时变为0。在页面程序周期完成后,状态寄存器中的写使能锁存(WEL)位被清除为0。如果寻址页被块保护(CMP、SEC、TB、BP2、BP1和BPO)位或单个块/扇区保护,则页程序指令将不会被执行 

4.10 Sector Erase (20h)

        扇区擦除指令将指定扇区内的所有内存(4k字节)设置为所有15 (FFh)的擦除状态。在设备接受扇区擦除指令(状态寄存器位WEL必须等于1)之前,必须执行写使能指令。该指令通过驱动/CS引脚低电平并移动24位扇区地址(A23-AO)后的指令代码“20h”来启动。

        在最后一个字节的第8位锁存之后,/CS引脚必须被驱动到高位。如果没有这样做,扇区擦除指令将不会被执行。在/CS被驱动到高电平后,自定时扇区擦除指令将开始tsE的持续时间(参见AC特性)。当扇区擦除周期正在进行时,读取状态寄存器指令仍然可以被访问以检查BUSY位的状态。在扇区擦除周期中,BUSY位为1,当周期结束,设备准备好再次接受其他指令时,BUSY位变为0。在扇区擦除周期结束后,状态寄存器中的写使能锁存(WEL)位被清除为o。如果寻址页受到块保护(CMP, SEC, TB, BP2, BP1和BPO)位或单个块/扇区锁的保护,则扇区擦除指令将不会执行。

4.11 32KB Block Erase (52h)

        Block Erase指令将指定块(32k字节)内的所有内存设置为所有1s (FFh)的擦除状态。在设备接受块擦除指令(状态寄存器位WEL必须等于1)之前,必须执行写使能指令。该指令通过驱动/CS引脚低并移动24位块地址(A23-AO)后的指令代码“52h”来启动。

        在最后一个字节的第8位锁存之后,/CS引脚必须被驱动到高位。如果不这样做,块擦除指令将不会被执行。在/CS被驱动到高电平后,自定时块擦除指令将开始be1的持续时间(参见AC特性)。当块擦除周期正在进行时,读取状态寄存器指令仍然可以被访问以检查BUSY位的状态。BUSY位在块擦除周期中为1,当周期结束并且设备准备好再次接受其他指令时变为0。在Block Erase周期结束后,状态寄存器中的写使能锁存(Write Enable Latch, WEL)位被清除为o。如果寻址页受到Block Protect (CMP、SEC、TB、BP2、BP1和BPO)位或单个块/扇区锁的保护,则Block Erase指令将不会被执行。

4.12 64KB Block Erase (D8h)

        Block Erase指令将指定块(64k字节)内的所有内存设置为所有1s (FFh)的擦除状态。在设备接受块擦除指令(状态寄存器位WEL必须等于1)之前,必须执行写使能指令。该指令通过驱动/CS引脚低并移动24位块地址(A23-AO)后的指令代码“D8h”来启动。

        在最后一个字节的第8位锁存之后,/CS引脚必须被驱动到高位。如果不这样做,块擦除指令将不会被执行。在/CS被驱动到高电平后,自定时块擦除指令将开始一段时间(见交流特性)。当块擦除周期正在进行时,读取状态寄存器指令仍然可以被访问以检查BUSY位的状态。BUSY位在块擦除周期中为1,当周期结束并且设备准备好再次接受其他指令时变为0。在Block Erase周期结束后,状态寄存器中的写使能锁存(Write Enable Latch, WEL)位被清除为0。如果寻址页受到Block Protect (CMP、SEC、TB、BP2、BP1和BPO)位或单个块/扇区锁的保护,则Block Erase指令将不会被执行。

4.13 Read Data (03h)

        读取数据指令允许从内存中按顺序读取一个或多个数据字节。该指令是通过驱动/CS引脚低,然后将指令代码“03h”和24位地址(A23-AO)转移到DI引脚来启动的。代码和地址位锁存在CLK引脚的上升沿上。接收到地址后,寻址内存位置的数据字节将首先以最高有效位(MSB)在CLK下降沿的DO引脚上移出。在每个字节的数据被移出后,地址自动增加到下一个更高的地址,从而允许连续的数据流。这意味着只要时钟继续,就可以用一条指令访问整个内存。指令由驱动/CS高完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值