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


四IO字读取连同“连续读模式”
在地址之后跟上“连续读模式”位M7-0,可以进一步降低四IO字读取的指令开销,见图26a 。高位(M7-4)控制着下一条四IO快速读取指令的长度,通过指示是否包含首字节的指令码来表示 。低位(M3-0)不关心 。但是,在首个数据输出时钟的下降沿之前,IO引脚必须为高阻态 。
如果“连续读模式”位M5-4=(1,0),则下一次的四IO快速读(也就是本次/CS置高再置低)不再需要0xE7的指令码,如图26b 。这样,指令序列将会减少8个周期,/CS拉低后立刻传输地址 。如果M5-4不等于(1,0),则下一次指令仍然需要首个指令码,也就是正常的操作 。建议下次指令时在IO0上输入0xFF(8周期),从而确保M4=1,使得器件进入正常操作 。
图26a 四IO字读取指令(首次读取或者前次读取M5-4!=10,仅SPI模式)
图26b 四IO字读取指令(上次读取时M5-4=10,仅SPI模式)
标准SPI模式下四IO字读取,连同“8/16/32/64字节回环”
在四IO字读取指令(0xE7)之前,还可以先发送“设置回环突发”(0x77)指令,从而使得本指令的读取访问,总是在一个页的指定区域之内循环 。“设置回环突发”(0x77)指令可以打开或者关闭接下来的0xE7命令的回环读功能 。当该功能打开时,访问的数据会被限制在一个256字节页中的8/16/32/64字节段落内 。读取操作从指令指定的地址开始,一旦内部自动累加的地址触及到8/16/32/64字节段落的边界,输出将会自动回到段落的起始位置,除非/CS信号拉高以终止访问 。
该功能使得使用Cache的应用程序可以快速地取得关键地址,然后将cache使用固定长度的数据(8/16/32/64)填充,无需发出多次读指令 。
“设置回环突发”指令设置3位“回环位”,W6-4 。W4位用来使能或者禁止回环访问功能,W6-5用来指定位于一个页中的回环长度 。具体可参考8.2.24节 。
8.2.13 四IO八字读取(0xE3)
四IO八字读(0xE3)指令类似于四IO快速读(0xEB)指令,区别在于传输地址的低四位(A0,A1,A2,A3)必须等于0 。作为结果,此种传输不再需要无效时钟,从而在高速随机访问或者代码XIP应用场景中降低指令开销 。在发出四IO八字读取指令之前,状态寄存器2中的QE位必须为1 。
四IO八字读取连同“连续读模式”
四IO八字读取指令可以更进一步地降低指令开销,这通过设置地址位(A23-0)之后的“连续读模式”位(M7-0)来实现,参考图27a 。高位(M7-4)通过控制下一次四IO八字读指令是否包含首个字节的指令码,从而控制下次指令的长度 。低位(M3-0)不关心 。但是,在首个传输数据位对应的时钟的下降沿到来之前,IO引脚必须为高阻态 。
如果“连续读模式”位M5-4=(1,0),则下一次四IO快速读指令(也就是本次/CS拉高之后重新拉低的指令)就不再需要0xE3指令码,参考图27b 。这样就从下一次指令序列中减少了8个周期,下一次指令不必发送指令码,直接发送地址信息 。如果“连续读模式”为M5-4不等于(1,0),则下一次指令仍然需要首个字节的指令码,从而成为普通指令操作 。建议在下次指令时在IO0上传输0xFF(8时钟周期),确保M4=1,从而使得器件进入正常操作模式 。
图27a 四IO八字读指令(初始指令,或者上次指令M5-4!=10,仅SPI模式)
图27b 四IO八字读指令(上次指令M5-4=10,仅SPI模式)
8.2.14 设置回环突发(0x77)
在标准SPI模式下,设置回环突发(0x77)指令用来和指令“四IO快速读”与“四IO字读取”指令联合使用,从而实现对一个256字节的页内访问固定长度的8/16/32/64字节段落 。合适的应用可以妥善利用此特性从而提高系统代码执行性能 。