SPI协议时序图及四种模式

一、spi四种模式详解

不同的模式采集数据的方式是不一样的。
一般内置SPI的单片机上,都有两个寄存器配置位CPOL和CPHA
我们拿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通信中非常重要。

转载至:spi协议时序图和四种模式_spi时序-CSDN博客

<think>好的,我现在要回答用户关于SPI通信中CLK时钟线的作用和工作原理的问题。首先,我需要回忆一下SPI的基本概念。SPI是串行外设接口,一种同步串行通信协议,由Motorola公司开发。CLK信号在SPI中非常重要,因为是同步通信的核心。 用户提到了几个引用内容,我需要结合这些资料。引用[2]提到SPI是高速、全双工、同步的,应用在EEPROM、FLASH等设备之间。引用[3]强调了时钟极性和相位的重要性,必须匹配才能正确通信。引用[1]涉及FPGA异步采样时CLK频率的问题,可能和时钟信号的采样有关。 首先,CLK的作用。同步通信需要时钟信号来协调数据传输,主机控制CLK,从设备根据时钟的边沿采样数据。SPI是全双工,所以数据在MOSI和MISO线上同时传输,CLK的每个周期传输一位数据。这里需要解释时钟如何控制数据传输的时序。 然后是工作原理,包括时钟极性和相位。根据引用[3],时钟极性(CPOL)决定空闲状态的电平,CPHA决定数据在时钟的哪个边沿采样。比如,当CPOL=0时,空闲时CLK低电平,第一个边沿是上升沿;CPHA=0则数据在第一个边沿采样。不同的组合会有四种模式,需要详细说明。 还要考虑用户提到的FPGA异步采样的情况,如引用[1]中的例子,可能需要主设备CLK与FPGA内部时钟的关系,比如采样倍数的问题。但用户的问题主要集中在CLK的作用和原理,这部分可能作为扩展,但重点还是基础原理。 需要确保回答结构清晰,分点说明作用和工作原理,并正确引用资料。同时生成相关问题,可能涉及时钟配置、极性相位设置错误的影响、采样频率的选择等。 最后检查LaTeX格式是否正确,所有行内公式用$...$,独立公式用$$...$$,但这个问题可能不太涉及数学公式,但如果有的话要注意格式。比如如果有数据传输速率的计算,可能需要公式,但用户的问题可能不需要,所以暂时不考虑。 现在组织回答内容,先讲作用,再讲工作原理,分点说明,引用相关文献,最后生成相关问题。</think>### SPI通信中CLK时钟线的作用和工作原理 #### 一、CLK时钟线的作用 1. **同步数据传输** SPI是一种同步串行通信协议,依赖CLK信号协调主机(Master)与从机(Slave)之间的数据传输。主机通过CLK信号的边沿(上升沿或下降沿)控制数据的采样和输出时机,确保双方时序严格对齐[^2]。 2. **数据传输速率控制** CLK的频率决定了数据传输速率。例如,若CLK频率为$10\ \text{MHz}$,则每比特传输时间为$0.1\ \mu\text{s}$。主机可根据需求调整CLK频率以适配不同从机的性能[^3]。 3. **多从机通信协调** 在多个从机的系统中,CLK信号结合片选信号(CS/SS)可区分不同从机,避免总线冲突。主机通过分时切换片选信号和同步CLK,实现多设备间的有序通信[^2]。 --- #### 二、CLK的工作原理 1. **时钟极性(CPOL)与相位(CPHA)** SPI的CLK行为由两个关键参数定义: - **CPOL(Clock Polarity)**:决定CLK空闲时的电平状态。 - $CPOL=0$:空闲时为低电平,有效传输时产生上升沿和下降沿。 - $CPOL=1$:空闲时为高电平。 - **CPHA(Clock Phase)**:决定数据在CLK的哪个边沿被采样。 - $CPHA=0$:数据在第一个边沿(CPOL变化后的首个边沿)采样。 - $CPHA=1$:数据在第二个边沿采样。 组合后形成四种工作模式模式0-3),主从设备需配置一致。 2. **数据传输时序示例** 以模式0(CPOL=0, CPHA=0)为例: - 空闲时CLK为低电平。 - 数据在CLK的上升沿被采样,下降沿切换输出。 - 每周期传输1位数据,MOSI和MISO同时工作,实现全双工通信。 3. **FPGA采样与时钟频率** 当FPGA作为从机时,需通过内部时钟(如$sys\_clk$)对SPI_CLK进行异步采样。为确保稳定捕获CLK边沿,通常要求内部时钟频率为SPI_CLK的$4-8$倍(例如,若SPI_CLK为$10\ \text{MHz}$,则$sys\_clk$需至少$40\ \text{MHz}$)[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值