
前言
在常用的通信协议中uart、iic和spi是经常在外设中被应用,然而在一些特殊的场景中,需要大于芯片自带内存时,工程师需要提出一个适当的解决方案来加快闪存速度,他们提出的解决方案是修改 SPI 协议以使用另外 2 条数据线并使所有 4 条数据线都是双向的,他们将其命名为 Quad-SPI,qspi是spi接口的扩展,比spi应用更加广泛。
一、qspi是什么?
1. qpis与spi的异同点
spi是一种串行接口,由sclk(时钟信号)、mosi(主出从入信号),miso(主入从出信号)和ss(片选信号)接口组成,适用于低速设备,传输的速度一般在几M左右(当然也有高速的spi通信,这里只介绍传统的spi通信)。
Quad-SPI,也称为 QSPI,是一种外设,可以在大多数现代微控制器中找到。它专为与支持此接口的闪存芯片通信而设计。它在涉及大量内存密集型数据(如多媒体)的应用中特别有用,而片上存储器是不够的。它还可以用于在外部存储代码,并且它能够通过一些特殊的机制使外部存储器的行为速度与内部存储器一样快。
它比传统 SPI 更快,因为四通道 SPI 使用 4 条数据线(I0、I1、I2 和 I3),而传统 SPI 上只有 2 条数据线(MOSI 和 MISO)。


在qspi出现之前工程师们使用并型存储器件与微控制器件进行连接实现快速访问扩展存储,使用qspi可以解决并行存储器在工程应用中的设计硬件复杂和引脚固定的问题,加快了闪存的速度,使得闪存器件的工作速度与片上的存储器相差减小。
2、通信协议介绍
qspi通过命令与存储器进行通信,每次指令、地址、交替字节、空指令和数据五个阶段,这五个阶段任一阶段均可跳过,但至少涵盖指令、地址、交替字节和数据这四个阶段之一,片选信号在每次传输嵌会被拉低,当传输完成后会被拉高,传输的时许如图4所示,读命令时序如图五所示。


在这五个阶段中:
指令阶段:将一条8位指令发送到外部SPI设备,该指令值可以在 QUADSPI_CCR[7:0] 寄存器的 INSTRUCTION 字段中进行配置, 指定待执行操作的类型。
地址阶段:将1-4字节发送到Flash,表明要操作的地址。 待发送的地址字节数通过QUADSPI_CCR[13:12]寄存器的ADSIZE[1:0]字段中进行配置。 在间接模式和自动轮询模式下,待发送的地址字节通过在QUADSPI_AR寄存器的ADDRESS[31:0]进行配置。 而在内存映射模式下,则通过 AXI直接给出地址。
交替字节阶段:将1-4字节发送到Flash,一般用于控制操作模式。 待发送的交替字节数在 QUADSPI_CCR[17:16] 寄存器的 ABSIZE[1:0] 字段中进行配置。 待发送的字节在QUADSPI_ABR 寄存器中指定。
空指令阶段:在空指令周期阶段,给定的1-31个周期内不发送或接收任何数据,目的是当采用更高的时钟频率时,给Flash留出准备数据阶段的时间。
数据阶段:数据阶段可一次发送/接收1位(在单线SPI模式中通过 SO)、2位(在双线SPI模式中通过 IO0/IO1)或4位(在四线SPI模式中通过 IO0/IO1/IO2/IO3)。 这可通过QUADSPI_CCR[15:14] 寄存器中的 ABMODE[1:0] 字段进行配置。若DMODE = 00,则跳过数据阶段, 命令序列在拉高 nCS 时立即完成。这一配置仅可用于仅间接写入模式。
3、模式
单线spi模式:即单线SPI模式,通过串行的方式发送/接收数据。
双线spi模式:通过IO0/IO1信号同时发送/接收两位。
四线spi模式:通过 IO0/IO1/IO2/IO3 信号同时发送/接收四位。
SDR模式:DDRM位 (QUADSPI_CCR[31]) 为0,QUADSPI在单倍数据速率(SDR)模式下工作。
DDR模式:若DDRM位(QUADSPI_CCR[31]) 置1,则QUADSPI在双倍数据速率 (DDR) 模式下工作。
二、xip应用
XIP 代表 eXecute In Place,它是一种允许微控制器直接从外部闪存执行代码而无需先复制代码的功能。这样可以更快、更高效地执行代码。
当代码大小太大而无法存储在片上存储器中时,我们通常会使用外部存储器,但外部存储器的问题在于访问速度非常慢。但是使用Quad-SPI模式和预取机制,外部闪存器件的数据检索速度可以与片上存储相媲美,因此不仅可以用于存储一些数据库和多媒体,还可以用于执行代码。

这通常是通过将闪存地址映射到处理器的内存空间来完成的。这会产生一种错觉,因此从处理器的角度来看,外部闪存设备上的内存只是其片上内存上的另一个位置!
三、qspi的优点
- 与并行存储器相比,引脚数更少,这意味着有更多的 GPIO 用于其他用途
- 更容易设计PCB,这是引脚数减少的直接结果,这进一步降低了总体开发成本
- 与并行存储器选项相比,可以实现更紧凑的设计
- 多个器件可以链接到单个Quad-SPI接口,相同的数据线可以连接到多个器件。要选择特定芯片,可以使用片选引脚。这是一个优势,因为如果我们使用并行存储器解决方案,我们需要为连接的每个芯片提供一组单独的数据线。
- 与 SPI 相比,可实现约 4 倍的吞吐量
- 支持通过 XIP 就地执行代码,有助于增加复杂系统的代码内存和效率
资料来源:
图四 图五
图六
nRF52840_PS_v1.0.pdf (nordicsemi.com)https://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf