总线模式
4 Sep 2024
Read time: 3 minute(s)
总线模式包含以下类型:
注: 除了 SPI 标准模式和三线模式,在其他模式下,必须配置 SPI_TCFG.TXDLY_EN 位为
1,保证单线切换多线时命令或地址被正确采样。
SPI 标准模式
SPI 标准模式,是 SPI 默认的标准总线模式,使用以下信号线实现通信:
- SPI_CS:片选控制信号,在 SPI_CS 为低电平期间进行数据传输。
- SPI_CLK:时钟线。
- SPI_MOSI:作为主机时发送数据,作为从机时接收数据。
- SPI_MISO:作为主机时接收数据,作为从机时发送数据。
标准模式时序图如下:
注: SPI 标准模式支持全双工,在发送数据的同时可以接收数据。
SPI 三线模式
SPI 三线模式是标准模式的变体,仅当 SPI 工作在主机模式时有效。SPI 三线模式使用以下信号线实现通信:
- SPI_CS:片选控制信号,在 SPI_CS 为低电平期间进行数据传输。
- SPI_CLK:时钟线。
- SPI_MOSI:数据的输入和输出的数据信号线 。
三线模式时序图如下:
通过配置寄存器 0x040 SPI_BMTC.BMOD_SEL 字段为 0x2,使用三线数据传输模式。
注: SPI 三线模式默认是以位为单位的模式传输,通过配置 0x008 SPI_TCFG.3WIRE_EN,可以支持以字节为单位的模式传输。
SPI 双路输入/ 输出模式
SPI 双路输入/ 双路输出模式是指通过两根信号线 SPI_MOSI 和 SPI_MISO 进行发送或接收数据, 传输速率是标准单路 SPI 模式的两倍。
- SPI_CS:片选控制信号,在 SPI_CS 为低电平期间进行数据传输。
- SPI_CLK:时钟线。
- SPI_MOSI 和 SPI_MISO:命令/ 地址/ 填充数据通过 MOSI 线传输,有效数据通过 SPI_MOSI 和 SPI_MISO 两根信号线同时传输。
- 配置寄存器 0x038 SPI_TMC.DUAL_EN 位为 1,可选择 SPI 双路模式。
SPI 双路 I/O 模式
SPI 双路 I/O 模式的特点如下:
- 地址、填充数据和有效数据都通过两根信号线进行传输,命令通过 MOSI 进行单线传输。
- 配置寄存器 0x038 SPI_TMC.DUAL_EN 位为 1,可选择 SPI 双路 I/O 模式。
SPI 四路输入 /输出模式
SPI 四路输入输出模式是指通过四根信号线(MOSI/ MISO/ WP/ HOLD)进行发送或接收数据,此时传输速率是标准 SPI 模式的四倍。
- 命令/ 地址/ 填充数据通过 MOSI 单线传输,有效数据通过四根信号线同时传输。
- 通过配置寄存器 0x038 SPI_TMC.QUAD_EN 位为 1 进行选择,
SPI 四路 I/O 模式
SPI 四路 I/O 模式的地址和数据信号全都使用 4 线传输。SPI 四路 I/O 模式下:
- 串行 Flash 设备支持快速读模式,即只需要发送一次读命令,后续操作可以跳过读命令,在 CS 信号拉低期间,仅发送地址即可读取数据。
- 支持带回环功能的突发读配置,支持的突发长度为 8/ 16/ 32/ 64 字节, 常用于 XIP 模式。
- 当 Mode 字节的 bit[5:4] = 2b'10 时,工作在读命令 bypass 模式, 即下一笔读操作不需要发送读命令。
SPI QPI 模式
QPI 模式命令、地址和数据全部使用 4 线传输。QPI 模式不是标准的 SPI 模式,与标准 SPI 模式之间需要使用命令进行切换。QPI 模式也支持突发传输配置。时序图如下:
SPI 突发传输配置
当 SPI 工作在 Quad I/O 模式下,串行 Flash 设备支持带回环的突发传输 (Burst With Wrap):
- 发送突发传输配置命令 0x77 或 0xC0,配置三个 dummy 字节。
- 配置 Mode 字节的 bit[6:4] 为相应的突发类型和突发长度。
常用于 XIP 访问模式下,CPU 进行 Cache 操作,可以提高总线的传输效率,提高代码的执行性能。当 CPU 使用 Cache,并开启预取功能,突发传输类型配置为 WRAP,突发传输长度配置为 32 个字节。
在 XIP 模式下,配置 SPI_BTR.WRAP_EN 位为 1,使能回环模式,控制器在发送第一笔接收命令之前,会自动根据 SPI_BTR 寄存器的配置,自动发送突发传输配置命令。
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 个字节 |