1. QSPI协议基础:从SPI到QSPI的进化之路
做嵌入式设计的兄弟都知道,SPI这玩意儿太常见了。但当你需要从Flash里高速加载代码或者大量数据时,传统SPI的那条数据线就不够用了。这个时候,QSPI就站了出来。
我个人习惯把QSPI看作是SPI的「四车道」升级版。它骨子里还是SPI那套主从通讯的框架,但把数据通道从一条拓宽到了四条。说白了,就是同样的时钟频率下,数据吞吐量直接翻了四倍。
1.1 SPI协议回顾:单车道是怎么跑的?
咱们先简单回顾一下SPI。标准的SPI接口有4根信号线:
- SCLK:串行时钟,由主机产生
- MOSI:主机输出,从机输入
- MISO:主机输入,从机输出
- CS / SS:片选信号,低电平有效
它是个全双工的协议。什么意思呢?就是主机在SCLK的每个时钟周期,能从MOSI发一位出去,同时从MISO读一位回来。我以前用STM32驱动一个温湿度传感器,就是这个模式,简单又可靠。
但它的短板也很明显——数据吞吐量受限于时钟频率。你想想看,假设时钟跑100MHz,那极限吞吐也就是100Mbps。这个速度跑个简单的传感器还行,但要加载几兆字节的代码或者图像数据,那就太慢了。
1.2 QSPI与SPI的核心差异:四线并行
QSPI的全称是Quad SPI,它的关键变化就在这里:
| 特性 | 标准SPI | QSPI |
|---|---|---|
| 数据线数量 | 2条(MOSI + MISO) | 4条(IO0 ~ IO3) |
| 全双工能力 | 支持 | 不支持(半双工) |
| 最大理论吞吐 | 1 bit / clock | 4 bits / clock |
| 引脚复用 | 无 | 地址/命令阶段可用作控制 |
核心差异总结:QSPI牺牲了全双工,换来的是4倍的数据线宽度。对于Flash读写这种半双工操作(要么读要么写),这个交换非常划算。
我曾经在一个项目中,需要从Flash里实时加载H264的视频流。如果用传统SPI,主频必须拉到200MHz以上才能满足带宽,这在PCB布局上是个噩梦。换成QSPI之后,40MHz的时钟就搞定了,信号完整性问题一下少了很多。
1.3 四线数据优势:不止是快
四线并行的好处,最直观的就是速度。但除此之外,还有几个点值得提:
- 更低的时钟频率:同样的带宽需求,QSPI只需要SPI 1/4的时钟频率。低速意味着低EMI,更容易通过EMC测试。
- 更好的信号完整性:频率低了,传输线效应、串扰这些问题就少了。我在做一款工业相机时,用过200MHz的SPI,结果板子稍微长一点就眼图闭合。换成QSPI的50MHz,稳稳的。
- 引脚效率高:虽然QSPI用了4根数据线,但它复用了一部分引脚。很多QSPI Flash在命令阶段会用IO0做输入,地址阶段用IO0-IO3,真正数据传输时才变成四线模式。
个人经验:在做高速信号设计时,优先考虑降低频率而不是拼命拉高频率。QSPI给了你这个选择。我之前有个客户,非要在100MHz下用SPI读Flash,结果布完线发现过不了,最后改QSPI降到50MHz,问题全消失了。
1.4 时钟极性和相位模式:你选对了吗?
嗯,这里要注意了。无论SPI还是QSPI,时钟极性和相位(CPOL和CPHA)都决定了数据如何在时钟边沿采样。
- CPOL:时钟极性。CPOL=0表示空闲时时钟为低电平;CPOL=1表示空闲时时钟为高电平。
- CPHA:时钟相位。CPHA=0表示在时钟的第一个边沿采样;CPHA=1表示在时钟的第二个边沿采样。
组合起来就是4种模式:
| 模式 | CPOL | CPHA | 采样边沿 |
|---|---|---|---|
| Mode 0 | 0 | 0 | 上升沿 |
| Mode 1 | 0 | 1 | 下降沿 |
| Mode 2 | 1 | 0 | 下降沿 |
| Mode 3 | 1 | 1 | 上升沿 |
市面上绝大多数QSPI Flash,包括我常用的Winbond、Macronix、ISSI,默认都是Mode 0。也就是CPOL=0、CPHA=0,空闲时时钟为低,在上升沿采样数据。
避坑指南:我曾经在一个项目中,因为没仔细看Flash的数据手册,默认用了Mode 3。结果从机一直响应错误,排查了整整一天。后来发现Flash只支持Mode 0和Mode 3,而我代码里配的是Mode 1。所以,读写Flash之前,第一件事就是检查数据手册的时序图。
为什么我要强调这个?因为QSPI的时序比SPI更敏感。SPI你配错了模式,运气好还能读出数据,只是时序窗口很紧。但QSPI因为是四线同时采样,任何一根线的时序偏差都会造成整包数据错乱。我的习惯是:用示波器抓一下CLK和IO0的波形,确认采样点在哪里,再放心往下做。
上图把这一章的核心知识点串了一下。从QSPI协议基础出发,左边讲与SPI的差异,中间讲四线优势,右边讲时钟模式。到最后你会发现,无论多复杂的QSPI级联设计,都离不开这些基础概念。