8.1 器件ID和指令集表

数据手册翻译(3)8.2 指令描述9 AC特性
8 指令
使用标准/双线/四线SPI的指令集,一共包含45条基本指令,这些指令都通过SPI进行控制(参见指令集表1-2) 。指令在片选信号/CS的下降沿发出,通过DI信号线传输的第一个字节为指令码 。DI信号线上的信号在时钟的上升沿采样,MSb先传输 。
QPI指令集则包含32条基本指令,同样通过SPI信号线的这些信号进行控制(参见表3) 。指令同样需要在片选信号/CS的下降沿之后发出 。通过IO[3:0]传输的第一个字节是指令码 。四个IO线上的信号在CLK的上升沿采样,MSb先发送 。所有的QPI指令,地址,数据和无效字节都使用四个IO线同时传输,每个字节消耗2个时钟周期 。
有些指令的长度短至单个字节,有些则包含多个字节,首个字节的指令码之后跟着地址字节,数据字节,或者无效字节(不关心),或者是这些的组合 。/CS信号的上升沿完成指令 。各个指令和时钟相关的时序图参考图5到图57 。所有的读指令可以在任意的时钟位置后完成 。但是,所有写,编程或者擦除指令必须在字节边界之后完成(/CS必须在一个完整的8位传输之后置高),否则指令将会被忽略 。该特性保护器件,避免不经意的写入 。此外,在存储器正在编程或者擦除时,或者当正在写入状态寄存器时,除了读状态寄存器之外的所有指令都会被忽略,直到编程或者擦除循环完成 。
8.1 器件ID和指令集表 8.1.1 制造商和器件标识符
8.1.2 指令集表1(标准/双线/四线SPI指令)
8.1.3 指令集表2(标准/双线/四线SPI指令)
8.1.4 指令集表3(QPI指令)
8.2 指令描述 8.2.1 写使能(0x06)
写使能指令(图5)用来设置WEL位 。在每次进行页编程,四页编程,扇区擦除,块擦除,整片擦除,写状态寄存器或者擦除/编程安全寄存器指令之前,必须先设置WEL位 。写使能指令发出前先设置/CS为低电平,将指令码0x06在CLK的上升沿移入DI信号线,然后驱动/CS为高电平 。
图5 SPI或者QPI模式下的写使能指令
8.2.2 易失性状态寄存器写使能(0x50)
易失性状态寄存器位已经在7.1小结进行了描述,这些非易失性状态寄存器位也可以按照易失性位写入 。这提高了系统配置和存储器保护机制的灵活性,避免因频繁写入非易失性状态位从而降低这些位的寿命 。当需要写易失性数据到状态寄存器的相关位时,必须在写状态寄存器指令(0x01)之前先发出易失性状态寄存器写使能(0x50)指令 。该指令不会设置WEL位,因为仅用来控制写状态寄存器指令去写易失性状态位而已 。
图6 SPI或者QPI模式下的易失性状态寄存器写使能指令
8.2.3 写禁止(0x04)
写禁止指令(图7)复位WEL位 。该指令发出时先拉低/CS位,然后将指令码0x04移位入DI信号线,然后驱动/CS为高电平 。注意WEL位在上电之后,或者在写状态寄存器指令、擦除/编程安全寄存器指令、页编程指令、四页编程指令、扇区擦除指令、块擦除指令、整片擦除指令和复位指令之后自动复位为0 。
图7 SPI或者QPI模式下的写禁止指令
8.2.4 读状态寄存器1(0x05),读状态寄存器2(0x35),读状态寄存器3(0x15)
读状态寄存器指令允许每次读出一个8位的状态寄存器 。该指令首先需要设置/CS为低电平,然后在CLK的上升沿向DI信号线输入0x05(状态寄存器1),或者0x35(状态寄存器2),或者0x15(状态寄存器3) 。然后,相应的状态寄存器在每个CLK的下降沿出现在DO引脚上,MSb先输出,参考图8 。查询7.1节以获取状态寄存器的描述 。
读状态寄存器指令可以在任何时刻使用,即使编程、擦除或者写状态寄存器等操作正在进行 。这使得可以通过查询BUSY位来判断前述这些指令是否完成了 。状态寄存器可以连续读,参考图8 。状态寄存器读取操作通过拉高/CS引脚来结束操作 。