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


读数据(0x03)指令仅在标准SPI模式下支持 。
图14 读数据指令(仅标准SPI模式下支持)
8.2.7 快速读(0x0B)
快速读指令类似于读数据指令,区别在于该指令可以运行在最高FR频率(参考AC电气特性) 。这通过在24位地址之后插入一组8个无效时钟周期(一个无效字节)来实现,参考图16 。无效时钟使得器件内部的线路有额外的时间来建立初始地址 。在无效时钟时,出现在DO引脚上的数据不关心 。
图16a 快速读指令(SPI模式)
QPI模式下的快速读(0x0B)指令
快速读指令同样可应用在QPI模式下 。当QPI模式使能,需要插入的无效时钟数,通过设置读参数(0xC0)指令来设置,这个参数可以根据对最大读取速度和最小数据延时之间的不同需求,在一个较宽的范围内选择 。取决于读参数位P[5:4]的设置,无效周期数可以设置为2,4,6或者8 。上电或者复位后需要插入的无效周期数缺省值是2 。
图16b 快速读指令(QPI模式)
8.2.8 双线输出快速读(0x3B)
双线输出快速读(0x3B)指令类似于标准快速读(0x0B)指令,区别在于本指令使用双引脚输出:IO0和IO1 。这使得数据传输速率相比于标准SPI器件可以提高1倍 。本指令对于需要将代码从Flash拷贝到RAM之类的应用是理想的选择 。
类似于快速读指令,双线输出快速读指令可以运行在最大可能速率FR(参考AC电气特性)上 。无效时钟允许器件的内部电路有额外的时间来建立初始地址 。在无效时钟周期时,输入数据不关心 。但是,必须确保IO0引脚在第一个数据输出时钟的下降沿到来之前已经是高阻态 。
图18 双线输出快速读指令(仅SPI模式下支持)
8.2.9 四线输出快速读(0x6B)
四线输出快速读(0x6B)指令类似于双线输出快速读(0x3B)指令,区别在于数据输出出现在四个数据引脚IO0,IO1,IO2,IO3上 。在使用该指令之前,状态寄存器中的QE位必须设置为1 。四线输出快速读指令使得器件可以提供相比于标准SPI多达4倍的数据速率 。
四线输出快速读指令可以运行在最大可能速率FR(参考AC电气特性)上 。该特点通过在地址发送完成到数据输出之间插入8个无效时钟周期来实现,参考图20 。无效时钟允许器件内部电路有额外的时间来建立初始地址 。无效时钟周期期间的输入数据,器件并不关心 。但是,在首个数据输出时钟的下降沿之前,IO引脚必须已经是高阻态 。
图20 四线输出快速读指令(仅SPI模式下支持)
8.2.10 双IO快速读(0xBB)
双IO快速读(0xBB)指令允许提高随机访问时的访问效率,这通过使用2个IO线,IO0和IO1来实现 。这有些类似于双输出快速读(0x3B),但区别在于24位地址传输时,每个周期可以传输2位 。这降低了指令开销,从而允许一些应用中的XIP需求 。
双IO快速读连同“连续读模式”
双IO快速读指令可以更进一步地降低指令开销,这一点可以通过设置“连续读模式”位(M70)来实现,这些位在24位地址传输之后,参考图22a 。高4位(M74)控制着下一次双IO快速读指令的长度,指示下次指令是否包含第一个字节的指令码 。低4位(M3~0)不关心 。但是,在第一个数据传输时钟的下降沿之前这些IO必须已经是高阻态 。
如果“连续读模式”位M54=(1,0),则下一次双IO快速读指令(也就是本次/CS拉高然后再拉低)就不再需要1字节长度的指令码0xBB,参考图22b 。这样就从指令序列中减少了八个时钟周期,从而在/CS拉低后,立即输入读取地址 。反之如果M54不等于(1,0),则下一次指令仍旧需要首个字节的指令码,从而成为普通操作 。建议下条指令时,在IO0上输入(16个周期),从而确保M4=1,然后器件进入正常的操作模式 。