通俗语言理解SPI的四种工作模式


在这里插入图片描述

SPI 简介

  • SPI(Serial Peripheral Interface)是一种高速、全双工、同步的通信总线,
  • 主要用于短距离通信,在嵌入式系统中广泛应用于芯片间的通信,如微控制器与传感器、存储器、显示屏等设备之间的通信。
  • 它使用四条线进行通信,分别是主设备输出 / 从设备输入线(MOSI)、主设备输入 / 从设备输出线(MISO)、时钟线(SCLK)和片选线(SS)。
  • 主设备通过 SCLK 提供时钟信号来同步数据传输,MOSI 用于主设备向从设备发送数据,MISO 用于从设备向主设备发送数据,SS 用于选择从设备,当 SS 为低电平时,对应的从设备被选中并开始通信。

SPI 有四种工作模式,主要由时钟极性(CPOL)和时钟相位(CPHA)决定。

SPI 的极性与相位

- 极性CPOL

  • 极性: 直接影响SPI总线**“空闲时的时钟信号是高电平还是低电平”**。

CPOL = 1:表示空闲时是高电平
CPOL = 0:表示空闲时是低电平

- 相位CPHA

  • 相位: 直接决定SPI总线**“从哪个跳变沿开始采样数据”**。
  • 一个时钟周期有2个跳变沿,上升沿、下降沿。

CPHA = 0:表示从第一个跳变沿(上升沿)开始采样
CPHA = 1:表示从第二个跳变沿(下降沿)开始采样

SPI 模式 0(CPOL = 0,CPHA = 0)

在这里插入图片描述

- 时钟信号特征:

  • 在这种模式下,SPI 的时钟极性(CPOL)为 0,表示时钟信号(SCLK)在空闲状态是低电平。就像一个处于静止等待状态的节拍器,摆锤(类比时钟信号)在没有开始工作(数据传输)时,处于下方位置(低电平)。
  • 当数据传输开始时,SCLK 会产生一系列的时钟脉冲。这些脉冲的上升沿是数据传输的关键时刻。

- 数据传输过程:

  • 在 SCLK 的上升沿,主设备将数据放置到主设备输出 / 从设备输入线(MOSI)上,同时从设备会在这个上升沿对主设备输出的数据进行采样,将其锁存到内部的寄存器中。这就好像一个严格按照节拍跳舞的舞者,在音乐(时钟信号)的上升沿这个特定节拍下,主设备把 “舞蹈动作”(数据)展示出来,从设备立刻学习(采样)这个动作。
  • 与此同时,从设备也会在这个上升沿将数据从主设备输入 / 从设备输出线(MISO)发送给主设备,主设备同样在这个上升沿进行采样接收。所以在每个时钟的上升沿,主从设备同时进行数据的发送和接收操作,数据传输是同步进行的。

- 应用场景示例:

  • 这种模式比较简单直接,常用于一些对数据传输实时性要求较高,且设备之间通信协议相对简单的情况。例如,连接一些简单的 SPI 接口传感器,像某些温度传感器,主设备(如微控制器)可以在时钟上升沿快速获取传感器的数据,并且传感器也能在同一时刻接收主设备发送的配置命令等信息。

SPI 模式 1(CPOL = 0,CPHA = 1)

在这里插入图片描述

- 时钟信号特征:

  • 同模式 0 一样,CPOL 为 0,SCLK 的空闲状态是低电平。
  • 不过,在这种模式下,数据是在时钟信号的下降沿进行传输和采样的。

- 数据传输过程:

  • 在 SCLK 的上升沿,主设备会准备好要发送的数据放到 MOSI 线上,但此时从设备并不采样。从设备也会在这个上升沿准备好要发送给主设备的数据放在 MISO 线上,但主设备同样不采样。可以理解为双方在上升沿这个时刻只是 “摆好姿势”,还没有进行真正的数据交换动作。
  • 当 SCLK 进入下降沿时,主设备对从设备放在 MISO 线上的数据进行采样,从设备对主设备放在 MOSI 线上的数据进行采样。就好像舞者在音乐的前半拍(上升沿)准备动作,后半拍(下降沿)才完成动作交换(数据采样)。

- 应用场景示例:

  • 适用于一些对数据传输时序有特殊要求的设备,这些设备可能在数据准备阶段需要一定的时间。比如某些具有内部数据处理机制的 SPI 从设备,它在接收到时钟上升沿信号后,需要短暂的时间来准备要发送的数据,然后在下降沿才能准确地将数据发送给主设备。

SPI 模式 2(CPOL = 1,CPHA = 0)

在这里插入图片描述

- 时钟信号特征:

  • 此时,CPOL 为 1,这使得时钟信号 SCLK 在空闲状态是高电平,如同一个一直处于 “开启准备” 状态的信号灯,在没有数据传输时就亮着(高电平)。
  • 数据传输是在时钟信号的下降沿进行。

- 数据传输过程:

  • 当 SCLK 从高电平进入下降沿时,主设备将数据输出到 MOSI 线上,同时从设备在这个下降沿对主设备输出的数据进行采样并锁存。并且从设备也会在这个下降沿将数据发送到 MISO 线上,主设备在同一下降沿接收从设备发送的数据。
  • 可以想象成一个反节奏的舞蹈,在时钟信号的下降这个特定节拍下,主从设备完成数据的发送和接收,与模式 0 在上升沿传输数据形成对比。

- 应用场景示例:

  • 这种模式在一些对时钟信号空闲状态有特殊要求的系统中可能会用到。例如,在某些通信设备中,为了与其他外部设备的时钟信号保持某种同步或者避免电磁干扰,需要将 SPI 时钟信号的空闲状态设置为高电平,同时在下降沿进行数据传输,以符合整体系统的通信规范。

SPI 模式 3(CPOL = 1,CPHA = 1)

在这里插入图片描述

- 时钟信号特征:

  • CPOL 依旧为 1,SCLK 在空闲状态是高电平。
  • 数据传输是在时钟信号的上升沿进行,但与模式 0 不同的是,它的准备阶段有所变化。

- 数据传输过程:

  • 在 SCLK 的下降沿,主设备和从设备会分别准备好要发送的数据放在 MOSI 线和 MISO 线上,但此时双方都不进行采样。就好像双方在音乐的前半拍(下降沿)准备好自己的 “舞蹈动作”(数据)。
  • 当 SCLK 进入上升沿时,主设备对从设备放在 MISO 线上的数据进行采样,从设备对主设备放在 MOSI 线上的数据进行采样。这类似于一种延迟一拍的数据传输方式,和模式 1 在上升沿不采样、下降沿采样的方式正好相反。

- 应用场景示例:

  • 在一些复杂的 SPI 通信系统中,当存在多个 SPI 设备,且这些设备对数据传输的时序要求较为复杂时,模式 3 可以提供一种不同的数据传输节奏,以满足设备之间的协调通信。例如,在一个同时连接了多个不同类型 SPI 设备(如存储设备、显示设备等)的系统中,通过使用模式 3 可以更好地安排数据传输的顺序和时机,避免数据冲突和错误。

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值