SPI通信协议

1.串行外设接口概述 SPI

2.基本概念

SPI---串行外设接口----Motorola公司

全双工----采用主从模式(Master---Slave)架构,支持一个或多个Slave设备

3.引脚定义

(1)MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

(2)MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

(3)SCK:串口时钟,作为主设备的输出,从设备的输入。

(4)NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为片选引脚,让主设备可以单独地与特定从设备通信,避免数据线上的冲突。

4.通信结构

初始状态

主机读取一个bit过程

当读取7次后,也就是读取7位后

总结:

没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

5.通信速率

对比一下

IIC--速率--100KHz 400KHz

SPI--速率--是由从机决定 0MHz~10MHz的速率(只有少数模块能达到10MHz的速率)

可以看到SPI1外设的通信速率可以高达42Mbps,SPI2和SPI3也可以达到21Mbps,但是一些外围器件的通信速率最高也就是10Mbps左右,极少数可以超过10Mbps(W25Q128芯片)。

6.工作模式

7.时钟极性

控制的是初始电平状态

8.时钟相位

取的边沿状态---(边沿检测器)

9.工作模式选择

工作模式的选择依赖的模块规定(数据手册有规定使用哪一种模式)

|--------|------------------|-----|-----|-----|
| | 模式0 | 模式1 | 模式2 | 模式3 |
| CPOL极性 | 0 | 0 | 1 | 1 |
| CPHA相位 | 0 | 1 | 0 | 1 |
| 描述 | 初始低电平,取第一边沿(上升沿) | | | |

  • RFID 模块

规定模式0

  • 2.4G 无线通信模块

规定模式0

  • 串行Flash芯片

W25Q128--规定模式0 或者模式3

10.数据格式

11.SPI编程

方法一:看 how to use

方法二:看 帮助手册

12.数据发送

你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

|----------|------------------|----------------|------|----|
| 对比所学 | 引脚 | 速率 | 传输方向 | 时钟 |
| 串口 | TX/RX | 波特率决定 | 全双工 | 异步 |
| 单总线DHT11 | DATA | - | 半双工 | 异步 |
| IIC | SCL/SDA | 100KHz/400KHz | 半双工 | 同步 |
| SPI | SCK/MISO/MOSI/CS | 10MHZ <APB2/2 | 全双工 | 同步 |