☰
SPI 介绍【过于简单】
2026/10/27 1:42:18 网站建设 项目流程

SPI 超简单介绍

SPI,全称 Serial Peripheral Interface,串行外设接口。是一种同步串行接口技术,用于连接微控制器与其他外设。

特点

  • 同步、全双工串行通信总线
  • 时钟由主机提供,全双工同时收发;靠 CS 片选选择从设备,无设备地址概念

一、硬件接口

标准4根信号线 + GND共地

  1. SCLK(SCK): 串行时钟
    主机输出时钟信号,同步所有数据采样;始终永远由主机产生,从设备被动跟随 SCLK。

  2. MOSI: (Master Out Slave In)
    主机输出➡从机输入。主机发送给从机的数据。

  3. MISO: (Master In Slave Out)
    主机输入⬅从机输出。从机发给主机的数据。

  4. CS / SS (Chip Select / Slave Select) 片选
    片选信号,每个从设备需要独立一根 CS 线;拉低(低电平有效)选中该从机,拉高则设备脱离总线。

GND 必须共地,否则电平参考不一致通信出错。

二、协议:信号时序定义

SPI 没有统一官方标注,是事实标准;最重要两个参数:CPOL、CPHA,组合成4种 SPI 模式。

  1. CPOL 时钟极性(Clock Polarity)
    定义总线空闲时 SCLK 电平
  • CPOL=0: 空闲时 SCLK =低电平
  • CPOL=1: 空闲时 SCLK =高电平
  1. CPHA 时钟相位(Clock Phase)
    定义在哪一个时钟边沿采样数据
  • CPHA=0:第一个时钟边沿采样数据,第二个边沿移位
  • CPHA=1:第二个时钟边沿采样数据,第一个边沿移位

采样 = 读取电平;
移位 = 更新输出电平。

四种 SPI 模式

模式CPOLCPHA说明
Mode000空闲 SCLK 低,第一个边沿采样;最常用
Mode101空闲 SCLK 低,第二个边沿采样
Mode210空闲 SCLK 高,第一个边沿采样
Mode311空闲 SCLK 高,第二个边沿采样;Flash 常用

主机与从设备必须使用完全相同的 CPOL、CPHA,否则收到乱码。

数据移位机制 —— SPI 全双工本质
SPI 是 移位寄存器架构:主机、从机内部都有一个 N 位移位寄存器。
SCLK 每来一个时钟脉冲:主机输出 1bit 到 MOSI,同时读取 MISO 上 1bit。
👉只要SCLK跳动,MOSI 和 MISO就同时交换 1bit;收发同步发生。

哪怕主机只想读从机,也必须发送 dummy 字节来产生时钟,从机才会把数据放到 MISO。

CS 片选行为

大部分器件:

  • CS 拉低 ➡ 激活从机;
  • CS 拉高 ➡ 结束一次传输,清空从机移位寄存器。

三、通信示例

主机写从设备

  1. CS 拉低
  2. SCLK 输出时钟,MOSI 发送命令 + 数据;
    MISO 收到的是无效 dummy 数据直接丢弃
  3. 传输完成,CS 拉高

主机读从设备

SPI 不能单纯“读”,必须输出时钟。主机发送哑字节,用来驱动 SCLK 时钟;从机在 MISO 输出需要的数据。

  1. CS 拉低
  2. MOSI 输出哑字节,产生SCLK;
    MISO 上捕获从机返回的数据
  3. 收满需要字节,CS 拉高

重点:SPI 读,也要发数据,只是不在乎发送出去是什么。

五、数据传输演示

点此跳转演示连接

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询