> 文档中心 > SPI 理论知识

SPI 理论知识

文章目录

  • 前言
  • 一、SPI简介
  • 二.SPI总线硬件框图
  • 三、SPI接口
  • 四、SPI 时钟源
  • 五、SPI 总线 通信模式
  • 六、SPI 通信格式

前言

I know someone in the world is waiting for me, although I’ve no idea of who he is But I feel happy every day for this .
我知道这世上有人在等我,但我不知道我在等谁,为了这个,我每天都非常快乐。

一、SPI简介

SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。

芯片的管脚上只占用四根线。(下面会讲到)

  1. MISO: 主器件数据输出,从器件数据输入。
  2. MOSI:主器件数据输入,从器件数据输出。
  3. SCK: 时钟信号,由主设备控制发出。
  4. NSSCS): 从设备选择信号,由主设备控制。当NSS为低电平则选中 从器件。

二.SPI总线硬件框图

认识一个外设,最好的方式就是看它的框图,方便我们快速的了解 SPI 的基本功能,然后再看手册了解细节。
SPI 理论知识
根据上面的图我们可以知道一下信息:

  1. SCK(CK),Serial Clock
    引脚主机模式下用于时钟输出,==从机模式下用于时钟输入。
  2. MISO(SDI),Master In / Slave Out data
    此引脚在从机模式下用于发送数据主机模式下接收数据
  3. MOSI(SDO), Master Out / Slave In data
    此引脚在从机模式下用于数据接收主机模式下发送数据
  4. SS(WS), Slave select pin
    根据 SPI 和 SS 设置,此引脚可用于:
    ⌘. 选择从器件进行通信。
    ⌘. 允许多主模式(可以禁止 NSS 引脚输出)。

三、SPI接口

SPI1,SPI4,SPI5,SPI6 在 APB2 总线
SPI2,SPI3 在 APB1 总线
SPI 的最高时钟由这些总线决定的

四、SPI 时钟源

STM32F429 主频在 168MHz 下,SPI1,SPI4,SPI5,SPI6 的最高时钟是 84MHz,而 SPI2 和 SPI3是 42MHz。这里特别注意一点,SPI 工作时最少选择二分频,也就是说 SPI1,4,5,6 实际通信时钟是
42MHz,而 SPI2,3 是 21MHz。

五、SPI 总线 通信模式

  1. 全双工通信
    全双工通信就是主器件和从器件之间同时互传数据,SPI 总线的全双工模式接线方式如下:
    SPI 理论知识
    、注意接线方式,对于主器件来说 MISO 引脚就是输入端,从器件的 MISO 是输出端,即 Master In / Slave Out data。MOSI 也是同样道理。
    、 每个时钟信号 SCK 的作用了,主器件的 MISO 引脚接收 1 个 bit 数据,MOSI 引脚输出 1 个 bit数据。
    、这种单一的主从接线模式下,SS 引脚可以不使用。

  2. 半双工通信
    半双工就是同一个时刻只能为一个方向传输数据,SPI 总线的半工模式接线方式如下:
    SPI 理论知识
    更改通信方式时,要先禁止 SPI
    、主器件的 MISO 和从器件的 MISO 不使用,可以继续用作标准 GPIO。
    、1KΩ 的接线电阻很有必要,因为当主器件和从器件的通信方向不是同步变化时,容易出现其中一个输出低电平,另一个输出高电平,造成短路。
    、这种单一的主从接线模式下,SS 引脚可以不使用

  3. 单工模式
    单工就是只有一种通信方向,即发送或者接收,SPI 总线的单工模式接线方式如下:
    SPI 理论知识
    、未用到的 MOSI 或者 MISO 可以用作标准 GPIO。
    、这种单一的主从接线模式下,SS 引脚可以不使用。

六、SPI 通信格式

SPI 总线主要有四种通信格式,由 CPOL 时钟极性CPHA 时钟相位控制
SPI 理论知识
SPI 有四种通信格式分别如下:

  1. CPOL = 1CPHA = 1
    SCK 引脚在空闲状态处于高电平,SCK 引脚的第 2 个边沿捕获传输的第 1 个数据。
  2. CPOL = 0CPHA = 1
    SCK 引脚在空闲状态处于低电平,SCK 引脚的第 2 个边沿捕获传输的第 1 个数据。
  3. CPOL = 1CPHA = 0
    SCK 引脚在空闲状态处于高电平,SCK 引脚的第 1 个边沿捕获传输的第 1 个数据。
  4. CPOL = 0CPHA = 0
    SCK 引脚在空闲状态处于低电平,SCK 引脚的第 1 个边沿捕获传输的第 1 个数据。

WIFI共享精灵