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 间,要求通讯速率较高的场合。
芯片的管脚上只占用四根线。(下面会讲到)
- MISO: 主器件数据输出,从器件数据输入。
- MOSI:主器件数据输入,从器件数据输出。
- SCK: 时钟信号,由主设备控制发出。
- NSS(CS): 从设备选择信号,由主设备控制。当NSS为低电平则选中 从器件。
二.SPI总线硬件框图
认识一个外设,最好的方式就是看它的框图,方便我们快速的了解 SPI 的基本功能,然后再看手册了解细节。
根据上面的图我们可以知道一下信息:
- SCK(CK),Serial Clock
此引脚在主机模式下用于时钟输出,==从机模式下用于时钟输入。 - MISO(SDI),Master In / Slave Out data
此引脚在从机模式下用于发送数据,主机模式下接收数据。 - MOSI(SDO), Master Out / Slave In data
此引脚在从机模式下用于数据接收,主机模式下发送数据。 - 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 总线 通信模式
-
全双工通信
全双工通信就是主器件和从器件之间同时互传数据,SPI 总线的全双工模式接线方式如下:
⌘ 、注意接线方式,对于主器件来说 MISO 引脚就是输入端,从器件的 MISO 是输出端,即 Master In / Slave Out data。MOSI 也是同样道理。
⌘、 每个时钟信号 SCK 的作用了,主器件的 MISO 引脚接收 1 个 bit 数据,MOSI 引脚输出 1 个 bit数据。
⌘、这种单一的主从接线模式下,SS 引脚可以不使用。 -
半双工通信
半双工就是同一个时刻只能为一个方向传输数据,SPI 总线的半工模式接线方式如下:
更改通信方式时,要先禁止 SPI
⌘ 、主器件的 MISO 和从器件的 MISO 不使用,可以继续用作标准 GPIO。
⌘ 、1KΩ 的接线电阻很有必要,因为当主器件和从器件的通信方向不是同步变化时,容易出现其中一个输出低电平,另一个输出高电平,造成短路。
⌘ 、这种单一的主从接线模式下,SS 引脚可以不使用 -
单工模式
单工就是只有一种通信方向,即发送或者接收,SPI 总线的单工模式接线方式如下:
⌘ 、未用到的 MOSI 或者 MISO 可以用作标准 GPIO。
⌘ 、这种单一的主从接线模式下,SS 引脚可以不使用。
六、SPI 通信格式
SPI 总线主要有四种通信格式,由 CPOL 时钟极性和 CPHA 时钟相位控制:
SPI 有四种通信格式分别如下:
- 当 CPOL = 1, CPHA = 1 时
SCK 引脚在空闲状态处于高电平,SCK 引脚的第 2 个边沿捕获传输的第 1 个数据。 - 当 CPOL = 0, CPHA = 1 时
SCK 引脚在空闲状态处于低电平,SCK 引脚的第 2 个边沿捕获传输的第 1 个数据。 - 当 CPOL = 1, CPHA = 0 时
SCK 引脚在空闲状态处于高电平,SCK 引脚的第 1 个边沿捕获传输的第 1 个数据。 - 当 CPOL = 0, CPHA = 0 时
SCK 引脚在空闲状态处于低电平,SCK 引脚的第 1 个边沿捕获传输的第 1 个数据。