SPI 通信详解

目录

1. SPI 通信介绍

2. SPI 硬件电路

3. SPI 移位示意图

4. SPI 时序基本单元

4.1 起始与终止条件

5. SPI 四种模式

6. SPI 基本结构

7. STM32 硬件 SPI 配置

7.1 初始化 GPIO

 7.2 初始化 SPI 结构体

7.2 STM32 硬件 SPI 交换一个字节


1. SPI 通信介绍

  • SPI(Serial Peripheral Interface)是由 Motorola 公司开发的一种通用数据总线
  • 四根通信线SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select)
  • 同步,全双工
  • 支持总线挂载多设备(一主多从)

2. SPI 硬件电路

  • 所有SPI设备的SCK、MOSI、MISO分别连在一起
  • 主机另外引出多条SS控制线,分别接到各从机的SS引脚
  • 输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入

 

3. SPI 移位示意图

 SPI 通信的实质就是主机和从机进行数据交换,如果另一方不需要对方的数据的话此时只需要用0x00或者0xFF来和对方进行数据交换即可。

缺点:存在一些资源浪费的现象,比如只需要单方向传输数据却又双方交换数据。

4. SPI 时序基本单元

4.1 起始与终止条件

 

5. SPI 四种模式

在交换一个字节的流程中 SPI 根据 CPOL 和CPHA 的取值不同具有四种不同的模式

  • CPOL(极性):规定了 SCK 时钟信号空闲状态的电平
  • CPHA(相位):规定了数据是在 SCK 时钟的上升沿被采样还是下降沿被采样

模式0:CPOL = 0,CPHA = 0。SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样(第一个边沿),数据在SCK时钟的下降沿切换

模式1:CPOL = 0,CPHA = 1。SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样(第二个边沿),数据在SCK时钟的上升沿切换

模式2:CPOL = 1,CPHA = 0。SCK串行时钟线空闲是为高电平,数据在SCK时钟的下降沿被采样(第一个边沿),数据在SCK时钟的上升沿切换

模式3:CPOL = 1,CPHA = 1。SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样(第二个边沿),数据在SCK时钟的下降沿切换

6. SPI 基本结构

7. STM32 硬件 SPI 配置

7.1 初始化 GPIO

 7.2 初始化 SPI 结构体

7.2 STM32 硬件 SPI 交换一个字节

        因为 SPI 都是和从机进行交换数据的,因此函数参数为需要发送的数据,返回值为交换完接收到的对方的数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值