SPI协议四种模式与时序参数详解¶
难度:🟡 中级 | 领域:板级总线 | 关键词:SPI, CPOL, CPHA, Mode 0–3 | 阅读时间:约 16 分钟
日常类比¶
分拣中心传送带按节拍转(时钟 SCLK),包裹上下(MOSI/MISO),被点名的分拣员才动手(片选 CS)。串行外设接口(Serial Peripheral Interface, SPI)用这组线做高速同步传输[1][2]。
摘要¶
讲清时钟极性(CPOL)与相位(CPHA)定义的四种模式、片选与多从机、时序裕量与 DMA。器件“Mode 0/3”标注以数据手册时序图为准,名称偶有混用[2]。
1. 信号与模式¶
| 信号 | 角色 |
|---|---|
| SCLK | 主机产生时钟 |
| MOSI | 主机→从机 |
| MISO | 从机→主机 |
| CS/SS | 从机选择,通常低有效 |
| 模式 | CPOL | CPHA | 常见用途倾向 |
|---|---|---|---|
| 0 | 0 | 0 | 很多传感器默认 |
| 1 | 0 | 1 | 部分器件 |
| 2 | 1 | 0 | 较少 |
| 3 | 1 | 1 | Flash 等常见 |
CPOL=空闲电平;CPHA=采样边沿相对(第一/第二边沿)——务必对照波形,不要只背数字[1]。
2. 时序与系统¶
关注 t_SU/t_H、CS 建立/保持、最大频率与布线电容。多从机独立 CS;避免从机 MISO 冲突。长线降频或加串阻[3]。
| 技术 | 作用 |
|---|---|
| DMA | 卸载 CPU,维持吞吐 |
| 双缓冲 | 连续传输 |
| QSPI/OSPI | 多数据线加速 Flash |
| 模式故障检测 | 主机配置错误保护(视 MCU) |
3. 与 I²C 快对照¶
| 维度 | SPI | I²C |
|---|---|---|
| 速率 | 常更高 | 较低 |
| 线数 | 4+CS | 2 |
| 地址 | CS 硬件选 | 地址字节 |
| 上拉 | 非必须 | 必须 |
4. 局限、挑战与可改进方向¶
1. 模式配错静默失败¶
局限:通信“通”但数据移位错。 改进:逻辑分析仪对手册波形;从低速验证[2][4]。
2. CS 软件抖动¶
局限:位 bang CS 破坏建立时间。 改进:用硬件 NSS 或 GPIO+精确时序,DMA 期间保持 CS[3]。
3. 多从机电容负载¶
局限:时钟边沿变缓致采样失败。 改进:降频、缓冲、短星型布线[3]。
4. 与低功耗冲突¶
局限:高速时钟增加动态功耗。 改进:按需提频;传完门控 SPI 时钟[5]。
总结¶
SPI 的坑多半在模式与时序而非“会不会发字节”。先对齐 Mode 与 CS 时序,再用 DMA/QSPI 要吞吐。
参考文献¶
[1] Motorola/Freescale SPI 经典规范描述与后续 MCU 手册. [2] 各传感器/Flash 数据手册 SPI 时序图. [3] 高速 SPI 布线与信号完整性应用笔记. [4] 逻辑分析仪解码 SPI 实践. [5] MCU 低功耗下外设时钟门控文档. [6] STM32 SPI HAL/LL 应用笔记. [7] Quad-SPI / XIP 设计指南. [8] I2C vs SPI 选型文章. [9] DMA 与 SPI 连续传输示例. [10] 多从机总线拓扑建议. [11] 建立保持时间裕量计算方法. [12] 工业环境 SPI 隔离与电平转换注意.