全部博文(105)
分类: 嵌入式
2015-12-03 22:22:51
1,描述
串行flash 存储器W25Q128BV为那些对空间大小,引脚数,功耗有限制的系统提供了一个存储解决方案。25Q系列的灵活性和性能比一般的串行flash 设备要高。利用串行FLASH 可以实现代码映射到RAM,直接通过DUAL/QUAD SPI方式来执行代码,存储声音,文本,数据。W25Q128BV 供电范围为2.7——3.6V,在激活状态下电流功耗低到4MA,睡眠状态下则降低到1UA。所有的25Q系列都提供节省空间的封装。
W25Q128BV由65536可编程的页组成的,每页有256个字节。一次最多可以写256个字节。可以一次擦除16页(4KB sector erase),128页(32KB block erase),256页(64KB block erase),或者擦除一整片。W25Q128BV 有4096个可擦除的扇区,256可擦除的块。4KB的扇区对于数据和参数存储有更高的灵活性。
W25Q128BV 支持标准SPI 接口,以及更高性能的DUAL/QUAD SPI ,对应的管脚为时钟,片选,(I/O0)DI,(I/O1)DO,I/O2(/WP),I/O3(/HOLD)。SPI 时钟可以达到104MHz,在DUAL使用快速读时就相当于208MHz,在QUAD 使用快速读时相当于320MHz。这个传输速率比一般的异步8位,16位并行FLASH 存储器要快。连续读模式访问存储器的效率很高,只要8个时钟的指令开销就可以读24位地址的数据,这样就可以实现XIP。
HOLD,WP管脚,可编程的写保护,可分为顶部,底部,整个存储器。这些提供了更灵活的控制。一般地,W25Q128BV支持JEDEC标准,一个64位的独立串行数字,包含制造商和芯片ID。
6.管脚描述
6.1,封装类型
W25Q128BV 有8x6 mm 的WSON(封装代码为E),300mil的SOIC(封装代码为F),封装的细节在数据手册的最后。
6.2,片选信号(/CS)
SPI 的片选信号可以使能和禁止芯片的操作。当/CS 管脚为高电平时,芯片处在不选择的状态,此时串行数据输出管脚都处在高阻态。当芯片处在不选中的状态,芯片的功耗将处在待机状态的功耗,除非内部的擦写,编程,写寄存器周期还在进行。当/CS 低电平时,芯片被选择,功耗处在激活状态下的功耗,这时可以进行相应的读写与擦除。上电后,在指令接受之前,/CS必须从高到低。上电后,/CS管脚必须跟踪VCC,所以在/CS管脚上加一个上拉电阻比较好。
6.3,串行数据输入,输出,IO口
W25Q128BV 支持标准的SPI,DUAL SPI,QUAD SPI 操作。标准的SPI 指令使用单向的DI 管脚在时钟的上升沿进行传输串行写指令,地址,数据到芯片上。也使用单向的DO 管脚在时钟的下降沿从芯片上读数据,读寄存器的值。
DUAL和QUAD SPI 指令使用双向的IO管脚,在时钟的上升沿写指令,地址,数据到芯片上,在时钟的下降沿从芯片上读取数据,寄存器值。QUAD SPI 指令的使用必须把状态寄存器2 中的非易失性的QUAD 使能位置位。QE = 1 ,/WP,/HOLD管脚依次变为IO2,IO3。
6.4,写保护(/WP)
结合SRBP和SRP这两个寄存器,小至4KB,大至整个芯片能被硬件保护。/WP 是低电平有效。当寄存器SR2中的QE位,被置1时,这时的/WP功能将无效,此时/WP已经被用为IO2。
6.5,HOLD(/HOLD)
当芯片被选择时,/HOLD 管脚可以使芯片暂停中止。当芯片/HOLD 为低电平,/CS 也为低电平时,DO管脚将为高阻态,在DI和时钟管脚上的信号将被忽略。当/HOLD 为高电平时,芯片恢复正常操作。当SPI 总线上挂有多个设备时,/HOLD 脚就有用了。/HOLD 管脚低电平有效。当QE置位,/HOLD 管脚作为IO3,/HOLD 功能此时无效。
6.6,串行时钟
串行时钟为串行输入和输出操作提供时序。
7,存储示意图
* 唤醒后禁止写的延迟时间
* 写禁止指令,擦写之后自动禁止写
* 软件写保护和硬件写保护
* 使用Power-down 指令
* Lock Down 写保护
* 一次编程写保护(永久的,不可逆)
无论是唤醒状态还是睡眠状态,当电压VCC 低于门限电压Vwi 时,W25Q128BV都会复。
位。当复位重启这个过程中,所有的操作都是被禁止的,指令也是不被识别的。在唤醒
过程中,当电压VCC升到高于Vwi时,编程和擦除的相关指令仍然要等待一段时间tpuw,
这些指令包括写使能,页写,擦除扇区,擦除块,擦除整个芯片和写状态寄存器。上电
过程中,/CS 必须踪电压VCC,直到电压达到VCC_min后再延迟tvsl时间。可以在/CS
管脚上加一个上拉电阻来实现。
上电后,芯片处在禁止写的状态,WEL位为0。在进行页写,扇区擦除,段擦除,芯片
擦除,写状态寄存器之前,必须先发送写使能。完成这些指令后,WEL位自动清除。
通过写状态寄存器和设置SRP0,SRP1,BP相应的位来实现软件控制写保护是很方面的。
这种方法可以设置小到4KB,大到整个芯片为只读,也就是写保护。结合/WP 管脚,可
以通过硬件控制来使能或者禁止状态寄存器的改变。详细的说明请看状态寄存器那一段
。在睡眠模式下,其实提供了一种额外的写保护,因为此时只识别唤醒指令。
9. 控制和状态寄存器
9.1.1,BUSY
BUSY 位是在S0 中的一个只读位。当执行页写,QUAD 页写,扇区擦除,块擦除,片擦
除,写状态寄存器,擦写安全寄存器时,BUSY 位将会置1。在BUSY 位置1 期间,只
识别读状态寄存器指令,擦写SUSPEND 指令。当擦写指令,写状态寄存器的指令完成
后,BUSY 位自动清零,表示芯片已经准备好接受其他指令。
9.1.2,写使能锁存(WEL)
WEL位是在S1中的一个只读位,当执行完写使能的时候置1。当芯片被写禁止的时候清
0. 当上电过程中或执行以下这些指令后:写禁止,页写,QUAD 页写,扇区擦除,块
擦除,芯片擦除,写状态寄存器,擦写安全寄存器时,芯片将处在写禁止状态。
9.1.3,块保护位(BP2,BP1,BP0)
BP 位都是在状态寄存器中非易失性的,可读可写的位(对应为S4,S3,S2)。写这些
位可以进行相应的写保护控制,读这些位可以知道当前块保护的状态。读写这些位都是
通过相应的状态寄存器指令。整个芯片或者一部分可以保护起来,当然也可以不保护。
默认的就是不保护。
9.1.4,顶部/底部块保护(TB)、
非易失性的TB 位,可以控制BP 是从顶部开始还是底部开始。TB=0,从顶部开始,TB=1
从底部开始。默认的是从TB=0 顶部开始的。TB 位是可以通过写状态寄存器指令来操作
的。
9.1.5,扇区/块保护(SEC)
非易失性的SEC位决定是以4KB扇区还是以64KB 的块来进行存储。SEC默认值是0,
以64KB 的块来进行保护。
9.1.6,完全保护(CMP)
CMP 是在状态寄存器中的一位非易失性的可读可写的位(S14)。与SEC,TB,BP位结
合,使得存储器的保护措施更加灵活。一旦CMP位置1 ,SEC,TB,BP位将保留。当
CMP=0,当顶部4KB以外的部分没有被保护的时候,顶部4KB将被保护。当CMP = 1,
除顶部4KB以外的部分将被保护。默认的CMP = 0。详细情况参看SRMP参考。
9.1.7,状态寄存器保护位(SRP1,SRP0)
SRP1,SRP0是状态寄存器中非易失性的可读写的两位(S8,S7)。SRP 位决定着写保护
的方法,软保护,硬件保护,电源锁定,一次编程保护。
注意:1,当SPR1,SRP0 = (1,0),一个POWER-DOWN,POWER-UP 周期后,SRP1,SRP0就
变为了(0,0)状态。
2,这是一条特别的命令。详细情况联系华邦。
9.1.8,擦写暂停寄状态位(SUS)
SUS 是在状态寄存器中的只读位(S15)。当执行完擦写暂停指令位后,SUS置位。当执
行指令7AH以及POWER-DOWN,POWER-UP周期后,SUS 被清零。
9.1.9,安全寄存器锁定位(LB3,LB2,LB1,LB0)
LB位是在状态寄存器中非易失性的一次编程位(S13,S12,S11,S10)。LB控制写保护,
描述安全寄存器的状态。默认的LB位都为0,即安全寄存器没有被锁定。LB 位可以通写
状态寄存器指令来置1 。LB 位都是一次编程,所以一旦写1 ,相应的256字节的安全
寄存器将会变得永久只读。
9.1.10,QUAD 使能(QE)
QE是在状态寄存器中的非易失性的可读可写的一位(S9)。QE 置位,表示进行的是QUAD
SPI 操作。默认的QE是0,/WP,/HOLD 都是使能的。当QE 是1时,IO2,IO3管脚被
被使能。
注意:当芯片处在标准SPI或者DUAL SPI ,并且/WP,/HOLD管脚夫是直接接在高电
电平或者地上时,QE位不要设置为1。
9.1.11,状态寄存器存储保护(CMP=0)
9.1.12,状态寄存器存储保护(CMP=1)
9.2,指令
W25Q128BV 共有34个基本指令。指令都是以/CS 下降沿开始的。第一个传输的字节是指令
码。在DI上传输的数据是在时钟的上升沿被锁存的。MSB 首先被传输。
指令的长度是不定的,有单字节的,也有多字节的。指令代码后可能还跟有地址,数据,
无关的字节,有可能还是几个的组合。指令是以/CS 上升沿结束的。每个指令的时序图都
包含在图片4中。所有的读指令可以在任何时钟周期结束。但是,所有的擦写指令必须在
/CS拉高之后还有一个8位的时钟间隔,否则前面的擦写指令将被忽略。这样可以保护芯
片意外被写。当芯片正在进行擦写操作,写寄存器时,直到完成,除了读状态寄存器以外的所有指令都将被忽略。
9.2.1,制造商和芯片ID
9.2.2,指令表1(擦写表1)
9.2.3,指令表2(读指令)
9.2.4,指令表4(ID,安全指令)
9.2.5,写使能(06h)
写使能指可以设置状态寄存器中的WEL位置1 。在页写,QUAD页写,扇区擦除,块擦除,
片擦除,写状态寄存器,擦写安全寄存器指令之前,必须先将WEL 位置1 。写使能指令
是以/CS拉低开始的,将06H 通过DI 在时钟的上升沿锁存,然后/CS 拉高来结束指令。
9.2.6,易失性的寄存器写使能(50H)
非易失性的状态寄存器位在9.1节已经描述过,也可以像易失性的位一样进行写操作。
这样对芯片配置会更灵活,对存储保护也不用等待慢速的非易失性位的写入,也就不会影响到状态寄存器中的非易失性位。
为了写状态寄存器中的那些易失性位的值,必须在在写状态寄存器指令(01H)前,写入易失性的状态寄存器指令(50H)。写易失性的状态寄存器指令不会使改变WEL位。这条指令的惟一的作用是使得写入写状态寄存器指令可以改变状态寄存器中的易失性位。
9.2.7,写禁止(04H)
写禁止指令使得状态寄存器中的WEL 位为0。写禁止指令是以/CS 低电平开始的,然后在DI传输指令代码04H到芯片,最后是以/CS 拉高结束。当上电后,以及完成写状态寄存器,擦写安全寄存器,页写,QUAD 页写,扇区擦写,块擦写,芯片擦写指令后,WEL 位是自动清零的。
写禁止指令(04H)也被用来取消易失性的写使能指令(50H)。
9.2.8,读状态寄存器1(05H)和读状态寄存器2(35H)指令
读状态寄存器指令允许读8位状态寄存器位。这条指令是以/CS 拉低开始,然后通过DI 在时钟的上升沿传输指令代码05H(读寄存器1指令)或者是35H(读寄存器2指令),然后状态寄存器的相应位通过DO在时钟的下降沿从高位到低位依次传出。最后以/CS拉高结束。读状态寄存指令可以任何时间使用,在擦写,写状态寄存器指令周期中依然可以。这样就可以随时检查BUSY位,检查相应的指令周期有没有结束,芯片是不是可以接受新的指令。状态寄存器可以连续的读出来,如图7。
9.2.9,写状态寄存器(01H)
写状态寄存器可对状态寄存器进行写操作。但是仅仅是那非易失性的位,SRP0,SEC,TB,BP,CMP,LB,QE,SRP1。其他的位将不会受到这条指令的影响。LB 是非易失性的一次编程(OTP)位,一旦写1,将不能清零。
对于写非易失性的状态寄存器位,写状态寄存器指令(01H)之前,必须先写入写使能(06H)指令(要保证WEL位为1)。一旦写使能,写状态寄存器指令(01H)将会以/CS 拉低开始,然后通过DI线上传输指令代码(01H),然后传输相应的状态寄存器位。最后以/CS 拉高结束。
对于写易失性的状态寄存位,在写状态寄存器之前必须先写入写易失性状态寄存器位指令(50H)。SRP1,LB位是一次编程,所以不可能从1写为0。易失性的位在掉电后其值就被丢掉了,非易失性的位则一直保持。
为了完成写状态寄存器指令,/CS 管脚必须在数据传输完成后拉高。如果/CS 没有拉高,那么写状态寄存指令将不会被最终执行。如果/CS 在第8个时钟拉高(25系列的),CMP,QE,SRP1将被清零。
在对非易失性的状态寄存器位写操作(06指令与01H指令)期间,当/CS 拉高后,其内建时间是tw。当写状态寄存指令在执行期间,读状态寄存器指令仍然可以继续,去检查BUYS 位。在写状态寄存器指令周期中BUSY位为1,当该指令完成后,BUSY位被清零,WEL位也被清零,表明芯片准备接受的新指令。
在对易失性寄存器位(50H和01H)操作时,/CS 拉高后,在tSHSL2时间内,状态寄存器的相应位将被新的值刷新。在状态寄存器刷新期间,BUSY 位仍然是0。
9.2.10,读数据(03H)
读数据指令允许从存储器读一个字节和连续多个字节。该指令是以/CS 拉低开始,然后通DI 在时钟的上升沿来传输指令代码(03H)和24位地址。当芯片接受完地址位后,相应地址处的值将会,在时钟的下降沿,以高位在前低位在后的方式,在D0上传输。如果连续的读多个字节的话,地址是自动加1的。这意味着可以一次读出整个芯片。该指令也是以/CS拉高来结束的。
如果当BUSY=1时执行该指令,该指令将被忽略,并且对正在执行的其他指令不会有任何影响。读数据指令的时钟可以从D.C 到最大的fR.
9.2.11,快速读指令(0BH)
快速读指令与读数据指令比较相似,差别在于快速读数据指令可以以最高的频率读。只是在传输完24位地址后,另加8位无关的数据。在传输8位无关的数据时间内,芯片用来建立初始地址,这时DO上的数据也是无关的。
9.2.12,DUAL 输出快速读(3BH) 略
9.2.13,QUAD快速读(6BH) 略
9.2.14,DUAL IO快速读(BBH) 略
9.2.15,QUAD IO快速读(EBH) 略
9.2.16,字读QUAD(E7H) 略
9.2.17,8个字一起读(E3H)略
9.2.18————9.2.20 略
9.2.21,页编程指令(02H)
页编程指令允许1到256字节写入存储器的某一页,这一页必须是被擦除过的(也就是只能写0,不能写1,擦除时是全写为1)。在页编程指令之前,必须先写入写使能指令。页编程指令是以/CS拉低开始,然后在DI上传输指令代码02H,再接着传输24位的地址,接着是至少一个字节的数据。/CS 管脚必须一直保持低。页编程指令的时序图如图19。
如果一次写一整页数据(256字节),最后的地址字节应该全为0。如果最后8字节地址不为0,但是要写入的数据长度超过页剩下的长度,那么芯片会回到当前页的开始地址写。写入少于256字节的的数据,对页内的其他数据没有任何影响。对于这种情况的惟一要求是,时钟数不能超过剩下页的长度。如果一次写入多于是256字节的数据,那么在页内会回头写,先前写的数据可能已经被覆盖。
作为擦写指令,当最后字节的第8位进入芯片后,/CS 必须拉高。如果/CS 没有拉高,那么页写指令将不被执行。/CS 拉高后,页编程指令的内建时间为tpp。在页写指令执行期间,读状态寄存器指令仍然可以识别,以此来进行检查BUSY 位。当页写指令执行期间,BUSY位为了1 。当执行完后,BUSY为0,表明可以接受新的指令了。页写指令完成后WEL位自动清零。如果该指令要操作的页已经被保护起来,那么该指令也将不执行。
9.2.22,QUAD INPUT PAGE PROGRAM(32h) 略
9.2.23,扇区擦除(20H)
扇区擦除可以擦除4K-byte存储空间(全为0XFF)。进行扇区擦写指令之前,必须进行写使能指令。该指令是以/CS 拉低开始的,然后在DI 上传输指令代码20H 和24 位地址。时序图如图21。
当最后字节的第8位进入芯片后,/CS 必须拉高。如果/CS 没有拉高,那么扇区擦写指令将不被执行。/CS 拉高后,扇区擦写指令的内建时间为tSE。在扇区擦写指令执行期间,读状态寄存器指令仍然可以识别,以此来进行检查BUSY 位。当扇区擦写指令执行期间,BUSY位为了1 。当执行完后,BUSY为0,表明可以接受新的指令了。扇区擦写指令完成后WEL位自动清零。如果该指令要操作的任何一页已经被保护起来,那么该指令也将不执行。
9.2.24,32KB块擦除指令(52H)
块擦除可以擦除32K-byte存储空间(全为0XFF)。进行块擦写指令之前,必须进行写使能指令。该指令是以/CS 拉低开始的,然后在DI 上传输指令代码02H 和24 位地址。时序图如图22。
当最后字节的第8位进入芯片后,/CS 必须拉高。如果/CS 没有拉高,那么块擦写指令将不被执行。/CS 拉高后,块擦写指令的内建时间为tBE1。在块擦写指令执行期间,读状态寄存器指令仍然可以识别,以此来进行检查BUSY 位。当块擦写指令执行期间,BUSY位为了1。当执行完后,BUSY为0,表明可以接受新的指令了。块擦写指令完成后WEL位自动清零。如果该指令要操作的任何一页已经被保护起来,那么该指令也将不执行。
9.2.25,64KB 块擦除指令(D8H)
块擦除可以擦除64K-byte存储空间(全为0XFF)。进行块擦写指令之前,必须进行写使能指令。该指令是以/CS 拉低开始的,然后在DI 上传输指令代码D8H 和24 位地址。时序图如图23。
当最后字节的第8位进入芯片后,/CS 必须拉高。如果/CS 没有拉高,那么块擦写指令将不被执行。/CS 拉高后,块擦写指令的内建时间为tBE。在块擦写指令执行期间,读状态寄存器指令仍然可以识别,以此来进行检查BUSY 位。当块擦写指令执行期间,BUSY位为了1。当执行完后,BUSY为0,表明可以接受新的指令了。块擦写指令完成后WEL位自动清零。如果该指令要操作的任何一页已经被保护起来,那么该指令也将不执行。
9.2.26,芯片擦除(C7/60H)
芯片擦除可以擦除64K-byte存储空间(全为0XFF)。进行芯片擦写指令之前,必须进行写使能指令。该指令是以/CS 拉低开始的,然后在DI 上传输指令代码C7H或者60H。时序图如图24。
当最后字节的第8位进入芯片后,/CS 必须拉高。如果/CS 没有拉高,那么芯片擦写指令将不被执行。/CS 拉高后,芯片擦写指令的内建时间为tBE。在芯片擦写指令执行期间,读状态寄存器指令仍然可以识别,以此来进行检查BUSY 位。当芯片擦写指令执行期间,BUSY位为了1。当执行完后,BUSY为0,表明可以接受新的指令了。芯片擦写指令完成后WEL位自动清零。如果该指令要操作的任何一页已经被保护起来,那么该指令也将不执行。
9.2.27-------9.2.28 略
9.2.29,Power-Down指令(B9H)
尽管在正常工作时,待机电流已经很小,但是利用Power-Down指令可以使得待机电
流更小。对于利用电池供电的系统应用来说,Power-Down指令会变得非常有用。该
指令是以/CS拉低开始,然后在DI上传输指令代码B9H。
当最后字节的第8位进入芯片后,/CS 必须拉高。如果/CS 没有拉高,那么Power-Down指令将不被执行。/CS 拉高后,芯片进入到Power-Down状态的时间为tDP。当芯片处在Power-Down状态时,只识别Release from Power-Down/芯片ID指令,这两个指令可以使芯片恢复到正常状态。其他的指令都不识别,读寄存器指令也不识别。这是Power-Down状态下最大的写保护,只识别一条指令。芯片在正常工作状态下都是处于Power-Up状态,待机电流为ICC1。
9.2.30,Release Power-Down / Device ID (ABH)
该指令是一个多功能的指令。可以用来把芯片从Power-Down 状态下唤醒,也可以用来读取芯片的ID号。
为了把芯片从Power-Down 状态下唤醒,该指令以/CS拉低开始,然后在DI上传输指令代码ABH,然后拉高/CS 。从Power-Down 状态下唤醒到芯片恢复正常操作,其他的指令都识别需要的时间为tRES1。在这段时间内/CS 必须还一直保持高电平。
当不在Power-Down状时,就用该指令来读取芯片ID。以/CS拉低开始,然后在DI传输指令代码ABH,接着传3字节的无关位。芯片ID将会在时钟的下降沿以高位在前的方式在DO上输出。W25Q128BV 的芯片ID是由制造商和芯片ID组成。芯片ID可以连续读出来。该指令以/CS拉高结束。
当该指令用来唤醒芯片和获取芯片ID时,跟前面描述的基本都是一样的。但是作为唤醒芯片时,/CS 拉高后其内建时间为tRES2 ,内建完成后,芯片恢复到正常状态,其他的指令也将被识别。当BUSY=1 时执行这条指令,将被唿略,并且对当前正在执行的指令没有任何影响。
9.2.31,读制造商和芯片ID(90h)
该指令可以替代Release from Power-Down/Device ID指令,该指令读出的JEDEC签名的制造商ID和特殊的芯片ID。
该指令与Release from Power-Down/Device ID指令相似。该指令以/CS 拉低开始,然后通过DI传输指令代码90H和24位的地址(全为000000H)。这之后,WINBOND 的ID
(EFH)和芯片ID将在时钟的下降沿以高位在前的方式传出。关于W25Q128BV 的芯片和制造商ID,在图29中列出。如果24位地址传输的是000001H,那么芯片ID将首先被传出,然后紧接着的是制造商ID。这两个是连续读出来的。该指令以/CS拉高结束。
9.2.32,Read Manufacturer /Device ID Dual I/O(92h) (略)
9.2.33,Read Manufacturer /Device ID QUAD I/O(94h) (略)
9.2.34,读独立的ID序列(4BH)
该指令可以读取一个芯片已经固化的只读的64位ID。每一片W25Q128BV的ID都是独立
的。该ID序列与用户软件可以一起实现防止对系统的拷贝和克隆。该指令以/CS拉低开
始,然后传输指令代码(4BH)和4字节的无关位。这之后,64位的独立ID在时在时钟
的下降沿通过DO传出。
9.2.35,读JEDEC ID(9FH)
考虑到兼容性的原因,W25Q128BV 提供了一系列的确定芯片ID的指令。该指令与2003 通过的SPI串行存储设备的JEDEC标准是兼容的。该指令是以/CS 拉低开始,然后在传输指
令代码9FH,一个字节的WINBOND 的JEDEC制造商签名和两字节的芯片ID字节(存储类型,容量)将在时钟的下降沿以商位在前的方式在D0上传输出来。
9.2.36,擦除安全寄存器(44H)
W25Q128BV 提供了4个256字节的安全寄存器,每个都可以单独的进行擦写。这些寄存器
可以用来存储的一些安全和重要的信息。
擦除安全寄存器指令与扇区擦写指令是相似的。擦除安全寄存器指令执行前必须先执行写
使能指令(WEL 位为1)。该指令以/CS拉低开始,然后传输指令代码(44H)和24位地址
,将会擦除其中的一个安全寄存器。
注意:安全寄存器0被华邦公保留了,所以在使用安全寄存器0之前,先使用其他的。
擦除安全寄存器指令时序如图34所示。当最后要传输的一个字节的第8位锁定后,/CS
必须拉高。如果没有这样,该指令将不会执行。当/CS 拉高后,该指令的内建时间为 tSE.
当该指令在执行期间,读取状态寄存器指令还是可以执行的,这样可以去检查BUSY 位。
当该指令执行时,BUSY位为1 ,执行完后为0,为0后就芯片可以接受其他的指令,此
时WEL 位也被自动清零。在状态寄存器2中的安全寄存器锁定位可以一次编程来保护相
应的安全寄存器。一旦锁定位为1,相应的安全寄存将永久的锁定,擦除安全寄存器指令将无效。
9.2.37,写安全寄存器指令(42H)
写安全寄存器指令与页写指令相似。在相应的位是擦除状态时,可以一次写入1到256字节。擦除安全寄存器指令执行前必须先执行写使能指令(WEL 位为1)。该指令以/CS拉低开始,然后传输指令代码(42H),24位地址和至少一个字节的数据。在整个数据传输期间/CS必须一直保持低电平。
该指令的时序图如图35。在状态寄存器2中的安全寄存器锁定位如果被编程,那么相应的
安全寄存器将永远被锁定,写安全寄存器指令将无效。
9.2.38,读安全寄存器指令(48H)
该指令与快速读指令相似,允许一到多个字节连续从其中一个寄存器读出。该指令以/CS拉低开始,然后在DI上传输指令代码48h,24位地址和1个字节的无效数据。指令代码和地址是在时钟的上升沿锁存的,相应地址处的数据是时钟的下降沿以高位在前的方式在DO上传输的。当一个字节的数据传输后,地址自动加1。当地址已经是0XFF时,自动加1后变为了0。该指令以相应/CS 拉高结束。该指令的时序图如图36。当BUSY 位为1时执行该指令,将被忽略,并且对当前正在执行的指令没有任何影响。读安全寄存器指令允许时钟频率从D.C 到最大的FR。
注意:安全寄存器0被华邦公保留了,所以在使用安全寄存器0之前,先使用其他的。
附:几种不同的封装