8.1 器件ID和指令集表( 十 )


图42 读唯一ID序列号指令(仅SPI模式)
8.2.29 读JEDEC ID(0x9F)
出于通用性考虑,提供了几条指令以从电气上确定器件的身份 。读JEDEC ID指令兼容JEDEC在2003年采用的SPI兼容的串行FLASH标准 。该指令通过拉低/CS引脚发起,然后向器件发送0x9F指令 。JEDEC分配的的制造商ID(0xEF)以及2个器件ID字节,内存类型(ID15-ID8)和容量(ID7-ID0)会在之后的每个CLK下降沿从器件中发出,MSb在先,参看图43a和图43b 。关于存储器类型和容量字段,可参考制造商和器件ID表 。
图43a 读JEDEC ID指令(SPI模式)
图43b 读JEDEC ID指令(QPI模式)
8.2.30 读SFDP寄存器(0x5A)
包含有256字节的串行FLASH可发现参数(SFDP)寄存器,包含了关于器件配置,有效指令集等信息 。SFDP参数存储在一或者多个参数识别(PID)表 。当前只有一个PID表被指定,但是将来可能有更多项目会加入 。读SFDP寄存器指令兼容2010年为PC和其他应用设定的SFDP标准,以及2011年出版的标准 。绝大多数2011年6月份之后(日期码1124及之后)上市的公司SPI Flash存储器都支持SFDP功能,可参考数据手册 。
读SFDP指令通过拉低/CS引脚为低,然后通过DI引脚发出指令码0x5A,以及24位的地址(A23-A0) 。其后需要8个无效时钟周期,然后SFDP寄存器的内容则会在第40个及之后的CLK下降沿上输出,MSb在先,参考图34 。关于SFDP寄存器的值和表述,可参考应用说明中的SFDP定义表 。
注意1:A23-A8=0,A7-A0用来确定256字节SFDP寄存器的读取的起始地址 。
图34 读SFDP寄存器指令序列
8.2.31 擦除安全寄存器(0x44)
提供3组256字节的安全寄存器,这些寄存器可以被独立地擦除和编程 。这些寄存器可用于制造商在存储器阵列之外,保存安全或者其他重要的信息 。
擦除安全寄存器指令,类似于扇区擦除指令 。在器件可接受擦除安全寄存器指令之前,需要先给出写使能指令(设置状态寄存器的WEL为1) 。本指令通过将/CS拉低,然后向器件发送指令码0x44,其后跟上24位地址(A23-A0),以擦除3组安全寄存器中的1组 。
擦除安全寄存器指令序列参考图45 。/CS引脚必须在在最后一个字节的第8位发送完成后拉高 。如果没有这么做,指令不会被执行 。在/CS拉高之后,内部自同步的擦除安全寄存器操作将会持续t_SE(参见AC特性) 。如果擦除安全寄存器循环正在进行,读状态寄存器指令仍然可用,并且应该使用该指令以获取状态寄存器的BUSY位 。如果擦除循环仍然在进行,则BUSY是1,如果循环结束,器件可接受其他指令,则该位为0 。擦除安全寄存器指令循环结束后,状态寄存器中的WEL位将会清0 。状态寄存器2中的安全寄存器锁定位(LB3-1)可以一次性编程以用来保护安全寄存器 。一旦某锁定位设置为1,则相应的状态寄存器被永久地锁定,针对此状态寄存器的擦除安全寄存器指令将会被忽略(参考7.1.8章节获取详细描述) 。
图45 擦除安全寄存器指令(仅SPI模式)
8.2.32 编程安全寄存器(0x42)
编程安全寄存器指令类似于页编程指令 。该指令允许将之前擦除过的(内容0xFF)的安全寄存器区域中的1~256字节编程 。在发出该指令之前,需要使用写使能指令将状态寄存器中的WEL设置为1 。该指令通过将/CS引脚拉低来发起,然后通过DI引脚发送指令码0x42,24位地址(A23-A0),以及至少1字节数据到器件 。/CS引脚必须在指令发送的整个过程中保持为低 。
编程状态寄存器指令序列参见图46 。可以使用状态寄存器2中安全寄存器锁定位(LB3-1)来一次性编程,以保护状态寄存器 。如果一个锁定位为1,则相应的安全寄存器被永久锁定 。针对这些寄存器的编程安全寄存器指令将会被忽略(参考图7.1.8,8.2.25以获取详细描述) 。