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 | 全双工 | 同步 |