Edit online

总线模式

注: 除了 SPI 标准模式和三线模式,在其他模式下,必须配置 SPI_TCFG.TXDLY_EN 位为 1,保证单线切换多线时命令或地址被正确采样。

SPI 标准模式

SPI 默认工作在标准总线模式:
  • SPI_CS 作为片选控制信号,在 SPI_CS 为低电平期间进行数据传输。
  • SPI_MOSI 作为主机时发送数据,作为从机时接收数据。
  • SPI_MISO 作为主机时接收数据,作为从机时发送数据。

标准模式时序图如下:

SPI 三线模式

SPI 三线模式仅当 SPI 工作在主机模式时有效。
  • 数据的输入和输出都使用相同的数据信号线 SPI_MOSI。
  • 通过配置寄存器 0x040 SPI_BMTC.BMOD_SEL 字段为 0x2,使用三线数据传输模式。
三线模式时序图如下:

注: 三线模式默认是以位为单位的模式传输,通过配置 0x008 SPI_TCFG.3WIRE_EN,可以支持以字节为单位的模式传输。

SPI 双路输入/ 输出模式

SPI 双路输入/ 双路输出模式是指传输通过两根信号线 SPI_MOSI 和 SPI_MISO 进行发送或接收数据, 传输速率是标准单路 SPI 模式的两倍。
  • 命令/ 地址/ 填充数据通过 MOSI 线传输,有效数据通过两根信号线同时传输。
双路输入 /输出模式时序图如下:

SPI 双路 I/O 模式

SPI 双路 I/O 模式的特点如下:
  • 地址、填充数据和有效数据都通过两根信号线进行传输,命令通过 MOSI 进行单线传输。
  • 配置寄存器 0x038 SPI_TMC.DUAL_EN 位为 1,可选择 SPI 双路 I/O 模式。
双路 IO 模式的时序图如下:

SPI 四路输入 /输出模式

SPI 四路输入输出模式是指数据通过四根信号线(MOSI/MISO/WP/HOLD)进行发送或接收,此时传输速率是标准 SPI 模式的四倍。
  • 命令/ 地址/ 填充数据通过 MOSI 单线传输,有效数据通过四根信号线同时传输。
  • 通过配置寄存器 0x038 SPI_TMC.QUAD_EN 位为 1 进行选择,
四路输入/输出模式的时序图如下:

SPI 四路 I/O 模式

SPI 四路 I/O 模式的地址信号和数据信号全都使用 4 线传输。SPI 四路 I/O 模式下:
  • Device 支持快速读模式,即只需要发送一次读命令,后续操作可以跳过读命令,在 CS 信号拉低期间,仅发送地址即可读取数据。
  • 支持带回环功能的突发读配置,支持的突发长度为 8/16/32/64 字节, 常用于 XIP 工作模式。
  • 当模式 byte 的 bit[5:4] = 2b'10 时,工作在读命令 bypass 模式, 下一笔读操作不需要发送读命令。
四路 I/O 模式时序图如下:

SPI QPI 模式

QPI 模式命令,地址和数据全部使用 4 线传输。QPI 模式不是标准的 SPI 模式,与标准 SPI 模式之间需要使用命令进行切换。QPI 模式也支持突发传输配置。时序图如下:

SPI 突发传输配置

当 SPI 工作在 Quad I/O 模式下,可以进行带回环的突发传输 (Burst With Wrap):

  • 发送突发传输配置命令 0x77 或 0xC0,配置三个 dummy 字节。
  • 配置 Mode byte 的 bit[6:4] 为相应的突发类型和突发长度。

常用于 XIP 访问模式下,CPU 进行 Cache 操作,可以提高总线的传输效率,提高代码的执行性能。当 CPU 使用 Cache,并开启预取功能,突发传输类型配置为 WRAP,突发传输长度配置为 32 个字节。

Mode Bit[6:4] 突发类型 突发长度
3b’001 Linear 取决与 Flash 容量
3b’000 WRAP 8 个字节
3b’010 WRAP 16 个字节
3b’100 WRAP 32 个字节
3b’110 WRAP 64 个字节

当 SPI 工作在 QPI 模式,突发传输配置命令与标准模式下的命令不同,增加了频率相关的 dummy 字节数量的配置。对于 QPI 模式,不同厂家的突发传输配置方式或许不同,需要参考具体厂家的芯片规格书。举例 Winbond 的 W25Q128JW 芯片定义如下:

Mode Bit[5:4] Dummy 时钟周期数 Mode Bit[1:0] WRAP 长度
2b’01 4(80MHz) 2b’01 16 个字节
2b’10 6(104MHz) 2b’10 32 个字节
2b’11 8(133MHz) 2b’11 64 个字节