SPI协议

基本介绍

点击跳转

​ SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理。

引脚定义

  1. MISO( Master Input Slave Output):主设备数据输入,从设备数据输出;
  2. MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;
  3. SCLK(Serial Clock):时钟信号,由主设备产生;
  4. CS/SS(Chip Select/Slave Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。

通信原理

SPI主设备和从设备都有一个串行移位寄存器,一次传输为8位。

通信流程

  1. 主设备发起信号,将CS/SS拉低,启动通信。
  2. 主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低)),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。
  3. 主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(缓存长度不一定,看单片机配置),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
  4. 从机(Slave)也将自己的串行移位寄存器(缓存长度不一定,看单片机配置)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

STM32实现(使用0.96Oled)

0.96Oled引脚介绍

  1. GND <—> 电源地
  2. VCC <—> 电源正(3~5.5V)
  3. D0(SCL) <—> SCK管脚
  4. D1(SDA) <—> MOSI管脚
  5. RES(RST) <—>用来复位(低电平复位)
  6. DC(D/C) <—> 数据和命令控制管脚 1表示数据 0表示命令
  7. CS(NSS) <—> 片选管脚