大家好,又见面了,我是你们的朋友全栈君。
该文章包括W25Q128FV译文的第7章状态寄存器翻译及第八章指令部分翻译链接,
第1章至第六章翻译链接:https://blog.csdn.net/z123canghai/article/details/88700489
第八章指令剩余部分及第九章相关时序翻译链接:https://blog.csdn.net/z123canghai/article/details/88727413
目录
七、状态和配置寄存器
7.1状态寄存器
7.1.1 擦除/写进程中 (BUSY) – 只读
7.1.2 写使能锁存 (WEL) –只读
7.1.3块保护位(BP2, BP1, BP0) – 易失性/非易失性可写位
7.1.4 顶部/底部位(TB)控制块保护位–易失性/非易失性可写位
7.1.5 扇区/块保护位 (SEC) –易失性/非易失性可写位
7.1.6补码保护位(CMP) –易失性/非易失性可写位
7.1.7状态寄存器保护位(SRP1, SRP0) –易失性/非易失性可写位
7.1.8 擦除/编程挂起状态 (SUS) –只读
7.1.9安全寄存器锁定位(LB3,LB2,LB1) – Volatile/Non-Volatile OTP Writable
7.1.10 Quad Enable (QE) –易失性/非易失性可写位
7.1.11 写保护选择位(WPS) –易失性/非易失性可写位
7.1.12 输出强度控制位 (DRV1, DRV0) –易失性/非易失性可写位
7.1.13 /HOLD or /RESET Pin Function (HOLD/RST) –易失性/非易失性可写位
7.1.14 Reserved Bits – Non Functional
7.1.15 W25Q128FV状态寄存器内存保护(WPS = 0, CMP = 0)
7.1.16W25Q128FV状态寄存器内存保护(WPS = 0, CMP = 1)
7.1.17W25Q128FV单独块内存保护(WPS=1)
八 指令
8.1设备ID和指令集
8.1.1 制造商和设备标识
8.1.2指令集 1 (Standard/Dual/Quad SPI Instructions)(1)
8.1.3 指令集表2 (Standard/Dual/Quad SPI Instructions)(1)
8.1.4 指令集表3 (QPI Instructions)(14)
8.2指令描述
8.2.1写使能(06H)
8.2.2 启用易失性状态寄存器(06H)
8.2.3 写禁止(04H)
8.2.4 读状态寄存器1(05H)、2(35H)、3(15H)
8.2.5 写状态寄存器1(05H)、2(35H)、3(15H)
8.2.6 读数据(03H)
8.2.7 快速读数据(0BH)
8.2.8 快速读取双通道输出(3BH)
8.2.9 双通道输出快速读取(6BH)
8.2.10 快速读 Dual I/O (BBh)
8.2.11快速读 Quad I/O (EBh)
8.2.12 字节读 Quad I/O (E7h)
8.2.13八字字读取 Quad I/O (E3h)
8.2.14 Set Burst with Wrap (77h)
8.2.15 页写 (02h)
- 七、状态和配置寄存器
W25Q128FV有三个状态和配置寄存器。读状态寄存器1/2/3指令可用于提供闪存阵列运行时的状态,包括写使能、写禁止、写保护状态、Quad SPI设置、安全寄存器锁定状态、擦除/编程挂起状态、输出驱动器强度、上电和当前地址模式。写状态寄存器指令可用于配置器件写保护功能、Quad SPI设置、安全寄存器OTP锁定、保持/复位功能、输出驱动器强度和上电地址模式。对状态寄存器的写访问由非易失性状态寄存器保护位(SRP0,SRP1)的状态、写使能指令的状态以及标准/双SPI操作期间的/WP引脚控制。
7.1状态寄存器
7.1.1 擦除/写进程中 (BUSY) – 只读
BUSY是状态寄存器(S0)中的只读位,当器件执行页编程、四线式页编程、扇区擦除、块擦除、芯片擦除、写状态寄存器或擦除/编程安全时,该位被设置为1。在此期间,器件将忽略除读取状态寄存器和擦除、编程暂停指令之外的其他指令(参见AC特性中的tW,tPP,tSE,tBE和tCE)。当编程,擦除或写入状态/安全寄存器等指令完成时,BUSY位将被清除为0状态,表示器件已做好进一步指令的准备。
7.1.2 写使能锁存 (WEL) –只读
写使能锁存器(WEL)是状态寄存器(S1)中的只读位,在执行写使能指令后设置为1。 当器件禁止写入时,WEL状态位清零。上电时或以下任何指令后自动转为写禁止状态:写禁止、页编程、四线式页编程、扇区擦除、块擦除、芯片擦除、写状态寄存器、擦除安全寄存器和程序安全寄存器。
7.1.3块保护位(BP2, BP1, BP0) – 易失性/非易失性可写位
块保护位(BP2,BP1,BP0)是状态寄存器(S4,S3和S2)中的非易失性读/写位,提供写保护控制和状态。可以使用写状态寄存器指令设置块保护位(参见AC特性中的tW)来保护存储器阵列的全部,无或部分不受编程和擦除指令的影响(参见状态寄存器存储器保护表)。块保护位的出厂默认设置为0,没有任何阵列受保护。
7.1.4 顶部/底部位(TB)控制块保护位–易失性/非易失性可写位
非易失性顶部/底部位(TB)控制块保护位(BP2,BP1,BP0)是否保护阵列的顶部(TB=0)或底部(TB 1),如状态寄存器所示,内存保护表。出厂默认设置为TB=0。可以使用写状态寄存器指令设置TB位,具体取决于SRP0,SRP1和WEL位的状态。
7.1.5 扇区/块保护位 (SEC) –易失性/非易失性可写位
非易失性扇区/块保护位(SEC)控制块保护位(BP2,BP1,BP0)是保护顶部的4KB扇区(SEC=1)还是64KB块(SEC=0、TB=0)或状态寄存器存储器保护表中所示的阵列的底部(TB=1)。默认设置为SEC=0。
7.1.6补码保护位(CMP) –易失性/非易失性可写位
补码保护位(CMP)是状态寄存器中的非易失性读/写位(S14)。它与SEC,TB,BP2,BP1和BP0位结合使用,为阵列保护提供更大的灵活性。一旦CMP设置为1,由SEC,TB,BP2,BP1和BP0设置的先前阵列保护将被反转。例如,当CMP=0时,可以保护顶部64KB块,而不保留阵列的其余部分;当CMP=1时,顶部64KB块将变为不受保护,而阵列的其余部分变为只读。有关详细信息,请参阅状态寄存器内存保护表。默认设置为CMP=0。
7.1.7状态寄存器保护位(SRP1, SRP0) –易失性/非易失性可写位
状态寄存器保护位(SRP1和SRP0)是状态寄存器(S8和S7)中的非易失性读/写位。SRP位控制写保护的方法:软件保护,硬件保护,电源锁定或一次性可编程(OTP)保护。
注意:
1.当SRP1,SRP0=(1,0)时,掉电,上电周期将SRP1,SRP0改变为(0,0)状态。
7.1.8 擦除/编程挂起状态 (SUS) –只读
挂起状态位是状态寄存器(S15)中的只读位,在执行擦除/编程挂起(75h)指令后置为1。通过擦除/编程恢复(7Ah)指令以及掉电,上电将SUS状态位清除为0。
7.1.9安全寄存器锁定位(LB3,LB2,LB1) – Volatile/Non-Volatile OTP Writable
安全寄存器锁定位(LB3,LB2,LB1)是状态寄存器(S13,S12,S11)中的非易失性一次性编程(OTP)位,用于向安全寄存器提供写保护控制和状态。LB3-1的默认状态为0,安全寄存器未锁定。使用写状态寄存器指令可以将LB3-1分别设置为1。LB3-1是一次性可编程(OTP),一旦设置为1,相应的256字节安全寄存器将永久变为只读。
7.1.10 Quad Enable (QE) –易失性/非易失性可写位
四线式使能(QE)位是状态寄存器(S9)中的非易失性读/写位,允许四线SPI和QPI操作。当QE位设置为0状态(带有订购选项“IG”,“IP”和“IF”)的部件号的出厂默认设置时,/WP引脚和/HOLD被使能。当QE位设置为1(具有排序选项“IQ”的四路启用部件号的出厂默认设置)时,四IO2和IO3引脚使能,并且/WP和/HOLD功能被禁用。
在发出“输入QPI(38h)”以将器件从标准/双/四SPI切换到QPI之前,需要将QE位设置为1,否则将忽略该命令。当器件处于QPI模式时,QE位将保持为1。QPI模式下的“写状态寄存器”命令不能将QE位从“1”更改为“0”
警告:如果在标准SPI或双SPI操作期间/WP或/HOLD引脚直接连接到电源或接地,则QE位不应设置为1。
7.1.11 写保护选择位(WPS) –易失性/非易失性可写位
WPS位用于选择应使用哪种写保护方案。当WPS=0时,器件将使用CMP,SEC,TB,BP[2:0]位的组合来保护存储器阵列的特定区域。当WPS=1时,设备将利用单独的块锁来保护任何单个扇区。器件上电或复位后,所有单独块锁定位的默认值均为1。
7.1.12 输出强度控制位 (DRV1, DRV0) –易失性/非易失性可写位
DRV1和DRV0位用于确定读操作的输出驱动器强度。
7.1.13 /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引脚。
7.1.14 Reserved Bits – Non Functional
有一些保留的状态寄存器位可以读出为“0”或“1” 建议忽略这些位的值。在“写入状态寄存器”指令期间,保留位可以写为“0”,但不会产生任何影响。
7.1.15 W25Q128FV状态寄存器内存保护(WPS = 0, CMP = 0)
笔记:
1. X =不在乎
2. L =低; U =上限
3.如果任何Erase或Program命令指定包含受保护数据部分的内存区域,则将忽略此命令
7.1.16W25Q128FV状态寄存器内存保护(WPS = 0, CMP = 1)
注意:
1.X=不在乎
2.L=低;U=上限
3.如果任何Erase或Program命令指定包含受保护数据部分的内存区域,则将忽略此命令
7.1.17W25Q128FV单独块内存保护(WPS=1)
注意:
1.单个块/扇区保护仅在WPS = 1时有效。
2.上电后,所有单独的块/扇区锁定位默认设置为1,所有存储器阵列都受到保护。
- 八 指令
W25Q128FV的标准/双/四线式SPI指令集由45条基本指令组成,这些指令完全通过SPI总线控制(参见指令集表1-2)。通过片选(/CS)的下降沿启动指令。在时钟的配合下,DI输入的第一个数据字节为指令代码。在时钟的上升沿对DI输入的数据采样,最高有效位(MSB)优先。
W25Q128FV的QPI指令集由32条基本指令组成,这些指令完全通过SPI总线控制(参见指令集表3)。通过片选(/CS)的下降沿启动指令。在时钟的配合下,IO[3:0]引脚输入的第一个数据字节为指令代码。所有四个IO引脚上的数据在时钟的上升沿采样,最高有效位(MSB)优先。所有QPI指令、地址、数据和虚拟字节都使用所有四个IO引脚,每两个串行时钟(CLK)传输每个数据字节。
指令的长度从单个字节到几个字节不等,后面可以跟地址字节、数据字节、虚拟字节(不关心)。在某些情况下,也可以是上述的组合。在/CS的上升沿完成指令传输。每条指令的时钟相对时序图包含在图5到57中。所有读指令都可以在时钟位任何状态完成。但是,写入、编程或擦除的所有指令必须在上升沿完成(在完成8位时钟后CS驱动为高电平)否则指令将被忽略。此功能进一步保护设备免受无意写入。此外,在编程或擦除存储器时,或者在写入状态寄存器时,除读取状态寄存器外的所有指令都将被忽略,直到编程或擦除周期完成。
8.1设备ID和指令集
8.1.1 制造商和设备标识
8.1.2指令集 1 (Standard/Dual/Quad SPI Instructions)(1)
8.1.3 指令集表2 (Standard/Dual/Quad SPI Instructions)(1)
8.1.4 指令集表3 (QPI Instructions)(14)
注意:
1.数据字节首先以最高有效位移位。 括号“()”中带有数据的字节字段表示设备在1,2或4个IO引脚上输出的数据。
2.状态寄存器内容和设备ID将连续重复,直到/ CS终止指令。
3.页面编程,四页编程和程序安全需要至少一个字节的数据输入寄存器,最多256字节的数据输入。如果向设备发送超过256个字节的数据,则寻址将换行到页面的开头并覆盖先前发送的数据。
4.写状态寄存器-1(01h)也可用于编程状态寄存器-1和2,见8.2.5节。
8.2指令描述
8.2.1写使能(06H)
写使能指令是将状态寄存器中的写使能锁存位置一。WEL位必须在页写、QPI模式下页写、扇区擦除(4KB)、块擦除、片擦除、写状态寄存器、擦除或写安全安全寄存器指令前置一。写使能指令的下发首先需将片选信号拉低,在时钟的上升沿将(06H)一位一位的发送DI引脚,高位在前,随后将片选信号拉高。如图所示
8.2.2 启用易失性状态寄存器(06H)
在7.1描述的非易失性状态寄存器比特位也可以被写为易失性比特位。这为更快地更改系统配置和存储器保护方案提供了更大的灵活性,无需等待典型的非易失性位写周期或影响状态寄存器非易失性位的耐久性。要将易失性值写入状态寄存器位,必须在写入状态寄存器(01h)指令之前发出启用易失性状态寄存器(50h)指令。启用易失性状态寄存器指令不会将写使能锁存(WEL)位置1,它仅对写状态寄存器指令有效,以改变易失性状态寄存器的位值,如图6所示。
8.2.3 写禁止(04H)
写禁止指令将状态寄存器的写使能锁存位(WEL)复位为0。写禁止指令先将片选信号拉低。将指令“04H”按位发送到DI,高位在前,随后将片选信号拉高。注意WEL在上电后会自动复位。在完成写状态寄存器、擦除/写安全寄存器、页写、QPI模式页写、扇区擦除、块擦除、片擦除后会自动复位。
8.2.4 读状态寄存器1(05H)、2(35H)、3(15H)
读状态寄存器指令允许读八位状态寄存器。指令在片选信号拉低后写入,在时钟的上升沿可将状态寄存器1的指令“05H”、状态寄存器2的指令“35H”、状态寄存器3的指令“15H”位移到DI引脚。状态寄存器比特位随后在时钟的下降沿从DO端口移出,高位在前如图所示。可参考7.1对状态寄存器的描述。
读状态寄存器指令可在任何时间使用,甚至在写数据、擦除或者写状态寄存器期间。以便允许通过检测“BUSY”状态来决定当前操作周期是否完成或是否可以开始另一个指令。状态寄存器可以被连续读,如图8所示,当片选信号拉高,不再发出指令。
8.2.5 写状态寄存器1(05H)、2(35H)、3(15H)
写状态机指令允许写状态寄存器。写状态寄存器指令包括:状态寄存器1的SRP0、SEC、TB、BP[2:0],状态寄存器2的CMP、LB[3:1]、QE、SRP1,状态寄存器3的HOLD/RST、DRV1、DRV0、WPS & ADP。其他的状态寄存器位只允许读,写状态寄存器指令不会对产生影响。LB[3:1]是非易失性OTP(一次性可编程)位,一旦设置为1则不能被清零。
要写入非易失性状态寄存器位,必须先执行标准写入使能(06h)指令,以使器件接受写入状态寄存器指令(状态寄存器位WEL必须等于1)。在发送完写使能指令后,须将片选信号拉低(其实在写使能后(06H)可一直保持片选为低电平),在时钟的上升沿将指令“01h/31h/11h”,然后写入状态寄存器数据字节,如图9a和9b所示。
要写入易失性状态寄存器位,必须在写入状态寄存器指令之前执行易失性状态寄存器的写使能(50h)指令(状态寄存器位WEL要保持为0)。但是,由于这些位的OTP(一次性可编程)保护,SRP1和LB [3:1]不能从“1”变为“0”。 在断电或执行软件/硬件复位时,易失性状态寄存器位值将丢失,并且恢复为非易失性状态寄存器位的值。
在非易失性状态寄存器写操作期间(06h与01h / 31h / 11h组合),片选信号拉高后,写状态寄存器周期在其内部将持续时间为tW(参见交流特性)。写状态寄存器周期期间仍可以访问读状态寄存器指令以检查BUSY位的状态。写状态寄存器期间BUSY位为1,结束时为0,可以再次接受其他指令。写状态寄存器周期结束后,状态寄存器中的写使能锁存(WEL)位将被清除为0。
易失性状态寄存器写操作期间(50h与01h / 31h / 11h组合),片选信号拉高后,状态寄存器位将在tSHSL2的时间段内刷新为新值(参见交流特性)。在状态寄存器位刷新周期内,BUSY位保持为0。
写状态寄存器指令可用于SPI模式和QPI模式。 但是,当器件处于QPI模式时,无法写入QE位,因为器件需要QE = 1才能进入QPI模式并工作。
W25Q128FV也向后兼容Winbond的前几代串行闪存,其中状态寄存器-1和2可以使用单个“写入状态寄存器-1(01h)”命令写入。 要完成写状态寄存器-1和2指令,必须在输入的第16位数据后驱动/ CS引脚,如图9c和9d所示。 如果/ CS在第8个时钟后被驱动为高电平,则写入状态寄存器-1(01h)指令将仅对状态寄存器-1进行编程,状态寄存器-2将不受影响(前几代将清除CMP和QE位)
8.2.6 读数据(03H)
读数据指令允许从存储器顺序读取一个或多个数据字节。将片选信号拉低后,通过将指令“03h”、24位地址(A23-A0)移入DI引脚来启动该读操作,指令和地址位在CLK引脚的上升沿锁存。 接收到地址后,寻址存储单元的数据字节将在CLK的下降沿从DO引脚移出,最高有效位(MSB)优先。 在每个数据字节移出后,地址自动递增到下一个更高的地址,从而允许连续的数据流。这意味着只要时钟继续,就可以使用单个指令访问整个存储器。当把片选信号拉高则结束该操作。
读取数据指令序列如图14所示。如果在擦除,编程或写入周期正在进行时发出读取数据指令(BUSY = 1),则忽略该指令,并且不会对当前周期产生任何影响。 读数据指令允许从D.C.到最大fR的时钟速率(参见交流电气特性)。
只有标准SPI模式支持读数据(03h)指令。
8.2.7 快速读数据(0BH)
快速读取指令类似于读取数据指令,不同之处在于它可以在FR的最高可能频率下工作(参见交流电气特性)。 这是通过在24位地址之后添加8个“伪”时钟来实现的,如图16所示。虚拟时钟允许器件内部电路有额外的时间来设置初始地址。 在虚拟时钟期间,DO引脚上的数据值是“不关心”。
在QPI模式下快速读指令(0Bh)
QPI模式也支持快速读取指令。 当启用QPI模式时,通过“设置读取参数(C0h)”指令配置虚拟时钟的数量,以适应对最大快速读取频率或最小数据访问延迟具有不同需求的各种应用。 根据读取参数位P [5:4]设置,虚拟时钟的数量可以配置为2,4,6或8.上电时或复位指令后的默认虚拟时钟数为2。
8.2.8 快速读取双通道输出(3BH)
快速读取双输出(3Bh)指令类似于标准快速读取(0Bh)指令,只是数据在两个引脚上输出; IO0和IO1。 这样可以以标准SPI器件速率的两倍传输数据。 快速读取双输出指令非常适合在上电时快速将代码从Flash下载到RAM,或者用于将代码段缓存到RAM以执行的应用程序。
与快速读取指令类似,快速读取双输出指令可以在FR的最高频率下工作(参见交流电气特性)。 这是通过在24位地址之后添加8个“伪”时钟来实现的,如图18所示。虚拟时钟允许器件的内部电路有额外的时间来设置初始地址。虚拟时钟期间的输入数据“不关心”。 但是,IO0引脚应在第一个数据输出时钟的下降沿之前为高阻态。
8.2.9 双通道输出快速读取(6BH)
快速读取四输出(6Bh)指令类似于快速读取双输出(3Bh)指令,不同之处在于数据在四个引脚IO0,IO1,IO2和IO3上输出。 在器件接受快速读取四路输出指令之前,状态寄存器-2中的四路使能(QE)位必须设置为1。 快速读取四输出指令允许以标准SPI器件速率的四倍传输数据。
快速读取四路输出指令可以在FR的最高频率下工作(参见交流电气特性)。 这是通过在24位地址之后添加8个“伪”时钟来实现的,如图20所示。虚拟时钟允许器件的内部电路有额外的时间来设置初始地址。 虚拟时钟期间的输入数据“不关心”。 但是,IO引脚应在第一个数据输出时钟的下降沿之前为高阻态。
8.2.10 快速读 Dual I/O (BBh)
快速读取双I / O(BBh)指令允许改进随机访问,同时保持两个IO引脚IO0和IO1。 它类似于快速读取双输出(3Bh)指令,但能够在每个时钟输入两位地址位(A23-0)。 在某些应用中,这种减少的指令开销可能允许直接从双SPI执行代码(XIP)。
使用“连续读取模式”快速读取双I/O
快速读取双I / O指令可以通过在输入地址位(A23-0)之后设置“连续读取模式”位(M7-0)来进一步降低指令开销,如图22a所示。(M7-4)的高半字节通过包含或排除第一个字节指令代码来控制下一个快速读取双I / O指令的长度。 (M3-0)的低位半字节不关心(“x”)。 但是,IO引脚应在第一个数据输出时钟的下降沿之前为高阻态。
如果“连续读取模式”位M5-4 =(1,0),则下一个快速读取双I / O指令(在CS升高然后降低之后)不需要BBh指令代码,如图22B。这将指令序列减少了8个时钟,并允许在/ CS置为低电平后立即进入读地址。 如果“连续读取模式”位M5-4不等于(1,0),则下一条指令(在CS升高然后降低之后)需要第一个字节指令代码,从而返回正常操作。 建议在IO0上输入FFFFh作为下一条指令(16个时钟),以确保M4 = 1并使器件恢复正常工作。
8.2.11快速读 Quad I/O (EBh)
快速读取四I / O(EBh)指令类似于快速读取双I / O(BBh)指令,除了地址和数据位通过四个引脚IO0,IO1,IO2和IO3输入和输出,四个虚拟时钟是 在数据输出之前的SPI模式中需要。 Quad I / O显着降低了指令开销,允许直接从Quad SPI执行代码执行(XIP)的更快随机访问。 必须将状态寄存器-2的四使能位(QE)置1以使能快速读取四I / O指令。
Fast Read Quad I/O with “Continuous Read Mode”
快速读取四I / O指令可以通过在输入地址位(A23-0)之后设置“连续读取模式”位(M7-0)来进一步降低指令开销,如图24a所示。(M7-4)的高半字节通过包含或排除第一个字节指令代码来控制下一个快速读取四线I / O指令的长度。(M3-0)的低位半字节不关心(“x”)。 但是,IO引脚应在第一个数据输出时钟的下降沿之前为高阻态。
如果“连续读取模式”位M5-4 =(1,0),则下一个快速读取四I / O指令(在CS升高然后降低之后)不需要EBh指令代码,如图24B。这将指令序列减少了8个时钟,并允许在/ CS置为低电平后立即进入读地址。 如果“连续读取模式”位M5-4不等于(1,0),则下一条指令(在CS升高然后降低之后)需要第一个字节指令代码,从而返回正常操作。 建议在IO0上输入FFh作为下一条指令(8个时钟),以确保M4 = 1并使器件恢复正常工作。
Fast Read Quad I/O with “8/16/32/64-Byte Wrap Around” in Standard SPI mode
快速读取四I / O指令还可用于通过在EBh之前发出“Set Burst with Wrap”(77h)命令来访问页面中的特定部分。“Set Burst with Wrap”(77h)命令可以为以下EBh命令启用或禁用“Wrap Around”功能。启用“Wrap Around”时,正在访问的数据可以限制为256字节页面的8,16,32或64字节部分。输出数据从指令中指定的初始地址开始,一旦到达8/16/32/64字节部分的结束边界,输出将自动回绕到开始边界,直到/ CS被拉高以终止命令。
Burst with Wrap功能允许使用缓存的应用程序快速获取关键地址,然后在固定长度(8/16/32/64字节)的数据内填充缓存,而不发出多个读取命令。
“Set Burst with Wrap”指令允许设置三个“Wrap Bits”,W6-4。W4位用于启用或禁用“环绕”操作,而W6-5用于指定页面内环绕部分的长度。有关详细说明,请参阅第8.2.24节。
Fast Read Quad I/O (EBh) in QPI Mode
QPI模式也支持快速读取四I / O指令,如图19c所示。当启用QPI模式时,通过“设置读取参数(C0h)”指令配置虚拟时钟的数量,以适应对最大快速读取频率或最小数据访问延迟具有不同需求的各种应用。 根据读取参数位P [5:4]设置,虚拟时钟的数量可以配置为2,4,6或8.上电时或复位指令后的默认虚拟时钟数为2。在QPI模式中,“连续读取模式”位M7-0也被视为虚拟时钟。 在默认设置中,数据输出将立即跟随连续读取模式位。
“连续读取模式”功能也可用于快速读取四I / O指令的QPI模式。请参阅前几页的说明。
快速读取四I / O指令的QPI模式中不提供“环绕”功能。 要在QPI模式下执行固定数据长度环绕的读操作,必须使用专用的“带有包络的突发读取”(0Ch)指令。 有关详细信息,请参阅8.2.45。
8.2.12 字节读 Quad I/O (E7h)
字读取四线I / O(E7h)指令类似于快速读取四线I / O(EBh)指令,除了最低地址位(A0)必须等于0且在数据输出之前只需要两个虚拟时钟。 Quad I / O显着降低了指令开销,允许直接从Quad SPI执行代码执行(XIP)的更快随机访问。 必须将状态寄存器-2的四位使能位(QE)置1以使能字读取四I / O指令。
Word Read Quad I/O with “Continuous Read Mode”
通过在输入地址位(A23-0)之后设置“连续读取模式”位(M7-0),字读取四I / O指令可以进一步降低指令开销,如图26a所示。(M7-4)的高半字节通过包含或排除第一个字节指令代码来控制下一个快速读取四线I / O指令的长度。 (M3-0)的低位半字节不关心(“x”)。 但是,IO引脚应在第一个数据输出时钟的下降沿之前为高阻态。
如果“连续读取模式”位M5-4 =(1,0),则下一个快速读取四I / O指令(在CS升高然后降低之后)不需要E7h指令代码,如图 26b。这将指令序列减少了8个时钟,并允许在/ CS置为低电平后立即进入读地址。 如果“连续读取模式”位M5-4不等于(1,0),则下一条指令(在CS升高然后降低之后)需要第一个字节指令代码,从而返回正常操作。 建议在IO0上输入FFh作为下一条指令(8个时钟),以确保M4 = 1并使器件恢复正常工作。
Word Read Quad I/O with “8/16/32/64-Byte Wrap Around” in Standard SPI mode
通过在E7h之前发出“Set Burst with Wrap”(77h)命令,Word Read Quad I / O指令也可用于访问页面内的特定部分。 “Set Burst with Wrap”(77h)命令可以启用或禁用以下E7h命令的“Wrap Around”功能。当启用“Wrap Around”时,正在访问的数据可以限制为8,16, 256字节页面的32或64字节部分。 输出数据从指令中指定的初始地址开始,一旦到达8/16/32/64字节部分的结束边界,输出将自动回绕到开始边界,直到/ CS被拉高以终止命令
Burst with Wrap功能允许使用缓存的应用程序快速获取关键地址,然后在固定长度(8/16/32/64字节)的数据内填充缓存,而不发出多个读取命令。
“Set Burst with Wrap”指令允许设置三个“Wrap Bits”,W6-4。W4位用于启用或禁用“环绕”操作,而W6-5用于指定页面内环绕部分的长度。有关详细说明,请参见8.2.24。
8.2.13八字字读取 Quad I/O (E3h)
八字字读取四线I / O(E3h)指令类似于快速读取四线I / O(EBh)指令,只是低四个地址位(A0,A1,A2,A3)必须等于0.结果, 不需要虚拟时钟,这进一步减少了指令开销,允许更快的随机访问以执行代码(XIP)。 必须将状态寄存器-2的四使能位(QE)置1以使能八进制字读取四I / O指令
Octal Word Read Quad I/O with “Continuous Read Mode”
通过在输入地址位(A23-0)之后设置“连续读取模式”位(M7-0),八进制字读取四I/O指令可以进一步降低指令开销,如图27a所示。(M7-4)的高半字节通过包含或排除第一个字节指令代码来控制下一个八进制字读取四线I/O指令的长度。(M3-0)的低位半字节不关心(“x”)。但是,IO引脚应在第一个数据输出时钟的下降沿之前为高阻态。
如果“连续读取模式”位M5-4 =(1,0),则下一个快速读取四I / O指令(在CS升高然后降低之后)不需要E3h指令代码,如图27B。这将指令序列减少了8个时钟,并允许在/ CS置为低电平后立即进入读地址。 如果“连续读取模式”位M5-4不等于(1,0),则下一条指令(在CS升高然后降低之后)需要第一个字节指令代码,从而返回正常操作。建议在IO0上输入FFh作为下一条指令(8个时钟),确保M4 = 1并使设备恢复正常运行。
8.2.14 Set Burst with Wrap (77h)
在标准SPI模式下,Set Burst with Wrap(77h)指令与“Fast Read Quad I / O”和“Word Read Quad I / O”指令一起使用,以访问固定长度的8/16/32/64 256字节页面内的字节部分。某些应用程序可以从此功能中受益,并提高整体系统代码执行性能。
与Quad I / O指令类似,通过将/ CS引脚驱动为低电平然后移位指令代码“77h”,然后移位24个虚拟位和8“Wrap Bits”,W7-0来启动Set Burst with Wrap指令。指令序列如图28所示。不使用绕组位W7和低位半字节W3-0。
一旦W6-4由Set Burst with Wrap指令设置,以下所有“快速读取四I / O”和“Word Read Quad I / O”指令将使用W6-4设置访问8/16/32 /任何页面中的64字节部分。 要退出“Wrap Around”功能并返回正常读取操作,应发出另一个带有Wrap指令的Set Burst以设置W4 = 1.打开电源或软件/硬件复位后W4的默认值为1。
在QPI模式下,应使用“Burst Read with Wrap(0Ch)”指令通过“Wrap Around”功能执行读取操作。 W5-4在标准SPI模式下设置的Wrap Length在QPI模式下仍然有效,也可以通过“Set Read Parameters(C0h)”指令重新配置。 有关详细信息,请参阅8.2.44和8.2.45。
8.2.15 页写 (02h)
页面编程指令允许在先前擦除(FFh)的存储器位置编程一个字节到256个字节(一页)的数据。 必须先执行写使能指令,然后器件才能接受页编程指令(状态寄存器位WEL = 1)。 通过将/ CS引脚驱动为低电平然后将指令代码“02h”后跟24位地址(A23-A0)和至少一个数据字节移入DI引脚来启动该指令。 在将数据发送到器件时,/ CS引脚必须在指令的整个长度内保持低电平。 页面程序指令序列如图29所示。
如果要编程整个256字节页,则应将最后一个地址字节(8个最低有效地址位)设置为0.如果最后一个地址字节不为零,并且时钟数超过剩余页长,则 寻址将包装到页面的开头。 在某些情况下,可以编程少于256个字节(部分页面)而不会对同一页面内的其他字节产生任何影响。 执行部分页面编程的一个条件是时钟数不能超过剩余页面长度。 如果向设备发送超过256个字节,则寻址将换行到页面的开头并覆盖先前发送的数据。
与写入和擦除指令一样,在最后一个字节的第8位被锁存后,/ CS引脚必须被驱动为高电平。 如果不这样做,则不会执行Page Program指令。 在/ CS被驱动为高电平之后,自定时页面编程指令将开始持续tpp的持续时间(参见AC特性)。 页面编程循环正在进行时,仍可访问读取状态寄存器指令以检查BUSY位的状态。页面编程循环期间BUSY位为1,循环结束后变为0,设备准备再次接受其他指令。 页编程周期结束后,状态寄存器中的写使能锁存(WEL)位清0。如果寻址页受块保护(CMP, SEC, TB, BP2, BP1, and BP0)位或单独块/扇区锁保护,则不会执行页面编程指令。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125984.html原文链接:https://javaforall.cn