目录
前言
这章用来记录该flash芯片的状态寄存器的定义以及功能
状态寄存器1(Status Register 1)
如上图,寄存器1共有8bit,分别对应了不同的功能:
S0(Busy):
繁忙标志,当芯片正在写入(Program)或擦除(Erase)时该标志位为1,表示正在芯片正在工作,设备只接受寄存器状态读取,以及擦除、写入暂停的指令其余都会忽略。通过判断busy可以知道上个指令完成了没有,完成后再去执行下一个指令
S1(WEL):
写使能标志,当写使能指令执行后,该标志为1,表示此时可以写入,为0则表示禁止写入。当执行:写失能(Write Disable)、写入、擦除的时候,会将该标志位置0。
S4、S3、S2(BP2、BP1、BP0):
块保护,可以使用状态寄存器指令对存储阵列的部分或全部进行保护。
S5(TB):
顶部/底部块保护,TB是与BP2、BP1、BP0一起耦合来表示保护的区域,作用是判断是保护数据的TOP or Bottom
S6(SEC):
SEC= 0表示擦除64KB块,SEC=1表示4kb扇区,和S5、S4、S3、S2共同表示保护的区域
具体的表示方式如下图所示:
S7(SRP0):
该状态寄存器位与状态寄存器2的S1共同组成保护配置,表示软件写入保护、硬件写入保护、电源锁定、一次性写入
状态寄存器2(Status Register 2)
S0(SRP1):
该状态寄存器位与状态寄存器1的S7共同组成保护配置,表示软件写入保护、硬件写入保护、电源锁定、一次性写入
S1(QE):
Quad Enable,Quad SPI指令的使能位,当QE=1时,WP和HOLD会被关闭,变为IO2、IO3用作芯片的数据输出,当QE=1时,WP和HOLD启用。要使用Quad四线输出的时候,就要把该标志为置1
S2(LB):
芯片中有一部分预留独立出来叫做Security Register,是用来作为独立的存储区域,该区域有4*256byte大小,LB默认是0,这个空间是可以写入、读取的,当LB=1时,他只能单次编程,当他变为1该区域就永久变为了只读,里面的数据就永久锁定了,用来存一些出厂即固定且不可丢失、不需要改变的数据。例如:软件版本号,硬件版本号,秘钥等
S3、S4、S5:
保留bit
S6(CMP):
互补保护,CMP的作用是让块保护的区域更加灵活多变,就是当CMP=0时,目标区域被保护(只读)、该块剩余的区域不进行保护,但当CMP=1时,目标区域可以被写入、其他的区域被保护。详情见BP0、BP1、BP2的表示图
S7(SUS):
Suspend Status挂起标志位, 可以把写入、擦除挂起,当执行指令Program/Erase Suspend (PES) (75H or B0H)时,SUS=1,当执行Erase/Program Resume (7AH or 30H)或者重新上下电的时候,SUS=0
状态寄存器3(Status Register 3)
S5、S6(DRV0、DRV1):
这两个bit是用来控制驱动电流的,官方推荐的当VCC=1.8v时,用100%的驱动力,当VCC=3.3时,用10%的驱动力
总结
状态寄存器的功能是Flash使用中的一个核心功能,其不仅关乎Flash的功能配置,也能表示当前芯片状态,是Flash芯片学习中的重点