- MICROWIRE :SPI 的简化版,少数据线、仅支持单主单从,低成本、低复杂度;
- SPI :基础同步串行标准,2/3/4 线可选,全双工 / 半双工灵活,嵌入式最通用;
- QSPI :4 线高速 SPI,在 SPI 基础上增加 2 条数据线,半双工高速,专为串行 Flash 设计;
- OctoSPI :8 线超高速 SPI,QSPI 的进一步扩展,8 条数据线,超高速半双工,高端 MCU 标配(如 STM32H7/F4),用于超高速 Flash / 外设通信。
四者同属同步串行通信体系 ,核心共性是由主设备提供 SCLK 时钟,收发双方按时钟边沿采样数据,无异步波特率误差 ,底层逻辑高度相似,差异体现在数据线数量、通信时序、硬件复杂度、速率上限上,核心逻辑关系为:
MICROWIRE → SPI(基础标准)→ QSPI(4线SPI,高速扩展)→ OctoSPI(8线SPI,超高速扩展)
核心参数对比
| 特性 | MICROWIRE | SPI(标准) | QSPI(4 线 SPI) | OctoSPI(8 线 SPI) |
|---|---|---|---|---|
| 核心信号线 | SCLK、SI、SO(3 线,无 CS) | SCLK、MOSI、MISO、NSS(4 线,全双工)可简化为 3/2 线 | SCLK、IO0~IO3、NCS(6 线,含 2 根 CS) | SCLK、IO0~IO7、NCS0~NCS1(11 线) |
| 数据传输方式 | 半双工(SI/SO 分时) | 全双工 / 半双工可选(默认全双工) | 半双工(IO0~IO3 双向) | 半双工(IO0~IO7 双向) |
| 主从模式 | 仅单主单从(无 CS) | 单主多从(通过 NSS 片选) | 单主多从(2 路 NCS) | 单主多从(2 路 NCS,支持双闪存) |
| 拓扑结构 | 点对点(唯一) | 菊花链 / 星形(主从式) | 点对点 / 星形(主从式) | 点对点 / 星形(主从式) |
| 时钟极性 / 相位 | 固定(无配置) | 可配置(CPOL/CPHA,4 种组合) | 兼容 SPI 配置,新增高速时序 | 兼容 QSPI,专属超高速时序 |
| 工业实际速率 | ≤5Mbps(MCU 主频≤80MHz) | ≤50Mbps(全双工,MCU 主频 168MHz)≤80Mbps(半双工) | ≤100Mbps(STM32)≤180Mbps(高端 MCU) | ≤400Mbps(STM32H7)≤800Mbps(超高端) |
| 数据宽度 | 8 位(固定) | 8/16 位(可配置) | 8/16/32 位(可配置) | 8/16/32 位(可配置) |
| 硬件复杂度 | 极低(MCU 简易外设) | 低(所有 MCU 标配) | 中等(中高端 MCU 标配) | 高(高端 MCU 专属,如 STM32H7/F7) |
| 核心优势 | 引脚少、成本低、时序简单 | 灵活通用、全双工、适配所有外设 | 高速、引脚少、专为串行 Flash 优化 | 超高速、大带宽、支持双闪存并行 |
| 核心劣势 | 无片选、仅单主单从、速率低 | 全双工速率低于 QSPI/OctoSPI | 仅半双工、无全双工能力 | 引脚多、硬件复杂、仅高端 MCU 支持 |
| 典型外设 | 低速传感器、简易 ADC/DAC | FLASH、传感器、显示屏、MCU 间通信、ADC/DAC | 串行 NOR Flash、SPI RAM、高速传感器 | 超高速串行 NOR/NAND Flash、高端显示屏、高速数据采集模块 |
| 主流 MCU 支持 | 51 单片机、简易 MCU | 所有 MCU(51/STM32/Arduino/ESP32) | STM32F1/F4/H7、ESP32-S3、RK3288 | STM32H7/F7/G4、NXP i.MX、瑞萨 RZ |
关键选型结论
- 低成本、单主单从、低速 :选MICROWIRE(如 51 单片机对接简易传感器);
- 通用场景、全双工 / 半双工、多从设备 :选标准 SPI(嵌入式 90% 场景的首选);
- 高速串行 Flash、中速外设、引脚有限 :选QSPI(如 STM32F4 对接 W25Q 系列 Flash);
- 超高速数据传输、高端外设、大带宽 :选OctoSPI(如 STM32H7 对接超高速 Flash、高清屏)。
MICROWIRE
MICROWIRE 是 NS(国家半导体)制定的同步串行标准,完全兼容 SPI 的核心时序 ,但做了极致简化,专为单主单从、低速、低成本 场景设计,是嵌入式中引脚最省的同步串行总线。
核心硬件特性
- 信号线 :仅 3 根,SCLK(主设备输出时钟)、SI(主入从出)、SO(主出从入) ,无片选线 NSS ,因此仅支持点对点单主单从,无法多从组网;
- 传输方式 :固定半双工,SI 和 SO 分时传输,无全双工能力,数据位固定为 8 位;
- 时序固定:时钟极性 CPOL=0、相位 CPHA=0(无配置项),主设备提供 SCLK,从设备在 SCLK 上升沿采样、下降沿发送;
- 速率限制:因硬件简易,速率通常≤5Mbps,适配 8 位低速 MCU(如 51 单片机、PIC16)。
拓扑与实操
- 唯一拓扑 :点对点直连,主设备 SCLK/SI/SO 直接接从设备对应引脚,无任何分支、无组网可能;
- 实操要点 :无需配置片选、无需设置 CPOL/CPHA,仅需主设备配置 SCLK 频率,收发双方数据位宽固定为 8 位,直接读写数据寄存器即可,软件极简;
- 典型应用:51 单片机对接低速温度传感器、简易 ADC(如 AD7811)、低成本 DAC,追求引脚省、开发快。
SPI(Serial Peripheral Interface)
SPI 是摩托罗拉制定的同步串行通信标准 ,嵌入式最通用、最灵活 的同步总线,核心优势是全双工、配置灵活、拓扑多样、适配所有外设,是除 UART 外嵌入式最常用的总线。
核心硬件特性
- 标准信号线 (4 线全双工):
- SCLK:同步时钟,主设备唯一输出,从设备输入,频率由主设备配置(通常为 MCU 主频的 1/2/4/8);
- MOSI(Master Out Slave In):主出从入,主设备发送数据;
- MISO(Master In Slave Out):主入从出,从设备发送数据;
- NSS(Slave Select):片选线,主设备输出低电平选中从设备,支持多从组网;
- 简化模式:可省略 NSS(软件模拟片选)、可将 MOSI/MISO 短接为半双工(2 线),灵活适配不同外设;
- 时序配置 :核心为CPOL(时钟极性)和CPHA(时钟相位) ,各有 2 种选择,组合为 4 种 SPI 模式,需与外设严格匹配(外设手册必标);
- CPOL=0:SCLK 空闲时为低电平;CPOL=1:空闲时为高电平;
- CPHA=0:第 1 个时钟边沿采样;CPHA=1:第 2 个时钟边沿采样;
- 传输方式 :全双工默认,MOSI 和 MISO 同时传输,可通过硬件配置为半双工(仅一根数据线)。
标准拓扑(两种,工业通用)
SPI 支持单主多从,核心拓扑为以下两种,无其他非标准拓扑:
- 星形拓扑(工业主流) :主设备的 SCLK/MOSI/MISO 为公共总线 ,所有从设备的对应引脚并联至公共总线,每个从设备独立接主设备的一根 NSS 片选线 ,主设备通过拉低对应 NSS 选中从设备,其余从设备高阻态,无总线冲突 ;
- 优势:布线简单、时序稳定、易扩展,嵌入式 99% 场景采用;
- 限制:从设备数量由主设备 NSS 引脚数决定。
- 菊花链拓扑(小众) :所有从设备串联 ,主设备→从设备 1→从设备 2→...→从设备 N,仅需一根 NSS 片选线 ,数据按顺序传输;
- 优势:节省 NSS 引脚,多从设备时引脚省;
- 劣势:速率低、数据串行传输、某一设备故障导致整个总线瘫痪,仅适用于特定场景(如多片移位寄存器)。
核心要点
- 时序匹配 :必须按外设手册配置 CPOL/CPHA,否则通信完全失败(如 W25Q 系列 Flash 为 SPI 模式 0/3);
- 片选控制 :硬件 NSS 优先(稳定),无硬件 NSS 时用 GPIO 软件模拟,片选拉低后需加短延时(≥1μs)再发送数据,避免时序偏差;
- 速率匹配 :从设备有最大 SCLK 频率限制(如传感器最大 10Mbps),主设备 SCLK 频率不可超过外设上限;
- 电平匹配:主从设备电平需一致(3.3V/5V),电平不匹配时需加电平转换芯片(如 74HC245);
- 布线规范 :板内布线 SCLK/MOSI/MISO等长等宽,长度≤20cm,远离时钟线 / 电源线,减少电磁干扰。
QSPI(Quad SPI)
QSPI 是 ST 等半导体厂商在 SPI 基础上推出的4 线高速扩展标准 ,核心是将 SPI 的 1 根发送 + 1 根接收线,扩展为 4 根双向数据线 IO0~IO3 ,牺牲全双工换取数倍速率提升 ,专为串行 NOR Flash设计(如 W25Q128JV、MX25L 系列),是中高端 MCU 的标配。
核心硬件特性
- 信号线 :6 根核心线,SCLK(时钟)、IO0~IO3(4 根双向数据线)、NCS(片选) ,部分高端 QSPI 支持 2 路 NCS(NCS0/NCS1),可接 2 个 Flash;
- IO0~IO3:替代 SPI 的 MOSI/MISO,双向半双工,指令 / 地址 / 数据均通过这 4 根线传输,比 SPI 的 2 根线速率提升 2~4 倍;
- 传输方式 :固定半双工,无全双工能力,这是为了提升速率的设计取舍(全双工需独立收发线,占用更多引脚);
- 时序模式 :兼容标准 SPI 模式 (仅用 IO0/IO1,等同于 SPI),新增4 线高速模式 (IO0~IO3 同时传输),支持指令 / 地址 / 数据的不同线宽配置(如指令 1 线、地址 4 线、数据 4 线);
- 速率优势 :因 4 线同时传输,在相同 SCLK 频率下,数据传输速率是标准 SPI 的4 倍(如 SCLK=50MHz,QSPI 速率 = 200Mbps,SPI 仅 50Mbps)。
拓扑与实操
- 标准拓扑 :点对点 (主设备→单 Flash)或双设备星形 (2 路 NCS 接 2 个 Flash),IO0~IO3/SCLK 为公共总线,片选通过 NCS0/NCS1 控制,不支持多从设备扩展(专为 Flash 设计,无需多从);
- 核心设计优化 :支持地址自动递增、连续读取、突发传输,专为 Flash 的连续数据读取优化,大幅提升 Flash 访问速度(如 STM32F4 通过 QSPI 访问 Flash,速率可达 100Mbps 以上);
- 实操要点 :
- QSPI 外设需先配置模式(SPI 模式 / 4 线模式),再配置指令 / 地址 / 数据的线宽(按 Flash 手册);
- 片选 NCS 为硬件自动控制,无需软件延时,MCU 外设自动处理时序;
- 高速下需配置时钟分频 和采样延时,匹配 Flash 的时序要求,避免数据采样错误;
- 与标准 SPI 外设完全兼容,无需重新开发驱动,仅需修改线宽配置。
OctoSPI(Octal SPI)
OctoSPI 是 QSPI 的8 线超高速扩展版本 ,由 ST 率先推出并成为行业标准,核心是将 QSPI 的 4 根数据线扩展为 8 根(IO0~IO7) ,进一步提升速率,同时支持双闪存并行 ,是高端 MCU(如 STM32H7/F7)的专属外设,用于超高速串行 Flash、高清显示屏、高速数据采集模块等大带宽场景。
核心硬件特性
- 信号线 :11 根核心线,SCLK(时钟)、IO0~IO7(8 根双向数据线)、NCS0/NCS1(2 路片选) ,支持差分时钟 SCLK/QSCLK (更高稳定性);
- IO0~IO7:双向半双工,指令 / 地址 / 数据均通过 8 根线传输,速率为 QSPI 的 2 倍、标准 SPI 的 8 倍;
- NCS0/NCS1:独立片选 2 个 Flash,支持双闪存并行访问,带宽再翻倍;
- 传输方式 :固定半双工 ,支持1/2/4/8 线宽灵活配置,兼容 SPI/QSPI 所有模式,可向下兼容;
- 速率极限 :工业实际速率可达400Mbps (STM32H7),支持DDR(双倍数据率)模式(时钟上升沿和下降沿均采样数据),速率可至 800Mbps,接近并行 Flash 的速度;
- 功能扩展 :支持内存映射模式,将串行 Flash 直接映射为 MCU 的片外内存,MCU 可像访问片内 RAM 一样访问 Flash,无需手动读写,开发效率大幅提升。
差分时钟
差分时钟是基于差分信号原理 的时钟传输方式,与单端时钟(如 TTL/CMOS 电平的单端时钟,以 GND 为参考)相对,核心通过一对互补的差分信号线传输时钟信号(如 CLK + 和 CLK-,电平反向、幅度相等),是高速、长距离、高抗干扰的时钟同步方案;
差分时钟的传输核心是检测差分线对的电压差 ,而非单端信号的对地绝对电压,基础规则:
- 差分对两路信号相位相反、幅度相同:当 CLK + 为高电平时,CLK - 为低电平;CLK + 跳变时,CLK - 同步反向跳变;
- 接收端仅识别CLK+ - CLK - 的电压差:当差值≥阈值时,判定为逻辑 1;差值≤- 阈值时,判定为逻辑 0;差值为 0 时,为中间态;
- 共模电压抑制:差分线对的两根线走等长、等距、紧密耦合 的布线(如差分走线),外界的电磁干扰会以相同的共模电压叠加在 CLK + 和 CLK - 上,接收端相减后共模干扰会被抵消,这是差分时钟最核心的抗干扰原理。
拓扑与实操
- 标准拓扑 :点对点 (主设备→单超高速 Flash)或双设备并行 (NCS0/NCS1 接 2 个 Flash,并行访问),IO0~IO7/SCLK 为公共总线,无多从设备扩展能力(专为超高速外设设计);
- 核心优势 :超高速、大带宽、内存映射模式,解决了串行 Flash 速率低的痛点,同时比并行 Flash 节省大量引脚(并行 Flash 需 16/8 根数据线,OctoSPI 仅 8 根);
- 实操要点 :
- 仅高端 MCU 支持(如 STM32H7/F7/G4),需配套支持 8 线的超高速 Flash(如 W25Q256JV-IQ、MX25UM 系列);
- 支持DDR 模式 和单端 / 差分时钟,高速下优先用差分时钟,提升抗干扰能力;
- 配置内存映射模式后,可直接通过地址指针访问 Flash,无需调用读写函数,大幅简化开发;
- 板内布线要求极高 :IO0~IO7/SCLK严格等长(误差≤5mil),长度≤10cm,做地铺铜屏蔽,避免高速下的信号反射 / 干扰。
兼容性与互转
- OctoSPI → QSPI/SPI/MICROWIRE :OctoSPI 可配置为4 线 QSPI 模式 (仅用 IO0~IO3)、2 线 SPI 模式 (仅用 IO0/IO1)、3 线 MICROWIRE 模式,完全向下兼容,软件仅需修改线宽配置;
- QSPI → SPI/MICROWIRE :QSPI 可配置为2 线 SPI 模式(IO0=MOSI、IO1=MISO),进一步简化为 MICROWIRE 模式,兼容低速外设;
- SPI → MICROWIRE :SPI 配置为模式 0(CPOL=0/CPHA=0)、8 位数据、半双工,即可直接对接 MICROWIRE 外设,信号线 SCLK→SCLK、MOSI→SO、MISO→SI;
- MICROWIRE → SPI/QSPI/OctoSPI:MICROWIRE 外设可直接接 SPI/QSPI/OctoSPI 的对应引脚,主设备配置为兼容的时序即可,无需修改外设硬件。
SPI 与 QSPI 时序核心差异
| 维度 | 标准 SPI(全双工模式) | QSPI(4 线高速模式) |
|---|---|---|
| 数据线数量 / 角色 | 2 根独立线:MOSI(主发从收)、MISO(主收从发),全双工并行传输 | 4 根双向线:IO0~IO3(替代 MOSI/MISO),半双工分时传输 |
| 传输逻辑 | 时钟每跳变一次,MOSI 和 MISO 各传输 1bit 数据(同时收发) | 时钟每跳变一次,IO0~IO3 同时传输 4bit 数据(仅收 / 仅发) |
| 速率效率 | SCLK 频率 = 实际传输速率(如 50MHz SCLK=50Mbps) | SCLK 频率 ×4 = 实际传输速率(如 50MHz SCLK=200Mbps) |
| 全双工能力 | 支持(收发同时进行) | 不支持(仅半双工,收发分时) |
| 时序兼容性 | 基础时序,无扩展 | 兼容 SPI 时序(仅用 IO0/IO1),新增 4 线高速时序 |
核心结论:相同时钟频率下,QSPI 的单向传输速率是标准 SPI 的 4 倍,代价是失去全双工能力 ------ 这是 QSPI 专为「高速读取 Flash」设计的取舍(Flash 读取远多于写入,半双工足够)。
指令阶段:SPI 固定 1 线,QSPI 可选 1/4 线
标准 SPI
- 仅支持1 线传输指令:指令通过 MOSI 线串行发送,1 个指令字节(8bit)需要 8 个 SCLK 周期;
- 时序固定:CPOL/CPHA 决定采样边沿,指令发送完成后才能传输地址 / 数据。
QSPI
- 支持1 线 / 4 线指令传输 (可配置):
- 兼容模式:仅用 IO0(等同于 SPI 的 MOSI),1 线发指令,时序与 SPI 完全一致;
- 高速模式:IO0~IO3 同时发指令,1 个指令字节仅需 2 个 SCLK 周期(4bit / 周期);
- 工业实操:多数 Flash 默认用「1 线指令 + 4 线地址 + 4 线数据」(平衡兼容性和速率)。
地址阶段:SPI 固定 1 线,QSPI 可选 1/2/4 线
标准 SPI
- 仅支持1 线传输地址:地址(如 24bit/32bit)通过 MOSI 线串行发送,24bit 地址需要 24 个 SCLK 周期;
- 无地址自动递增优化,每次读取都需重新发送完整地址。
QSPI
- 支持1/2/4 线地址传输 (按 Flash 手册配置):
- 4 线模式下,24bit 地址仅需 6 个 SCLK 周期(4bit / 周期),耗时仅为 SPI 的 1/4;
- 硬件支持地址自动递增:发送一次起始地址后,后续数据读取无需重复发地址,时钟连续,进一步提升速率。
数据阶段:SPI 全双工 1/2 线,QSPI 半双工 4 线
这是二者时序差异最大的阶段,也是 QSPI 速率优势的核心来源:
标准 SPI
- 全双工模式:MOSI 发数据、MISO 收数据,同时进行,1 个 SCLK 周期仅传输 1bit(单向);
- 半双工模式:MOSI/MISO 短接为 1 根线,1 个 SCLK 周期传输 1bit(单向),无速率提升;
- 数据读取:Flash 通过 MISO 线串行输出数据,8bit 数据需 8 个 SCLK 周期。
QSPI
- 固定半双工 4 线:IO0~IO3 双向传输,1 个 SCLK 周期同时传输 4bit 数据(单向);
- 数据读取:Flash 通过 IO0~IO3 并行输出数据,8bit 数据仅需 2 个 SCLK 周期;
- 新增「快速读取时序」:支持「dummy cycle(空周期)」配置,适配 Flash 的内部地址解码延时,无需软件插延时,硬件自动对齐时序。