SPI总线协议

📅 2026/7/9 16:48:59 👁️ 阅读次数 📝 编程学习
SPI总线协议

SPI(Serial Peripheral Interface,串行外设接口)是 Motorola(现 NXP)1980 年代推出的高速、全双工、同步串行通信协议,广泛用于板级短距离芯片互连(MCU、传感器、Flash、显示屏等)。


一、核心特点

  • 同步:主设备提供时钟 SCLK,双方严格按时钟边沿收发。
  • 全双工:MOSI(主→从)与 MISO(从→主)独立,可同时收发。
  • 主从架构:单主多从,主设备控制时序与片选;不支持多主
  • 高速:速率可达几 MHz~上百 MHz,远快于 I2C/UART。
  • 简单灵活:无起始 / 停止 / 校验位,可自定义帧长(常见 8 bit)。

二、硬件接口(4 线制)

信号线全称方向功能
SCLKSerial Clock主→从同步时钟,主机产生
MOSIMaster Out, Slave In主→从主机发送、从机接收
MISOMaster In, Slave Out从→主从机发送、主机接收
CS/SSChip Select / Slave Select主→从片选,低电平有效,选择通信从机
  • 所有SPI设备的SCK、MOSI、MISO分别连在一起
  • 主机另外引出多条SS控制线,分别接到各从机的SS引脚
  • 输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入

  • 一主多从:每个从机独立 CS 线;同一时间仅一个从机被选中。
  • 简化 3 线制:半双工时可 MOSI/MISO 合并为一根双向数据线。

三、通信原理

1. 基本流程
  1. 主机拉低目标从机 CS,选中设备。
  2. 主机输出SCLK 时钟,同时在 MOSI 发数据、在 MISO 收数据(全双工同步移位)。
  3. 每发 / 收 1 bit 对应 1 个时钟边沿;通常高位(MSB)优先
  4. 传输完成后,主机停止 SCLK、拉高 CS,释放从机(MISO 高阻)。
2. 全双工移位

SPI 本质是两个 8 位移位寄存器环回:

  • 主机移位寄存器 → MOSI → 从机移位寄存器
  • 从机移位寄存器 → MISO → 主机移位寄存器
  • 每时钟边沿双方同时移位 1 bit,实现交换一个字节(位)

四、四种工作模式(CPOL+CPHA)

模式由时钟极性 CPOL时钟相位 CPHA组合决定,主从必须配置相同模式

1. CPOL(Clock Polarity,时钟极性)
  • CPOL=0:SCLK 空闲为低电平,有效高电平。
  • CPOL=1:SCLK 空闲为高电平,有效低电平。
2. CPHA(Clock Phase,时钟相位)
  • CPHA=0第一个边沿采样、第二个边沿更新。
  • CPHA=1第二个边沿采样、第一个边沿更新。
3. 模式速查表
模式CPOLCPHA空闲电平采样边沿典型应用
Mode 000上升沿最常用(Flash、ADC)
Mode 101下降沿部分传感器
Mode 210下降沿部分 SPI 设备
Mode 311上升沿常见于 LCD、OLED

  • Mode 0(最常用):空闲低,上升沿采样、下降沿更新。
  • Mode 3:空闲高,上升沿采样、下降沿更新,与 Mode 0 时序对称。

💡 记住:90% 外设默认 SPI Mode0,硬件匹配不对直接收乱码。


五、时序详解(以 Mode 0 为例)

  1. 空闲:SCLK=0,CS = 高(未选中)。
  2. 起始:CS 拉低 → 第一个上升沿:主机输出 MOSI、从机采样 MOSI。
  3. 传输
    • 上升沿:采样数据(读)
    • 下降沿:更新数据(写)
  4. 结束:8 个时钟后收完 1 字节 → CS 拉高,SCLK 保持低。

六、帧格式

  • 无起始位、停止位、校验位,仅纯数据位,效率高但无内置检错。
  • 帧长可配置:4~16 bit,默认 8 bit(1 字节)。
  • 位顺序:默认MSB 优先,部分设备支持 LSB 优先(主从需一致)。

七、优缺点

优点
  • 全双工高速:速率远超 I2C/UART,适合大数据吞吐。
  • 简单可靠:无仲裁、无应答机制,硬件实现简单。
  • 灵活:帧长、模式、位顺序均可配置。
缺点
  • 无内置校验:需软件 CRC / 奇偶校验保证可靠性。
  • 一主多从需独立 CS:从机多时占用 GPIO 多。
  • 仅短距离:板级通信,长距离易受干扰。
  • 不支持多主:总线控制权唯一。

八、与 I2C/UART 对比

特性SPII2CUART
拓扑单主多从多主多从点对点
线数4(或 3)22
双工全双工半双工全双工
时钟同步(主机提供)同步(主机提供)异步(波特率匹配)
速率最高中等较低
寻址片选7/10 位地址
校验可选

九、常见应用

  • 存储:SPI Flash(W25Qxx)、SD 卡。
  • 传感器:ADC/DAC、陀螺仪、加速度计。
  • 显示:LCD、OLED、TFT 屏。
  • 通信:以太网 PHY、CAN 控制器。
  • 其他:RTC、EEPROM、FPGA 配置接口。

十、配置要点

  1. 模式匹配:主从 CPOL/CPHA 必须一致,否则通信失败。
  2. 时钟速率:不超过从机最大支持频率(常见 10~20 MHz)。
  3. 位顺序:MSB 或 LSB 优先,主从一致。
  4. CS 极性:多数低电平有效,少数高电平有效。
  5. 软件校验:关键数据建议加 CRC / 奇偶校验。