spi协议时序图和四种模式

一、spi四种模式详解

不同的模式采集数据的方式是不一样的。
一般内置SPI的单片机上,都有两个寄存器配置位CPOLCPHA
我们拿STM32单片机来举例,可以通过结构体成员配置。
在这里插入图片描述
这是通过固件库直接配置,固件库的底层也是配置相应的寄存器。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CPOL:时钟极性
CPHA:始终相位

CPOL和CPHA的作用。

CPOL就是决定SCLK这根时钟信号线,在没有数据传输时候的电平状态(空闲的时候

CPOL = 0:空闲状态时,SCLK保持低电平
在这里插入图片描述

CPOL = 1:空闲状态时,SCLK保持高电平
在这里插入图片描述
CPHA就是决定数据位传输是从第一个时钟(SCLK)边沿开始,还是从第二个时钟(SCLK)边沿开始

CPHA = 0:数据从第一个时钟(SCLK)边沿开始传输数据
在这里插入图片描述

CPHA = 1:数据从第二个始终(SCLK)边沿开始传输数据

在这里插入图片描述

CPOL与CPHA组合的四种模式

CPOL和CPHA合体就形成了SPI四种模式。

在这里插入图片描述

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

模式0特性:
CPOL = 0:空闲时是低电平,第一个跳变沿是上升沿,第二个跳变沿是下降沿
CPHA = 0:数据在第一个跳变沿(上升沿)采样
在这里插入图片描述

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

模式1特性:
CPOL = 0:空闲时是低电平,第一个跳变沿是上升沿,第二个跳变沿是下降沿
CPHA = 1:数据在第二个跳变沿(下降沿)采样
在这里插入图片描述
3、模式2(CPOL = 1, CPHA = 0)

CPOL = 1:空闲时是高电平,第一个跳变沿是下降沿,第二个跳变沿是上升沿
CPHA = 0:数据在第一个跳变沿(下降沿)采样

在这里插入图片描述

4、模式3(CPOL = 1, CPHA = 1)

CPOL = 1:空闲时是高电平,第一个跳变沿是下降沿,第二个跳变沿是上升沿
CPHA = 1:数据在第二个跳变沿(上升沿)采样

在这里插入图片描述
模式不同就是:空闲时间的电平状态数据采样的起点不同

spi时序图详解

以W25Q64这个Flash芯片举例

  • 这种芯片在SPI通信里都是作为从机的角色,也就SPI Slave。一般由单片机或者其它处理器作为主控和它通信,SLCK时钟也是由主控发出。
    下面是W25Q64读数据指令的时序图:
    在这里插入图片描述

1.先确定芯片支持什么SPI哪种模式读写数据

确定了使用哪种模式,单片机才能确定数据采集的方式,主控和从机要保持一致。
如果有些芯片的数据手册是没有告诉是哪种模式时,需要自己看时序图分析

第一步:

  • 通过时序图分析CLK空闲时的电平状态。图上显示,空闲时高低电平都可。先用低电平分析

第二步:

  • 分析DI和DO是在时钟的上升沿还是下降沿采集数据。(DI代表从机MISO)(DO代表从机MOSI)
  • 主要是通过DI与DO在数据有效区时,CLK时上升沿还是下降沿来判断

什么是数据有效区?
在这里插入图片描述

红色框起来的区域就是数据有效区。

  • 一般数据是通过DI和DO两个引脚传输的,所以有效区就是,这两个引脚的值只能是高电平或者低电平
  • 相当于有效区的电平就是最终要传输的数据位,低电平代表0,高电平代表1
  • 传输8个位,代表1个字节的数据

什么是无效数据区?
在这里插入图片描述

上图蓝色框的区域就是无效数据区

  • 这个时刻CLK数据采集的时钟还没有到来,所以DI和DO引脚的电平是可变的

需要关心是的DI和DO在数据有效区的时候,CLK是上升沿还是下降沿。
在这里插入图片描述
从上图可以看出

  • DI和DO在数据有效区时,CLK是上升沿。在CLK是下降沿时,DI和DO引脚电平是可以变化的

所以就只有模式0和模式3可以满足当前从机的时序逻辑。

分析整体时序

W25Q64这个Flash芯片读取存储的数据。
在这里插入图片描述
把整个时序按CLK脉冲顺序拆分成3个部分:

①读指令:

  • 读指令数据是在W25Q64的DI引脚产生的,DI相当于W25Q64的MISO,就是接受单片机发送过来的数据

  • 这个读指令(0x03)是单片机发给W25Q64的。

  • 0x03内拆分为8个Bit在DI引脚上传输,每个CLK传输一位Bit

②24位地址

  • 发完读指令之后,单片机继续发24位的内存地址,相当于单片机要读取W25Q64哪个内存地址的数据
  • 这个数据的地址是由单片机确定的,不是固定的。数据位可以是高电平,也可以是低电平

③单片机接收数据

  • 这个时候通信双方的角色就变了,单片机变成数据的接收方了,W25Q64变成数据的发送方
  • 数据从W25Q64的DO引脚发送(MOSI)
  • 通过时序,单片机就可以读取到存储在W25Q64中存储的数据

单片机程序注意

51单片机一般没有内置SPI模块,所以整个时序需要自己写程序去模拟,简称模拟SPI。
而STM32单片机一般有内置SPI,就不用自己写程序去模拟时序,直接应用。

但是如果用内置SPI有一个细节,特别容易被忽略,就是你读数据的时候,读一个字节之前要先发一个字节任意值数据。(哑数据)

发送一个字节的哑数据是为了维持主从设备之间的通信时序同步,确保数据的可靠传输。这个细节容易被忽略,但它在SPI通信中非常重要。

引用无极单片机的教程

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于连接主控设备与外部设备之间的通信。SPI双线模式是其中一种操作模式,它由四条信号线组成:主机发出的时钟信号(SCLK),主机发出的数据信号(MOSI),从机发出的数据信号(MISO)和从机的片选信号(SS)。 在SPI双线模式时序图中,横轴表示时间,纵轴表示信号电平。起始时,主机将片选信号拉低,以选择特定的从机设备进行通信。接下来,主机通过时钟信号在SCLK线上发送时钟脉冲,用于同步数据传输。 接着,主机将要发送的数据位从数据线的MOSI端口传输到MISO端口。在每个时钟脉冲周期内,主机和从机通过MOSI和MISO线上的电平变化来传输和接收数据。主机在下降沿将数据位从MOSI传输到从机,并在上升沿读取从机通过MISO线传回的响应数据。 当主机传输完所有的数据位后,会停止时钟信号,并将片选信号拉高,结束本次通信过程。从机接收到片选信号变高后,将不再响应主机的传输请求。 在SPI双线模式时序图中,通过观察时钟、数据线上的电平变化,以及片选信号的改变,可以了解到SPI通信的过程和数据传输的时机。时序图的设计可以帮助开发人员对通信过程进行调试和分析,确保数据的准确传输和主从设备之间的正常通信。 ### 回答2: SPI(Serial Peripheral Interface)是一种串行外设接口,它主要用于在微控制器或计算机之间传输数据。SPI双线模式指的是SPI接口在数据传输时采用双线方式进行通信。 SPI双线模式时序图如下: 1. 主设备选择从设备:主设备通过将片选线拉低选中某个从设备。 2. 主设备发送数据:主设备将数据放在数据线(MOSI)上,并将时钟线(CLK)拉高。从设备在时钟线上下降沿接收数据。 3. 从设备接收数据:主设备在时钟线上升沿读取从设备传输的数据。 4. 从设备发送数据:从设备将数据放在数据线(MISO)上,并将时钟线拉高。主设备在时钟线上下降沿接收数据。 5. 主设备接收数据:从设备在时钟线上升沿读取主设备传输的数据。 6. 主设备取消选择从设备:主设备将片选线拉高,取消选择从设备。 SPI双线模式时序图中,有两个关键信号:时钟线和数据线。时钟线用于同步主设备和从设备之间的数据传输,每一个时钟周期传输一位数据。数据线则用于双向传输数据,主设备在发送数据时放置在MOSI上,从设备在发送数据时放置在MISO上。 SPI双线模式的优点在于通信简单、时钟同步、速度较快。然而,它也存在一些限制,比如数据传输距离较短、只能点对点通信等。 总之,SPI双线模式时序图清晰地展示了主设备和从设备之间数据传输的过程,有效地解决了外设与微控制器或计算机之间的通信需求。 ### 回答3: SPI(Serial Peripheral Interface,串行外设接口)是一种用于外设与微控制器之间进行通信的串行通信协议SPI双线模式SPI协议中的一种通信模式,与SPI的四线模式相比,SPI双线模式只使用了两根信号线,即SCLK(串行时钟信号)和SDIO(串行数据信号)。 SPI双线模式时序图如下: 1. 开始传输:由主设备(通常是微控制器)启动传输。主设备将SCLK置为高电平,并将SDIO的电平设为高电平。 2. 传输模式选择:主设备通过将SCLK保持高电平的同时,将SDIO的电平设为低电平,以选择传输模式。在此期间,从设备(例如传感器或存储器)应保持静默,不进行数据传输。 3. 数据传输:主设备通过逐位地将数据位(MSB先传输)逐个传输到SDIO线上。每个数据位的传输都以SCLK的边缘触发开始,并持续一定时间,然后再次触发。传输的时钟频率由主设备控制。 4. 数据接收:从设备必须在主设备传输完毕时,在SCLK上升沿之前将数据位传输到SDIO线上,以供主设备接收。从设备也可以在下一个传输周期开始之前,将数据位预先放置在SDIO线上。 5. 传输结束:传输完成后,主设备将SCLK置为低电平,以结束传输。 SPI双线模式时序图清晰地描述了SPI通信中主设备和从设备之间的数据传输和时钟同步过程。通过控制SCLK和SDIO线上的电平变化和时序关系,主设备和从设备能够实现可靠的双向数据通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值