一、SPI总线简介
SPI总线是摩托罗拉公司开发的一种高速、全双工、同步的通信总线,它通常由四条线组成:
- CS 片选信号
- SCLK 时钟信号
- MOSI 主机输出从机输入接口
- MISO 主机输入从机输出接口
SPI分为主机和从机,主机提供通信所需的时钟信号。
二、SPI四种工作模式
SPI最重要的两个参数分别是时钟的极性(CPOL)和相位(CPHA)。
- CPOL:Clock Polarity 决定时钟空闲状态电平是高电平还是低电平
CPOL = 0:时钟空闲时为低电平,时钟高电平时有效
CPOL = 1:时钟空闲时为高电平,时钟低电平时有效 - CPHA:Clock Phase 决定数据传输采样和移位方式
CPHA = 0 :在时钟信号SCK的第一个跳变沿采样
CPHA = 1 :在时钟信号SCK的第二个跳变沿采样
时钟和相位的不同组合,形成了SPI的四种工作模式:
| 模式 | CPOL | CPHA |
|---|---|---|
| Mode 0 | 0 | 0 |
| Mode 1 | 0 | 1 |
| Mode 2 | 1 | 0 |
| Mode 2 | 1 | 1 |
我们以stm32的spi总线为例:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9OwUvZlb-1684380768088)(https://note.youdao.com/yws/res/c/WEBRESOURCE6fa0a4da0531edd907132ba7f118eecc)]](https://img-blog.csdnimg.cn/20922cd8903a425a96663fd92adef95d.png)
Mode 0:CPOL为0,CPHA为0时,数据在时钟第一个跳变沿(上升沿)采样;
Mode 1:CPOL为0,CPHA为1时,数据在第一个跳变沿(下降沿)采样;
Mode 1:CPOL为1,CPHA为0时,数据在第一个跳变沿(下降沿)采样;
Mode 1:CPOL为1,CPHA为1时,数据在第一个跳变沿(上升沿沿)采样;
| 模式 | 相位极性 | 采样 | SCL空闲电平 |
|---|---|---|---|
| Mode 0 | CPOL = 0, CPHA = 0 | 上升沿 | 低电平 |
| Mode 1 | CPOL = 0, CPHA = 1 | 下降沿 | 低电平 |
| Mode 2 | CPOL = 1, CPHA = 0 | 下降沿 | 高电平 |
| Mode 2 | CPOL = 1, CPHA = 1 | 上升沿 | 高电平 |
SPI slave设备SCL在空闲的时候是高电平还是低电平,决定了CPOL是0还是1。
三、SPI全双工和半双工
在使用stm32等mcu时,SPI通常会有全双工、半双工的选项。所谓全双工就是SPI在发送数据的同时也能够接收数据,所谓半双工就是SPI的发送和接收分时,即发送的时候不能接收数据,接收数据的时候不能发送数据。
四、应用电路
一对一:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RNS6qVX4-1684380768089)(https://note.youdao.com/yws/res/3/WEBRESOURCEbcfee40b7104f052142da5dfae066243)]](https://img-blog.csdnimg.cn/3c1fcabb7c25436d8fa599d859f17fa5.png)
一对多:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9y2IF3R-1684380768089)(https://note.youdao.com/yws/res/2/WEBRESOURCEb86351644c9f57c7454e667e86b48802)]](https://img-blog.csdnimg.cn/aa936ee91a7048c392259e4984329155.png)



















