Edit online

总线模式

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进行选择。双路 IO 模式的时序图如下:

SPI 四路输入输出模式

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

注: 在 Dual 和 Quad 模式下,必须配置 SPI_TCFG.TXDLY_EN 为 1,保证单线切换多线时命令或地址被正确采样。

SPI 四路I/O模式

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

SPI QPI 模式

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

SPI 突发传输配置

当 SPI 工作在Quad I/O模式下,可以进行带回环的突发传输(Burst With Wrap),通过发送配置突发传输命令, 经过三个dummy 周期,通过修改mode byte的bit[6:4]配置相应的突发类型和突发长度。该配置常用于XIP访问 模式下,CPU进行cache操作,可以提高总线的传输效率,提高代码的执行性能。当CPU使用Cache,并开启预取 功能,突发传输类型配置为WRAP,突发传输长度配置为32byte。

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 bytes 数量的配置。 对于QPI模式,不同厂家的突发传输配置方式或许不同,需要参考具体厂家的芯片规格书。举例 Winbond 的W25Q128JW 芯片定义如下:

Bit[5:4] Dummy时钟周期数 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个字节