【STM32】SPI 与 Flash 笔记

1️⃣ SPI(Serial Peripheral Interface,串行外设接口)

  • 英文解释

    • Serial:串行
    • Peripheral:外设
    • Interface:接口
  • 用途:MCU 与外部设备(Flash、传感器等)高速数据通信

常见 SPI 类型

类型 数据线 英文全称 每时钟传输 特点 / 用途
单线 SPI 1(MOSI)+1(MISO)+CLK+CS Standard SPI 1 bit 基础 SPI,低速 Flash、外设配置
双线 SPI 2 数据线 + CLK + CS Dual SPI 2 bit 双向传输,速度翻倍
四线 SPI 4 数据线 + CLK + CS Quad SPI (QSPI) 4 bit 高速读取 NOR Flash,可 XIP(Execute In Place)
八线 SPI 8 数据线 + CLK + CS Octo SPI / HyperBus 8 bit 高速大容量 Flash,数百 MB/s,工业 / Linux 系统用

⚠️ SPI 扩展主要是增加数据线并行传输,最大常见是 8 线。16 线 SPI 不存在,超过 8 线通常改用并行总线或 DDR 接口。


SPI 通信距离

条件 建议距离
PCB 板上(同板或短线) 几厘米到几十厘米(稳定)
板间普通导线 ≤30 cm(高速模式下建议 ≤10~15 cm)
高速 QSPI / Octo SPI ≤10~15 cm(线长越长,时钟抖动越严重)

影响因素

  1. 时钟频率:高频 → 信号衰减,距离减小
  2. 线缆类型:双绞线/屏蔽线可稍延长距离
  3. 电容和阻抗匹配:线太长 → 串扰和反射 → 数据错误
  4. 信号驱动能力:驱动弱 → 长线更容易出错

💡 总结:SPI 是短距离高速接口,高速模式通常只适合同板或板间短线,米级通信需换 UART/RS485/CAN 等长距离接口。


2️⃣ Flash 类型

2.1 NOR Flash

  • 英文解释:Not OR Flash

  • 特点

    • 支持 随机访问,按字节读取
    • 读取速度快,适合执行程序代码(XIP)
    • 写入/擦除慢,容量相对小
    • 擦写次数高 (~10 万次)
  • 用途:存储 MCU 固件、启动程序、少量数据

  • 接口:SPI / QSPI / OctoSPI

  • 例子:W25Q64(8MB QSPI NOR Flash)

2.2 NAND Flash

  • 英文解释:Not AND Flash

  • 特点

    • 按页 / 块顺序访问,随机访问慢
    • 写入/擦除快,容量大(GB级)
    • 擦写次数约 10 万次(小块 NAND)
  • 用途:存储数据文件、大容量存储(SD 卡、SSD)

  • 接口:Parallel NAND / SPI NAND

  • 特点对比

特性 NOR Flash NAND Flash
访问方式 随机访问 顺序访问(页/块)
写入速度
擦写速度
容量
XIP 支持 支持 不支持
用途 固件 / 代码 数据存储 / 文件系统

3️⃣ QSPI / Dual / Octo 关键英文单词

缩写 英文全称 含义
SPI Serial Peripheral Interface 串行外设接口
QSPI Quad SPI 四线 SPI,每时钟传 4 bit
Dual SPI Dual SPI 双线 SPI,每时钟传 2 bit
Octo SPI Octo SPI 八线 SPI,每时钟传 8 bit
XIP eXecute In Place 直接从 Flash 执行程序,无需拷贝到 RAM
CS Chip Select 片选信号,低电平选中芯片
MOSI Master Out Slave In 主机输出,从机输入
MISO Master In Slave Out 主机输入,从机输出
CLK Clock 时钟信号
IO0~IO7 数据线 数据传输线(Quad/Octo 模式)

💡 总结要点

  1. SPI 接口根据数据线不同有 单线 / 双线 / 四线 / 八线,带宽逐步增加
  2. SPI 是短距离高速接口,高速模式通常只适合同板或板间短线
  3. NOR Flash 适合存程序,NAND Flash 适合大容量数据存储
  4. QSPI / OctoSPI 主要用于 高速读取 + XIP
  5. MCU 与 Flash 接口模式必须匹配,才能发挥最大带宽