SPI 通信协议学习笔记

SPI 总线:四线制硬件电路、移位寄存器交换数据原理、CPOL/CPHA 时序模式与 W25Q64 指令时序。

SPI通信

  • SPI:通用数据总线

  • 四根通信线:轻松Mhz

    • SCK(Serial Clock)

    • MOSI(Master Output Slave Input)

    • MISO(Master Input Slave Output)

    • SS(Slave Select)

  • 同步,全双工

  • 支持总线挂载多设备(一主多从)

常用模块:W25Q64 FLASH存储器、SPI OLED屏、NRF24L01 2.4G无线通讯模块、SD卡 支持SPI

硬件电路

  • 所有SPI设备SCK、MOSI、MISO分别连接在一起
  • 主机引出多条SS控制线,分别连接各从机SS引脚
  • 输出引脚配置推挽输出(驱动能力强,驱动上下降沿强),输入引脚配置浮空或上拉
image-20250925170440759

主机指定从机:将对应SS线输出低电平,其余高电平

移位示意图

image-20250925171058081

波特率发生器作为时钟,每一个上升沿,移位寄存器移出一位,进行数据发送;每一个下降沿,最低位采样

image-20250925171304695

一般主机发0x00或0xff跟从机交换数据

SPI时序基本单元

  • 起始条件:SS高电平到低电平
  • 终止条件:SS低电平切换高电平

image-20250925171622639

SPI由不同的移位模型,能根据SCK的不同边沿变化进行移位。

模式1

CPOL=0:空闲状态时,SCK低电平

CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据(数据采样)

image-20250925171826936

模式0

CPOL=0:空闲状态时,SCK为低电平 CPHA=0: SCK第一个边沿移入数据,第二个边沿移出数据

将第一个数据变化的时机提前

image-20250925172507991

SPI时序

W25Q64为例,芯片厂商规定

  • 发送指令
  • 向SS指定设备,发送指令(0x06),00000110
image-20250925173135029
使用 Hugo 构建
主题 Stack 由 Jimmy 设计