首页 >> 大全

6.1 SPI/QPI操作

2023-07-04 大全 121 作者:考证青年

数据手册翻译(2) 6.2 写保护 7 状态和配置寄存器

6 功能描述 6.1 SPI/QPI操作

图3 串行Flash存储器操作流程

6.1.1 标准SPI指令

通过符合SPI协议的总线进行访问,该总线包含四个信号:串行时钟(CLK),片选(/CS),串行数据输入(DI)和串行数据输出(DO)。标准SPI指令使用DI引脚来向器件写入指令、地址和数据,这些写入行为在CLK的上升沿被采样。DO引脚则用来从器件中读取数据或者状态,这些行为在CLK的下降沿采样。

器件支持SPI总线模式0(0,0)和模式3(1,1)。模式0和模式3的主要区别包括在非传输(也即主机在待机模式,未和器件进行数据传输)时CLK信号的状态。对于模式0,CLK信号在/CS信号上升或者下降沿时,为低电平。对于模式3,CLK信号则为高电平。

6.1.2 双线SPI指令

可以通过“双输出快速读”(0x3B)或者“双IO快速读”(0xBB)指令来支持双线SPI操作。这些指令使得主机和器件之间的数据传输速率为普通串行Flash器件的2到3倍。双线SPI读指令是快速下载代码到RAM应用、非速度敏感的代码XIP执行的理想选择。当使用双线SPI指令时,DI和DO引脚为双向IO引脚:IO0和IO1。

6.1.3 四线SPI指令

支持四线SPI操作,可通过“四输出快速读”(0x6B)、“四IO快速读”(0xEB),“四IO字读取”(0xE7)以及“四IO八字读取”(0xE3)等指令来实现。这些指令实现了相较于普通串行Flash而言4~6倍的传输速率。这种情况适用于高速的随机访问,或者是从器件中拷贝代码到RAM中去,再或者是直接从器件取代码执行。该模式下,DI和DO引脚成为IO0和IO1引脚,另外/WP和/HOLD引脚则成为IO2和IO3引脚。注意四线SPI模式需要设置状态寄存器中的QE位为1。

6.1.4 QPI指令

支持QPI操作,但需要将器件的工作模式从标准SPI/双线SPI/四线SPI模式切换为QPI模式,该切换通过指令“进入QPI”(0x38)来实现。标准SPI协议需要消耗8个串行时钟周期将1字节长的指令码通过DI引脚传输到器件中。QPI模式利用4个IO引脚来输入指令码,因此该传输过程仅需要2个时钟周期。这可以显著地降低SPI指令开销,提高系统性能,尤其是在XIP环境中。标准/双线/四线SPI模式和QPI模式是互斥的。任何时刻仅可使用一种模式。指令“进入QPI”(0x38)和“离开QPI”(0xFF)用来切换这两种模式。在上电后,或者在通过指令“Reset (0x99)”复位器件后,器件的缺省模式为标准/双线/四线SPI模式。要使能QPI模式,在状态寄存器2中的非易失性位QE要置位。当使用QPI指令时,DI和DO引脚成为IO0和IO1引脚,另外/WP和/HOLD引脚则成为IO2和IO3引脚。参考插图3。

6.1.5 保持功能

对于标准SPI和双SPI操作,/HOLD信号允许在被选中(/CS为低电平)的情况下暂停操作。/HOLD功能在SPI总线的数据和时钟线被多个器件共享时很有用。例如,假设页缓存仅部分被写入,但此时出现高优先级中断需要使用SPI总线。在这种情况下/HOLD功能可以保存正在执行的指令的状态和缓存的数据,从而使得一旦可再次使用SPI总线时,恢复之前的操作。/HOLD引脚仅在标准SPI或者双线SPI模式下可以使用,四线SPI和QPI模式下不可用。状态寄存器中的QE位决定/HOLD是否可用。如果QE=0(出厂缺省状态),/HOLD引脚做/HOLD用,否则其为IO引脚,/HOLD功能不再可用。

要使用/HOLD功能,必须通过设置/CS引脚为低电平来选中器件。如果CLK信号为低电平,此时/HOLD信号的下降沿后保持功能会生效。如果在/HOLD信号的下降沿,CLK信号不是低电平,则该功能会在下一次CLK下降沿后生效。同样地,如果CLK信号为低电平,此时/HOLD信号的上升沿使得保持功能结束。如果/HOLD的上升沿CLK不是低电平,则保持功能会在下一次CLK的下降沿后撤销。在整个保持过程中,DO为高阻态,DI和CLK引脚的输入被忽略。/CS信号在整个保持过程中必须为低电平,避免复位器件的内部逻辑。

6.1.6 软件复位和硬件复位引脚/RESET

可以通过SPI或者QPI模式下的软件复位序列,被复位成初始上电状态。该序列必须通过2个连续的命令来实现:允许复位 (66h)和复位 (99h)。如果命令序列被器件成功地接受,则器件大约会消耗30uS(t_RST)时间来复位。在复位过程中任何指令都不会被接受。

对于WSON-8和TFBGA封装类型,还可以配置为使用硬件的/RESET引脚进行复位。状态寄存器3中的HOLD/RST位用来决定/HOLD引脚的功能是做/HOLD用还是做/RESET用。当HOLD/RST=0(出厂缺省状态),该引脚做/HOLD用;否则该引脚做/RESET用。驱动/RESET引脚保持低电平至少约1uS(),从而复位器件为初始上电状态。任何正在进行的编程/擦除操作都会被中断,数据可能会损坏。当/RESET为低电平时,器件不会接受任何命令输入。

如果QE位为1,则/HOLD或者/RESET功能都会被禁止,该引脚此时为数据IO引脚。

对于SOIC-16封装,提供了专用的/RESET引脚,参见图1b。驱动/RESET引脚保持低电平至少约1uS(),从而复位器件为初始上电状态。状态寄存器中的HOLD/RST位和QE位不影响专用/RESET引脚的功能。

硬件/RESET引脚在所有输入信号中有最高的优先级。不论SPI信号(/CS,CLK,IO,/WP,/HOLD)是何状态,驱动/RESET为低电平至少约1uS(),将会中断任何正在进行的内、外部操作。

注意:

1. 当一个快速的/RESET脉冲(短至数百nS)同样会复位器件,1uS的最短要求是为了保证操作的可信性。

2. 对于SOIC-16封装中的专用/RESET引脚,内部有着上拉电阻。因此如果该引脚不需使用,可悬空。

6.2 写保护

使用非易失性存储器的应用中,必须考虑因为噪声或者其他不利的系统条件带来的对数据完整性的破坏的可能性。为了解决这个问题,提供了几种方法来保护数据不被误写入。

6.2.1 写保护特性

在上电或者下电时,将会在VCC低于门限值V_WI时保持复位(参考上电时序和电压水平参数,以及图43),当复位时,所有的操作都被禁止,任何指令都不会被识别。在上电后且VCC电压超过V_WI,所有的编程和擦除相关的指令仍然被禁止t_PUW时间。这些指令包括写使能, 页编程、扇区擦除、块擦除、整片擦除和写状态寄存器等。注意在上电时,片选(/CS)引脚必须跟随VCC供电水平,直到VCC达到最低水平并且t_VSL时间满足。同样,在下电时,该引脚也必须跟随VCC电压水平以保护出现不期望的命令序列。如果有必要,/CS上可加上上拉电阻。

在上电后,器件自动进入写禁止状态,此时状态寄存器中的写使能锁定(Write Latch(WEL))位为0。在页编程、扇区擦除、块擦除、整片擦除或者写状态寄存器等指令发出之前,必须先发出写使能指令。在编程或者擦除指令完成之后WEL会自动清除为0,表示重新进入写禁止状态。

软件控制写保护通过写状态寄存器指令设置状态寄存器保护位(SRP0,SRP1)和块保护位(CMP,SEC,TB,BP[2:0])。这些设置允许芯片中存储阵列的一部分,或者整个存储阵列被配置为只读。联合/WP引脚,状态寄存器的改变可以通过硬件来使能或者禁止。可参见状态寄存器章节来获取更多信息。此外,下电指令提供额外的写保护功能,因为此时所有的指令都被忽略,除了释放下电指令。

还提供另一种写保护方法,即独立块锁定。每个64KB块(除了top块和块,合计510个块)以及位于top块和块中的每个4KB扇区(合计32个扇区)有着独立的块锁定位。当对应的块锁定位为0时,对应的扇区或者块可擦除或编程;如果锁定位为1,给对应扇区或者块的擦除和编程该指令会被忽略。在器件上电时,所有独立块锁定位都为1,所以整片存储器阵列都被保护住。如果需要解锁某个扇区或者块,可使用“独立块解锁 (0x39)”指令。

{此处说64KB块共512块似乎有误,按此计算器件容量为32MB,实际上是16MB。按照后文,应是256块}

状态寄存器中的WPS位用来决定是否使用写保护机制。当WPS=0(出厂缺省),器件仅使用CMP,SEC,TB,BP[2:0]位来保护指定的阵列区域;当WPS=1时,器件会使用独立块锁定来实现写保护。

7 状态和配置寄存器

包含3个状态和配置寄存器。读状态寄存器-1/2/3指令可以用来查询部分信息,如写保护状态,四线SPI设置,安全寄存器锁定状态,擦除/编程挂起状态,输出强度设置,上电和当前地址模式等,注意该访问不关心写入功能是否使能。写状态寄存器可以用来配置器件的写保护功能,四线SPI设置,安全寄存器OTP锁定,HOLD/RST引脚功能,输出强度和上电地址模式。对状态寄存器的写访问受到状态寄存器中保护位(SRP0,SRP1)的控制,还受到写使能指令的控制,此外,在标准/双线SPI模式下,还受到/WP引脚的控制。

7.1 状态寄存器

图4a 状态寄存器1

7.1.1 擦除/写正在进行(BUSY)-仅状态

BUSY是状态寄存器中的只读位,当器件正在执行页编程,四页编程,扇区擦除,块擦除,芯片擦除,写状态寄存器或者擦除/编程安全寄存器等指令时,该位为1。此时,器件会忽略其他指令,除了读状态寄存器指令,和擦除/编程挂起指令(关注t_W,t_PP,t_SE,t_BE和t_CE等AC参数)。当编程,擦除或者写状态寄存器/写安全寄存器指令完成后,BUSY位将会清0,以指示器件已经就绪,可接受新的指令。

7.1.2 写使能锁定(WEL)-仅状态

WEL是状态寄存器中的只读状态位。当发出一条写使能指令后,WEL会置位。当器件写禁止后WEL位会清0。写禁止状态在上电后或者在以下指令完成后发生:写禁止,页编程,四页编程,扇区擦除,块擦除,整片擦除,写状态寄存器,擦除安全寄存器和编程安全寄存器等指令。

7.1.3 块保护位(BP2,BP1,BP0)-易失/非易失性可写入

块保护位(BP2,BP1,BP0)是非易失性的可读可写位,提供写保护控制和状态。块保护位可使用写状态寄存器指令(参见t_W参数)来设置。所有的、无的、部分的存储器阵列区域可以被设置为避免被编程或擦除(参见状态寄存器存储器保护表)。出厂缺省设置是0,表示任何阵列区域都不保护。

7.1.4 top/块保护(TB)-易失/非易失性可写入

非易失性的Top/位(TB)控制着块保护位(BP2,BP1,BP0)保护的区域是从Top(TB=0)算起还是从(TB=1)算起(参见状态寄存器存储器保护表)。出厂缺省状态是TB=0。TB位可以通过写状态寄存器指令来设置,注意该指令受控于SRP0,SRP1和WEL等位。

7.1.5 扇区/块保护位(SEC)-易失/非易失性可写入

非易失性的扇区/块保护位(SEC)控制着块保护位(BP2,BP1,BP0)究竟是保护位于Top(TB=0)或者(TB=1)阵列中的4KB的扇区(SEC=1)还是64KB的块(SEC=0),参见状态寄存器存储器保护表。缺省设置是SEC=0。

7.1.6 互补保护(CMP)-易失/非易失性可写入

互补保护位(CMP)是状态寄存器中的非易失性的可读可写位。其用来联合SEC,TB,BP2,BP1,BP0等位,提供更高的存储阵列保护灵活性。如果CMP设置为1,之前所说的通过SEC,TB,BP2,BP1,BP0设置的保护区域反而不再被保护。举例而言,当CMP=0时,如果Top 64KB块被设置为保护,其他区域都设置为不保护,则当CMP=1时,Top 64KB块变成非保护区域,但是其他区域变成只读的。参考状态寄存器存储器保护表。缺省设置是CMP=0。

7.1.7 状态寄存器保护(SRP1,SRP0)-易失/非易失性可写入

状态寄存器保护位(SRP1和SRP0)是状态寄存器中的非易失性读写位(位于S8和S7)。SRP位控制着写保护的方法:软件保护,硬件保护,本次锁定至下次上电时保护,OTP保护等。

注意:

1、 当SRP1,SRP0=(1,0),下电上电循环将会使得SRP1,SRP0=(0,0)状态。

操作系统的五大功能__操作系统的主要功能

2、 该功能仅限于特定的型号,联系获取详细信息。

图4b 状态寄存器2

7.1.8 擦除/编程挂起状态(SUS)-仅状态

挂起状态位是一个只读位,位于状态寄存器的S15位置。当执行一条擦除/编程挂起(75h)指令后,其为1。在擦除/编程恢复(7Ah)指令执行后,或者上下电后,SUS状态恢复为0。

7.1.9 安全寄存器锁定位(LB3,LB2,LB1)-易失/非易失性OTP可写入

安全寄存器锁定位(LB3,LB2,LB1)是非易失性的一次性编程位,位于状态寄存器的S13,S12和S11位置,提供针对安全寄存器的写保护控制和状态。缺省值是0,意味着安全寄存器非锁定。这三个位的任意一位可以独立地使用写状态寄存器指令设置为1。注意这些位是一次性编程的,一旦设置为1,对应的256字节安全寄存器将会永久变成只读状态。

7.1.10 四线使能(QE)-易失/非易失性可写入

四线使能(QE)位是非易失性的可读可写位,位于状态寄存器的S9位置,用来控制是否允许四线SPI或者QPI模式操作。当QE位为0时(对于产品编码IG,IP,IF,此为出厂缺省状态),/WP引脚和/HOLD引脚使能。当QE位设置为1时(对于产品编码IQ,此为出厂缺省状态),IO2和IO3引脚使能,/WP和/HOLD功能被禁止。

在通过指令“Enter QPI (38h)”在标准/双线/四线SPI模式和QPI模式之间切换时,必须先设置QE位为1,否则命令将会被忽略。当器件在QPI模式时,QE为仍然为1。在QPI模式时,写模式寄存器命令不能将QE由1变为0。

警告:如果/WP或者/HOLD引脚直接连接到电源或者地,以使用标准SPI或者双线SPI操作,QE位永不可设置为1。

图4c 状态寄存器3

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或/RESET引脚功能(HOLD/RST)-易失/非易失性可写入

HOLD/RST位用来决定在8引脚封装的器件中,是使用/HOLD功能还是使用/RESET功能。当HOLD/RST=0(出厂缺省状态),引脚作为/HOLD功能用;如果该位为1,则该引脚做/RESET功能用。但是,/HOLD或者/RESET功能仅在QE=0的状态下才可能有效。如果QE设置为1,/HOLD和/RESET功能都被禁止,该引脚作为专用数据引脚用。

7.1.14 保留位-无功能

少量的状态寄存器位是保留的,读取时可能是0也可能是1。建议忽略这些位的值。在写状态寄存器指令中,保留位可以设置为0,但这并没有任何影响。

7.1.15 状态寄存器存储器保护表(WPS=0,CMP=0)

(略,参考英文数据手册)

7.1.16 状态寄存器存储器保护表(WPS=0,CMP=1)

(略,参考英文数据手册)

7.1.17 独立块保护(WPS=1)

(略,参考英文数据手册)

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了