SPI 技术系列 00· 总目录

发布时间:2026/10/15 16:44:53
SPI 技术系列 00· 总目录 I2C 技术系列 · 持续更新中本系列从推挽电气层一路打到 Linux spi 子系统,把四根线背后的电气/协议/控制器/驱动/实战全拧成一根线。 想系统追更戳这里查看完整专栏【SPI 技术系列】 其他技术系列专栏欢迎关注、交流、共同成长【I2C 技术系列】 【串口技术系列】【RISC-V 架构系列】【Linux内核系列】一句话:SPI 是四根线(MOSI/MISO/SCK/CS)主打高速主从的串行总线。没有 I2C 那套 OD 开漏/仲裁/地址的负担,换来几十 Mbps 的吞吐——Flash、显示屏、高速 ADC 全靠它。本系列像 串口技术系列、 I2C 技术系列那样,从推挽电气层一路打到 Linux spi 子系统,把四根线背后的电气/协议/控制器/驱动/实战全拧成一根线。为什么单独成系列SPI 表面简单——主发时钟,移位收发。但工程坑在高频信号完整性(几十 MHz 上升沿陡,SCL 分布/反射/串扰都冒出来)、CPOL/CPHA 模式错配(四模式,器件手册写法不统一)、多从片选与菊花链(走线拓扑)、QSPI/Octal-SPI(现代 SoC 高吞吐路径)。本系列对标串口/I2C 系列,把电气 → 协议 → 控制器 → 驱动 → 实战五层打通,让你拿到任何 SPI 问题都能定位到具体哪一层。目录一、系列总图二、四层结构第一部分 · 硬件基础层(电气 / 物理)01 SPI 电气特性与物理层02 SPI 信号完整性与时钟分布03 SPI 速度与电气约束第二部分 · 协议与时序层(四根线怎么说话)04 SPI 协议与时序详解(CPOL/CPHA)05 SPI 片选与多从机制06 SPI 数据帧与位序07 双线 / 四线 / 八线(QSPI / Octal-SPI)第三部分 · 驱动实现层(控制器与软件)08 SPI 控制器寄存器与 IP 架构09 SPI 传输模式:轮询 / 中断 / DMA10 SPI 错误处理与恢复11 SPI Linux 驱动框架第四部分 · 应用实战层(落地与排查)12 SPI 设备驱动实战13 SPI 调试与排查14 SPI 排查手册与速查表三、快速索引按问题类型按应用场景四、学习建议对照学习法相关资源一、系列总图L1 硬件基础层 — 电气与物理01 电气特性 / 02 信号完整性与时钟分布 / 03 速度与电气约束L2 协议与时序层 — 四根线怎么说话04 协议时序与CPOL-CPHA / 05 片选与多从机制 / 06 数据帧与位序 / 07 双线四线八线 QSPI-OctalL3 驱动实现层 — 控制器与软件08 控制器寄存器与IP架构 / 09 传输模式-轮询-中断-DMA / 10 错误处理与恢复 / 11 Linux驱动框架L4 应用实战层 — 落地与排查12 设备驱动实战 / 13 调试排查 / 14 排查手册速查二、四层结构第一部分 · 硬件基础层(电气 / 物理)01 SPI 电气特性与物理层推挽(Push-Pull)输出结构(对比 I2C OD 开漏)四线制(MOSI/MISO/SCK/CS)与三线制(无 CS 或双向 DIO)CMOS 电平标准(VIL/VIH/VOL/VOH 容限)驱动能力与扇出(推挽强驱动 vs OD 弱上拉)多电压域电平转换(SPI 专用 TXS/LSF 系列)关键问题:为什么 SPI 能跑几十 MHz 而 I2C 只能几 MHz?推挽 vs 开漏的本质差异。02 SPI 信号完整性与时钟分布高频 SI 判据(SPI 频率高,边沿陡,传输线效应常需考虑)SCK 时钟分布与偏斜(Clock Distribution/Skew,多从时 SCK 到各从时延)临界长度 L_crit ≈ tr × 2.9cm(SPI 几十 MHz 常超临界)反射与终端匹配(源端串联匹配 RS22~33Ω)串扰(SCK ↔ MOSI/MISO,3W 规则与分层)拓扑(星型 vs 菊花链 vs 独立 CS)关键问题:30MHz SPI 走线 15cm,要不要做阻抗匹配?03 SPI 速度与电气约束SPI 频率上限的来源(驱动能力 走线 负载电容 边沿)SCK 周期与移位寄存器建立/保持约束不同模式下 tSU/tHD 要求(数据相对 SCK 采样沿)时钟失真(Jitter/Skew)对高速 SPI 的影响SoC SPI 控制器最高频率 vs 实际可达关键问题:器件标 50MHz,SPI 能不能配 50MHz 跑?第二部分 · 协议与时序层(四根线怎么说话)04 SPI 协议与时序详解(CPOL/CPHA)SPI 移位寄存器原理(主从各一个,首尾相接成环)CPOL(时钟极性):空闲电平 0 还是 1CPHA(时钟相位):第一个沿还是第二个沿采样四模式(Mode 0/1/2/3)对照表与波形MSB first / LSB first(多数 MSB)数据位宽(8/16/32,可配)完整传输时序(CS 拉低 → SCK 跳变 → 移位 → CS 拉高)关键问题:器件手册写 “Mode 0 (CPOL0, CPHA0)”,代码怎么配?05 SPI 片选与多从机制CS 片选的作用(选中从机,使能其 MISO 输出)独立 CS 多从(一主多从,各从独立 CS,星型走线)菊花链多从(Daisy Chain,数据串行穿过各从,共享 CS)菊花链 vs 独立 CS 的取舍(数据流 vs 寻址,延迟 vs 复杂)广播(所有 CS 拉低,同一 MOSI 发,各从同时收)CS 与 I2C 地址的对比(显式寻址 vs 隐式片选)关键问题:菊花链 3 个从机,主发 24 位,各从收到什么?06 SPI 数据帧与位序位序 MSB/LSB 配置字长可配(4~32 位,部分 IP 支持)连续传输 vs 间隔传输(SCK 连续 vs 帧间间隔)CS 拉低到首沿、末沿到 CS 拉高的建立/保持时间多字节 burst 传输(一次 CS 传多字节,Flash 读取常见)命令地址数据帧(Flash 类器件的 SPI 协议层)关键问题:Flash 读 0x03 命令 24bit 地址 N 字节数据,怎么拼?07 双线 / 四线 / 八线(QSPI / Octal-SPI)标准 SPI(1bit: MOSIMISO)Dual-SPI(2bit: DQ0/DQ1 双向,半双工 2 倍速)Quad-SPI(4bit: DQ0~DQ3,4 倍速,Flash 主流)Octal-SPI(8bit: DQ0~DQ7,8 倍速,新 Flash/OSPI)QSPI 协议扩展(指令阶段/地址阶段/数据阶段位宽可配)XIP(Execute In Place,QSPI 直接取指执行)DDR 模式(SCK 上下沿都采样)关键问题:QSPI 怎么实现 4 倍速?XIP 怎么直接执行 Flash 代码?第三部分 · 驱动实现层(控制器与软件)08 SPI 控制器寄存器与 IP 架构控制器 IP 总框图(寄存器组 移位寄存器 分频器 FIFO DMA)核心模块:分频器 / 移位寄存器 / CS 控制 / 中断 DMA主模式状态机(IDLE → CS → SCK 移位 → 完成)通用寄存器组(CON/STAT/DAT/BAUD/CS/INTEN)STM32 SPI 寄存器(CR1/CR2/SR/DR/I2SCFGR)DesignWare SPI 寄存器(SPI_CTRLR0/SPI_CTRLR1/SPI_DR/SPI_SR)RISC-V SoC SPI 差异(芯来/Andes 平台常用 DW 或自研)QSPI 控制器特殊寄存器(指令/地址/数据位宽,DDR 配置)关键问题:配 QSPI 读 Flash,寄存器怎么设?09 SPI 传输模式:轮询 / 中断 / DMA三种模式总览轮询 PIO(写 DR 死等 TXE,读 DR 等 RXNE)中断驱动(TXE/RXNE 中断 状态机)DMA 模式(大块传输,Flash 读取/显示屏刷)DMA 双向难题(同时 TX DMA RX DMA)cache 一致性QSPI DMA 与 XIP关键问题:SPI 读 Flash 4KB,用中断还是 DMA?10 SPI 错误处理与恢复OVERRUN(溢出,CPU 没及时读 DR,数据覆盖)UNDERRUN(欠载,从模式 CPU 没及时填 DR,SCK 空转)MODE_FAULT(主模式错,主机的 CS 被外部拉低)CRC 错(部分 IP 带 CRC,如 STM32 I2S/SPI4)CS 抖动(EMI 导致 CS 误触发)时钟失稳(PLL 切换瞬间 SCK 错乱)超时与恢复(重传 重新初始化)功能安全考量(SPI 通信的端到端保护)关键问题:SPI OVERRUN 怎么检测和恢复?11 SPI Linux 驱动框架Linux SPI 子系统总图(spi_controller/spi_device/spi_driver/spi_transfer/spi_message)四大核心对象(controller/device/driver/transfer)spi_controller spi_bitbang(控制器驱动骨架)spi_driver spi_device(设备驱动骨架,Flash/传感器)spi_message spi_transfer(传输组织,一组 transfer 原子执行)设备树(spi 节点 子节点 regCS 号 compatible)spidev 用户态接口(/dev/spidevN.M ioctl)QSPI/Octal-SPI 在 Linux 下的支持(m25p80/spi-nor/spi-mem)关键问题:Linux 下怎么从用户态读写 SPI Flash?第四部分 · 应用实战层(落地与排查)12 SPI 设备驱动实战W25Q SPI Flash 读写驱动(命令帧/页编程/扇区擦除/读 ID)SD 卡 SPI 模式驱动(SD 协议 SPI 封装)OLED ILI9341 显示驱动(命令数据,刷屏 DMA)高速 ADC(MAX6675/MCP3008)采集传感器(LIS3DH 加速度计)寄存器配置QSPI Flash XIP 启动(固件执行)多设备共 SPI 总线(CS 切换 速率/模式动态配)RTOS 集成与互斥关键问题:SPI Flash 读写 XIP,怎么组织驱动?13 SPI 调试与排查逻辑分析仪解码 SPI(四模式/位序/字长)示波器看 SCK/MOSI/MISO/CS 波形CPOL/CPHA 错配现象(数据全错或全 0)CS 时序问题(建立/保持时间不够)速度过高降速测试spidev 自写工具验证dmesg / ftrace / debugfs关键问题:SPI 读 Flash 全 0xFF,从哪查起?14 SPI 排查手册与速查表故障决策树(不通 → 看电气 → 看 CPOL/CPHA → 看时序 → 看恢复)常见故障速查表CPOL/CPHA 四模式速查QSPI/Octal-SPI 速查器件命令帧速查(Flash/SD/ADC)全系列要点回顾关键问题:一页纸带去现场的 SPI 排查清单是什么?三、快速索引按问题类型你遇到的问题直接看CPOL/CPHA 怎么配[[04-SPI协议与时序详解-CPOL-CPHA]]多从怎么接[[05-SPI片选与多从机制]]SPI 速度上不去[[03-SPI速度与电气约束]] [[02-SPI信号完整性与时钟分布]]QSPI/XIP 怎么搞[[07-SPI双线四线八线-QSPI-Octal]] [[12-SPI设备驱动实战]]OVERRUN 错误[[10-SPI错误处理与恢复]]Linux 怎么读写[[11-SPI Linux驱动框架]] [[12-SPI设备驱动实战]]Flash 读全 0xFF[[13-SPI调试与排查]]波形看不懂[[04-SPI协议与时序详解-CPOL-CPHA]] [[13-SPI调试与排查]]走线要不要匹配[[02-SPI信号完整性与时钟分布]]按应用场景场景重点篇SPI Flash 存储06 / 07 / 11 / 12SPI 显示屏04 / 09 / 12高速 ADC03 / 04 / 09QSPI XIP 启动07 / 08 / 11 / 12多从总线05 / 02Linux BSP11 / 12 / 13RTOS 裸机08 / 09 / 12功能安全10 / 14四、学习建议嵌入式视角:你的学习路径建议:快速过01-04(电气协议,确认无盲区)重点啃02/07(SI 时钟分布 QSPI)必学11/12(Linux SPI 子系统 Flash 驱动,BSP 主场)常备13/14(排查手册,工作触达回查)对照学习法概念SPII2CUART(串口)CAN线数4(MOSI/MISO/SCK/CS)2(SDA/SCL)2(TX/RX)2(CANH/CANL)同步同步(共享 SCK)同步(共享 SCL)异步同步(位填充)拓扑一主多从多主多从总线点对点多主总线电气推挽 CMOSOD 开漏 上拉RS232/485/TTL差分速度几十 M100k-3.4M9.6k-12M1M(FD 8M)应答无(主单向发)ACK/NACK无ACK 位寻址CS 片选7bit 地址无(点对点)11/29bit ID仲裁无(单主)线与仲裁无CSMA/CDNBA主战场Flash/显示/ADC传感器/EEPROM调试/Bootloader汽车/工业相关资源串口技术系列 —— 对照系列(异步总线)I2C 技术系列 —— 对照系列(OD 开漏同步总线)Linux内核专题/11-驱动框架 platform-char-misc-设备树 —— platform 驱动骨架RISC-V架构专题 —— RISC-V SoC 的 SPI IP✨ 感谢你的阅读 ✨技术之路漫漫分享是为了更好地交流。如果本文的内容对你有启发希望能得到你的支持 点赞|⭐ 收藏| 关注如果你在调试过程中遇到了其他问题欢迎在评论区 留言我们一起探讨。关注我一起交流底层开发的那些事儿

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询