一、单线 SPI 模式
传统 SPI 模式允许串行发送/接收单独的 1 位。在此模式下,数据通过 SO(IO0)信号发送到Flash。从 Flash 接收到的数据通过 SI(IO1)送达。
通过将 QSPI_CCRn 寄存器中的 IMODE/ADMODE/ABMODE/DMODE 字段设置为 01,可对不同的命令阶段分别进行配置,以使用此单个位模式。
在每个已配置为单线模式的阶段中:
※ IO0(SO)为输出模式
※ IO1(SI)为高阻输入模式)
※ IO2 为输出模式并强制置“1”(以禁止“写保护”功能)
※ IO3 为输出模式并强制置“1”(以禁止“保持”功能)
若 DMODE = 01,这对于空指令阶段也同样如此。
二、双线 SPI 模式
在双线模式下,通过 IO0 / IO1 信号同时发送/接收两位。
通过将 QSPI_CCRn 寄存器中的 IMODE/ADMODE/ABMODE/DMODE 字段设置为 10,可对不同的命令阶段分别进行配置,以使用双线 SPI 模式。
在每个已配置为双线模式的阶段中:
※ IO0/IO1 在数据阶段进行读取操作时处于高阻态(输入),在其他情况下为输出
※ IO2 处于输出模式并强制置“1”
※ IO3 处于输出模式并强制置“1”
在空指令阶段,若 DMODE = 01,则 IO0/IO1 始终保持高阻态。
三、四线 SPI 模式
在四线模式下,通过 IO0/IO1/IO2/IO3 信号同时发送/接收四位。
通过将 QSPI_CCRn 寄存器中的 IMODE/ADMODE/ABMODE/DMODE 字段设置为 11,可 对不同的命令阶段分别进行配置,以使用四线 SPI 模式。
在每个已配置为四线模式的阶段中,IO0/IO1/IO2/IO3 在数据阶段进行读取操作时均处于高阻态(输入),在其他情况下为输出。
在空指令阶段中,若 DMODE = 11,则 IO0/IO1/IO2/IO3 均为高阻态。
I02 和 I03 仅用于 QSPI 模式如果未配置任何阶段使用四线 SPI 模式,即使 QSPI 激活,对应 IO2和 I03 的引脚也可用于其他功能。
四、SDR 模式
默认情况下,QSPI 在单倍数据速率(SDR)模式下工作。
在 SDR 模式下,当 QSPI 驱动 IO0/SO、IO1、IO2、IO3 信号时,这些信号仅在 CLK 的下降沿发生转变。
在 SDR 模式下接收数据时,QSPI 假定 Flash 也通过 CLK 的下降沿发送数据。默认情 况下(SSHIFT = 0 时),将使用 CLK 后续的边沿(上升沿)对信号进行采样。