只读分享解决方案文档调试&解决方案📅 2026-09-21🔖 Rev 1.0⏳ 29天有效(至 2026-10-31)
🔧解决方案&应用市场分析 -> 调试&解决方案 -> 系统设计指南 -> SPI_四种工作模式_技术报告

SPI_四种工作模式_技术报告

生成时间 2026-09-28 13:34:43 有效期至 2026-10-31 23:59:59(29天有效(至 2026-10-31))

SPI 四种工作模式(Mode 0 / 1 / 2 / 3)

时钟极性 CPOL 与时钟相位 CPHA 的原理、时序、差异与设计应用指南 | 编制日期 2026-09-21 | 版本号 Rev 1.0

4
种工作模式
Mode 0 / 1 / 2 / 3
2 bit
模式控制位
CPOL 极性 + CPHA 相位
边沿
数据采样方式
首沿 / 次沿触发
必须
主从模式一致
否则采样错位
本文解决什么SPI 没有官方统一标准,模式由 CPOL(时钟极性) 与 CPHA(时钟相位) 两个比特决定。本文用波形图把四种模式的差异讲清楚,并给出选型、配置,以及多从机与调试时的设计注意,避免「主从模式不匹配导致整帧数据错位」这类高频问题。
一句话结论Mode 0 与 Mode 3 都在 SCLK 上升沿采样,Mode 1 与 Mode 2 都在下降沿采样;四者的差异只在时钟空闲电平。主从两端必须把 CPOL/CPHA 设成同一组,否则采样边沿差半个时钟周期,数据整体偏移。

1 SPI 总线基础

先搞清楚 SPI 的物理信号与拓扑,后面的「模式」才有依附对象。

SPI(Serial Peripheral Interface)是一种同步、全双工的串行总线,由 Motorola 在 MC68HC11 上首次定义,之后被广泛采纳但始终没有统一的官方标准文档,因此不同厂商对时钟极性/相位的约定出现了分歧——这就是「四种模式」的由来。

1.1 四根信号线

信号方向含义
SCLK / SCK主 → 从串行时钟,由主机产生,决定数据移位节拍
MOSI / SDO主 → 从主机输出、从机输入(Master Out Slave In)
MISO / SDI从 → 主主机输入、从机输出(Master In Slave Out)
CS / SS主 → 从片选(Chip Select / Slave Select),低有效最常见

1.2 主从拓扑

  • 一主多从:多个从机共用 SCLK / MOSI / MISO,每个从机用独立的 CS 选通;同一时刻仅一个 CS 有效,被选中者才响应总线。
  • 全双工:主从在每一时钟沿同时移位,MOSI 与 MISO 各传各的数据,互不依赖。
  • 速率无标准上限:由器件性能与布线决定,常见几 MHz 至几十 MHz;具体以从机 datasheet 的 fSCK(max) 为准。
为什么需要「模式」SPI 并未规定 SCLK 空闲时是高还是低、数据在哪一个时钟边沿被采样。各芯片厂自行选择,于是出现 4 种组合。两端只要约定一致就能通信——关键在于「约定」必须被显式配置,而不是靠默认。
主器件 MCUSPI 控制器SCLK / MOSI / MISO / CS从机 1SPI NOR Flash从机 2传感器 / ADCSCLKMOSIMISOCS0CS1SCLK / MOSI / MISO 为多从共享总线;CS 为每个从机独立片选,同一时刻仅一个 CS 有效。
图 1 · SPI 主从总线拓扑(一主多从)

来源:自绘,依据 Motorola SPI 规范信号定义

2 决定模式的兩个比特:CPOL 与 CPHA

两个比特决定全部差异:CPOL 管时钟空闲电平,CPHA 管数据采样落在第几个边沿。

2.1 定义

比特全称取值含义
CPOLClock Polarity0SCLK 空闲(CS 无效)时为低电平
CPOLClock Polarity1SCLK 空闲(CS 无效)时为高电平
CPHAClock Phase0在第一个时钟边沿(首沿)采样数据
CPHAClock Phase1在第二个时钟边沿(次沿)采样数据

所谓「第一个边沿」,是时钟从空闲态翻出去的那一跳;「第二个边沿」是同一时钟周期内回跳的那一跳。CPOL=0 时首沿是上升沿、次沿是下降沿;CPOL=1 时正好相反。

2.2 组合出四种模式

CPOL 与 CPHA 各 2 种取值,组合成 4 种工作模式,编号约定如下:

模式CPOLCPHA时钟空闲采样边沿
Mode 000低上升沿(首沿)
Mode 101低下降沿(次沿)
Mode 210高下降沿(首沿)
Mode 311高上升沿(次沿)
易混点CPHA=0 不等于「上升沿采样」。采样边沿究竟是上升还是下降,取决于 CPOL 决定的空闲电平——必须两者结合判断(见第 4 章对比表)。记住「Mode 0/3 采样上升沿、Mode 1/2 采样下降沿」最实用。
CPOL = 0:时钟空闲为低①首沿②次沿CPOL = 1:时钟空闲为高①首沿②次沿CPHA = 0 → 在「① 首沿」采样数据; CPHA = 1 → 在「② 次沿」采样数据
图 2 · CPOL 与 CPHA 概念:空闲电平与采样边沿

来源:自绘

3 四模式逐一详解与波形

逐模式说明其波形特征;最关键的规律是「Mode 0 ≡ Mode 3、Mode 1 ≡ Mode 2」。

3.1 Mode 0(CPOL=0, CPHA=0)

时钟空闲为低;在第一个时钟边沿(上升沿)采样数据,数据在随后的第二个边沿(下降沿)切换。这是最常用的模式,大量 SPI Flash、传感器默认采用。

3.2 Mode 1(CPOL=0, CPHA=1)

时钟空闲同样为低;在第二个时钟边沿(下降沿)采样数据,数据在第一个边沿(上升沿)切换。部分 ADC、MCU 外设使用此模式。

3.3 Mode 2(CPOL=1, CPHA=0)

时钟空闲为高;在第一个时钟边沿(下降沿)采样数据,数据在第二个边沿(上升沿)切换。部分存储器、显示驱动采用。

3.4 Mode 3(CPOL=1, CPHA=1)

时钟空闲为高;在第二个时钟边沿(上升沿)采样数据,数据在第一个边沿(下降沿)切换。与 Mode 0 同样是上升沿采样,仅时钟空闲电平不同。

Mode 0 ≡ Mode 3、Mode 1 ≡ Mode 2只要从机是在 SCLK 上升沿采样,Mode 0 与 Mode 3 对它完全等价(器件标注「支持 Mode 0/3」即此意);下降沿采样的从机则 Mode 1 与 Mode 2 等价。很多 SPI 存储器因此可同时兼容两种模式,主机选空闲低(Mode 0)最稳妥——可避免上电时 SCLK 悬空产生毛刺误触发。
Mode 0 · CPOL=0 / CPHA=0 · 空闲低SCLKMOSIb0=1b1=0b2=1b3=1采样:上升沿(首沿) | 数据变化:下降沿(次沿)Mode 1 · CPOL=0 / CPHA=1 · 空闲低SCLKMOSIb0=1b1=0b2=1b3=1采样:下降沿(次沿) | 数据变化:上升沿(首沿)Mode 2 · CPOL=1 / CPHA=0 · 空闲高SCLKMOSIb0=1b1=0b2=1b3=1采样:下降沿(首沿) | 数据变化:上升沿(次沿)Mode 3 · CPOL=1 / CPHA=1 · 空闲高SCLKMOSIb0=1b1=0b2=1b3=1采样:上升沿(次沿) | 数据变化:下降沿(首沿)采样点(在采样边沿锁存数据)数据变化点(在另一时钟沿切换)虚线 = 采样边沿
图 3 · SPI 四模式时钟与数据波形对照(MOSI 数据,MISO 同相位)

来源:自绘,依据 Motorola SPI 规范

4 四模式速查对比表

把四种模式的全部差异压进一张表,配置前对照即可。

模式CPOLCPHA时钟空闲采样边沿数据切换边沿等效典型应用
Mode 000低上升沿(首沿)下降沿(次沿)Mode 3最常用:SPI Flash、传感器
Mode 101低下降沿(次沿)上升沿(首沿)Mode 2部分 ADC、MCU 外设
Mode 210高下降沿(首沿)上升沿(次沿)Mode 1部分存储器、显示驱动
Mode 311高上升沿(次沿)下降沿(首沿)Mode 0常见:SD 卡、SPI Flash 另一档
记忆口诀空闲低 + 首沿采样 = Mode 0;空闲低 + 次沿采样 = Mode 1;空闲高 + 首沿采样 = Mode 2;空闲高 + 次沿采样 = Mode 3。再记「0/3 升、1/2 降」即可秒判采样边沿。

5 设计应用注意

模式不匹配是 SPI 现场最高频的通信故障。下面按配置与布线层面给出注意点。

  1. 主从模式必须一致。两端 CPOL/CPHA 取同一组;否则采样边沿错开半个周期,整帧数据偏移(见第 4 图)。
  2. 查从机模式。看 datasheet 的「SPI Mode / CPOL, CPHA」字段;常见写「Mode 0, 3 supported」,即上升沿采样、两种空闲均可。
  3. 优先选 Mode 0(空闲低)。上电与未选通时 SCLK 默认低,最不易产生毛刺误触发;Mode 3 仅在从机不支持 Mode 0 时考虑。
  4. 上电时序。CS 默认拉高(无效),SCLK 处于正确空闲电平后再拉低 CS 启动;避免 MCU 复位后 SCLK 浮空产生假边沿。
  5. 时钟速率。不超过从机 fSCK(max);高速时注意建立/保持时间 tSU / tHD,必要时降频。
  6. 多从机不同模式。各从机独立 CS;切换从机先拉高旧 CS,再改 SPI 模式(若各从机模式不同),最后拉低新 CS。尽量统一从机模式。
  7. CS 建立/保持。满足 tSU(CS)、tHD(CS);CS 无效期间 SCLK 可自由翻转,数据线不被误锁存。
  8. 半双工/三线器件。部分 LCD、触摸屏只用一根双向数据线(DQ),需把硬件 SPI 配成半双工或单线,别当全双工。
  9. GPIO 模拟(bit-banging)。明确「在哪个边沿采样/驱动」,软件延时须满足 tSU / tHD,速率受限且 CPU 占用高。
  10. 硬件 SPI 配置。如 STM32 的 SPI_CR1 含 CPOL/CPHA 位;注意 MCU 复位默认常是 Mode 0,要显式改写。
  11. MSB/LSB 顺序。与模式无关但常被混淆,按器件设帧格式(多数 SPI 存储器为 MSB first)。
  12. 调试手段。逻辑分析仪以 CS 触发抓 SCLK + MOSI,对照第 3 图确认当前模式;检查采样边沿处数据是否稳定(不处于跳变中)。
硬件风险不要在通信中途翻转 CPOL/CPHA。改模式前务必先拉高 CS 让总线回到空闲态,否则会在数据线上产生非法边沿,可能锁死从机状态机或读写出错。涉及电压/方向切换的操作,请以器件 datasheet 为准。
SCLKMOSI✓ Mode 0 / Mode 3 从机:在上升沿(首沿)采样,与数据有效窗口对齐✗ 若从机误设为 Mode 2(下降沿采样):采样点落在数据切换处,整帧偏移主从 CPOL/CPHA 不一致 → 采样边沿错开半个时钟周期 → 数据整体偏移 / 错位
图 4 · 主从模式不匹配导致的采样错位(以 Mode 0 主机 vs Mode 2 从机为例)

来源:自绘

6 常见故障排查速查表

现象 → 原因 → 处置,调试时直接翻查。

现象最可能原因处置
读到全 0xFF / 全 0x00模式不匹配 / CS 未拉低 / 器件未选中核对 CPOL/CPHA;确认 CS 有效电平与建立时间
数据整体偏移 1 个 bitCPHA 设错(采样边沿差半个周期)切换 CPHA 再试
偶发误码速率过高 / 建立保持不足 / 信号反射降频;检查走线、端接、上拉
上电即误触发空闲电平不符(CPOL 错)配置正确空闲极性;CS 默认拉高
多从机互相干扰CS 冲突 / 切换从机未复位模式独立 CS;切换从机先拉高旧 CS 再配置
只发不收 / 只收不发半双工器件误按全双工确认数据线定义(是否 3 线/双线)

7 选型与配置建议

常见器件类型的默认模式一览;最终以正式 datasheet 为准。

器件类型常见默认模式说明
SPI NOR / NAND Flash(含 XTX 等)Mode 0 / 3多为上升沿采样,兼容两种空闲电平
SD 卡(SPI 模式)Mode 0规范固定 Mode 0
惯性/环境传感器(IMU、温湿度)Mode 0 / 3上升沿采样为主
触摸屏 / 显示驱动Mode 0 / 3部分支持 Mode 0/3 自选
部分 ADC / DACMode 0 或 1以器件 datasheet 为准
I2C/SPI 复用器件看寄存器配置常由配置位选择模式
老式 EEPROMMode 0单模式常见
工程建议新项目主从都选 Mode 0 起步;若从机标「Mode 0/3 supported」则 Mode 0 与 Mode 3 任选,建议 Mode 0(空闲低更安全)。只有当从机硬性只支持某一种时,才去迁就它。

8 上线前核查清单

量产前逐条确认,避免批次性通信失败。

  • 确认每个从机 datasheet 标注的 SPI Mode / CPOL / CPHA
  • 主机 SPI 控制器配置与从机一致
  • 多从机模式不同时,已规划 CS 切换与模式重配置顺序
  • CS 默认无效电平正确(通常高),上电 SCLK 处于正确空闲电平
  • 时钟频率 ≤ 从机 fSCK(max),并留建立/保持余量
  • 满足 tSU(CS) / tHD(CS)
  • 确认是双线全双工还是单线/三线半双工
  • 帧格式 MSB/LSB 与从机一致
  • 用逻辑分析仪以 CS 触发抓取,对照波形确认采样边沿

附录 术语表与参考来源

术语表

术语含义
CPOLClock Polarity,时钟极性:SCLK 空闲电平(0=低,1=高)
CPHAClock Phase,时钟相位:数据采样落在第几个边沿(0=首沿,1=次沿)
SCLK / SCK串行时钟线,主机输出
MOSI / SDO主机输出、从机输入数据线
MISO / SDI主机输入、从机输出数据线
CS / SS片选 / 从机选择,低有效最常见
首沿 / 次沿CPOL=0 时分别为上升/下降沿;CPOL=1 时相反
t_SU / t_HD建立时间 / 保持时间,数据在采样边沿前后需稳定的最小窗口

参考来源

  • Motorola《SPI Block Guide》(MC68HC11 应用笔记,SPI 模式定义的源头)。
  • 各 MCU 参考手册中 SPI 控制器章节(如 SPI_CR1 的 CPOL / CPHA 位域)。
  • 存储器 / 传感器器件 datasheet 的「SPI Interface / Operating Modes」章节。
说明本文波形与结论依据通用 SPI 规范整理,属工程经验总结,非任何厂商的官方结论;具体器件的极性、相位、时序参数一律以正式 datasheet 为准。