上图可以看到,除SPI经典的四个引脚外,还有/WP和/HOLD,分别用于写保护和输入保持。对于不同倍率SPI协议,引脚利用搭配是有区别的。
W25Q16BV内部存储结构的逻辑和功能组织见下图,SPI接口负责接收命令和所在,并通过控制逻辑进行解析和实行。状态寄存器(Status Register)用于存储设备的状态信息,如是否忙碌(BUSY位);写控制通过IO2引脚控制,用于启动写操作;高电平生成器(High Voltage Generators)用于实行如擦除等操作;控制逻辑(Control Logic)负责解析SPI接口接收到的命令,并根据需要控制存储器的读/写操作。列解码(Column Decode)和页面缓冲(256-Byte Page Buffer)用于支持页面的读/写操作。
存储器部分被分割成32个块(Block),单个块区包罗16个扇区(Sector),每个扇区又由16个页组成,单页存储256字节数据,共计32 x 16 x 16 x 256 ≈ 2M 字节。存储器通过页所在和字节所在来定位特定的数据位置。
24位所在线通过上述的层次结构来映射整个存储器的所在空间,详细见下面表格。
分区所在位块(Block)所在23~16位(0x1F0000到0x1FFFFF)扇区(Sector)所在15~12位(0x00F000到0x00FFFF)页(Page)所在11~8位字节(Byte)所在7~0位2、指令与时序分析
软件命令:W25Q16BV的指令集由30条基本指令组成,指令完全通过SPI总线控制。指令的启动是通过/CS的下降边缘来触发的,/CS拉高前须完成指令输入,否则无效。DI输入的第一个字节提供指令代码,DI输入上的数据是在时钟的上升沿采样的,首先采样的是最高有效位(MSB)。指令的长度从单个字节到几个字节不等,后面可能跟着所在字节、数据字节、虚拟字节(可选),在某些情况下,还可能是它们组合。所有的读指令都可以在任何一个时钟位之后完成。
指令编码指令编码Write Enable06hWrite Disable04hSector Erase (4KB)20hBlock Erase (32KB)52hBlock Erase (64KB)D8hChip EraseC7h/60hContinuous Read Mode ResetFFhRead Data03hFast Read0BhWrite Status Register01h所有写、编程或擦除指令必须在字节界限上完成(即,在完整的8位数据被时钟同步后,/CS被驱动为高)。如果不在字节界限上完成,该指令将被终止。这一特性旨在保护设备免受不测写入的影响。
当内存正在被编程或擦除,或者当状态寄存器正在被写入时,除了读状态寄存器指令之外的所有指令都将被忽略,直到编程或擦除周期完成。 电平切换时序要求:
下图为Serial Input Timing,此中片选线/CS待输入完成后拉高电平保持时间(tSHSL) (for Array Read Array Read / Erase or Program Read Status Registers) :至少7/40 ns;片选信号有效建立时间(tSLCH):至少为5ns;片选信号有效保持时间(tCHSH):至少为5ns。注意:读指令/写指令时钟频率最大为50Mhz。