0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

搞懂时序带你玩转SPI?

FPGA之家 来源:玩转嵌入式 作者:玩转嵌入式 2021-05-29 11:29 次阅读

1、什么是SPI?SPI是串行外设接口(Serial Peripheral Interface)的缩写,是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工、同步的通信总线。2、SPI优点支持全双工通信

通信简单

数据传输速率块

1eda1b7e-bfcf-11eb-9e57-12bb97331649.jpg

3、缺点没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。

4、特点

(1):高速、同步、全双工、非差分、总线式

(2):主从机通信模式5、SPI电路连接

(1):SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,有三线制和四线制之分。信号线包括SDI(串行数据输入 Serial Digital IN)、SDO(串行数据输出 Serial Digital OUT)、SCLK(时钟)、CS(片选)。

(2):SDO/MOSI – 主设备数据输出,从设备数据输入

(3):SDI/MISO – 主设备数据输入,从设备数据输出

(4):SCLK – 时钟信号,由主设备产生;(5):CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低(一般低有效)。

1ef21878-bfcf-11eb-9e57-12bb97331649.png

6、SPI通信模式分析SPI通信有4种不同的模式,不同的从设备在出厂时配置模式已经固定, 这是不能改变的,但通信双方设备必须工作在同一模式下,所以可以对主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制主设备的通信模式。 具体模式具体如下:

:CPOL=0,CPHA=0

Mode1:CPOL=0,CPHA=1

Mode2:CPOL=1,CPHA=0

Mode3:CPOL=1,CPHA=1

模式 CPOL CPHA
Mode0 0 0
Mode1 0 1
Mode2 1 0
Mode3 1 1

时钟极性CPOL是用来配置SCLK电平的有效态的;

时钟相位CPHA是用来配置数据采样是发生在第几个边沿的。 CPOL=0表示当SCLK=0时处于空闲态,所以SCLK处于高电平时有效;

CPOL=1表示当SCLK=1时处于空闲态,所以SCLK处于低电平时有效;

CPHA=0表示数据采样是在第1个边沿,数据发送在第2个边沿;

CPHA=1表示数据采样是在第2个边沿,数据发送在第1个边沿; SPI主模块和与之通信的外设通信时,两者的时钟相位和极性应该保持一致。7、SPI 时序详解CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。 CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。 CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。 CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。

注意:SPI主设备能够控制时钟信号,因为SPI通信并不像UART或者IIC通信那样有专门的通信周期、通信起始信号、通信结束信号;所以SPI协议只能通过控制时钟信号线,在没有数据交流的时候,时钟线要么是保持高电平,要么是保持低电平。 例如:工作在模式0这种时序(CPOL=0,CPHA=0),如下:

1f2a0814-bfcf-11eb-9e57-12bb97331649.png

我们来关注SCK的第一个时钟周期,在时钟的前沿采样数据(上升沿,第一个时钟沿),在时钟的后沿输出数据(下降沿,第二个时钟沿)。首先来看主器件,主器件的输出口(MOSI)输出的数据bit1,在时钟的前沿被从器件采样,那主器件是在何时刻输出bit1的呢?bit1的输出时刻实际上在SCK信号有效以前,比SCK的上升沿还要早半个时钟周期。

bit1的输出时刻与SSEL信号没有关系。再来看从器件,主器件的输入口MISO同样是在时钟的前沿采样从器件输出的bit1的,那从器件又是在何时刻输出bit1的呢。从器件是在SSEL信号有效后,立即输出bit1,尽管此时SCK信号还没有起效。 从这张图就可以很清楚的看出主从器件的bit1是怎样输出的。

1f5a253a-bfcf-11eb-9e57-12bb97331649.png

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91506
  • IIC
    IIC
    +关注

    关注

    11

    文章

    300

    浏览量

    38311
  • SCK
    SCK
    +关注

    关注

    0

    文章

    7

    浏览量

    16112
  • miso
    +关注

    关注

    0

    文章

    7

    浏览量

    5421

原文标题:SPI怎么玩?搞懂时序,运用自如

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    KeyStone架构串行外设接口(SPI)手册

    )、MOSI(主设备输出从设备输入线)、MISO(主设备输入从设备输出线)和CS/SS(片选线)。SPI协议支持主从模式,其中主设备生成时钟信号并控制数据传输的时序,而从设备响应主设备的请求。这种协议广泛应用于嵌入式系统中,因为它简单、高效,并且能够支持多种不同的数据速率
    发表于 12-16 10:33 0次下载

    ADS9224R使用SPI常规模式,读数据无返回,请问具体的读数据的时序应该是怎样的?

    使用SPI常规模式,读数据无返回,请问具体的读数据的时序应该是怎样的?我的操作是常规模式使用zone 1,拉高CONVST后再拉低,然后等待READY变高,拉低CS,进行数据的读取,读取不到数据
    发表于 11-28 06:11

    请问下DAC1282的SPI时序是CPOL=0,CPHA=0吗?

    请问下DAC1282的SPI时序是CPOL=0,CPHA=0吗?还有就是此芯片通讯不是全双工的吗?写寄存器的操作码Figure 49. 显示是0100XXXX,但是文字描述却是0010XXXX,到底是哪个为准。现在调试就是SPI
    发表于 11-26 06:44

    瀚海微SD NAND之SD 协议(42)SPI总线时序

    SPI总线时序图 所有时序图使用以下原理图和缩写: 所有定时值的定义如表所示。 主机在收到卡响应后,应保持时钟运行至少NcR时钟周期。此限制适用于命令和数据响应令牌。 命令/响应 主机对卡的命令响应
    的头像 发表于 10-21 10:19 260次阅读
    瀚海微SD NAND之SD 协议(42)<b class='flag-5'>SPI</b>总线<b class='flag-5'>时序</b>

    玩转TI MSP430 LaunchPad

    电子发烧友网站提供《玩转TI MSP430 LaunchPad.pdf》资料免费下载
    发表于 08-30 10:51 0次下载
    <b class='flag-5'>玩转</b>TI MSP430 LaunchPad

    手把手带你移植HAL库函数

    在嵌入式系统开发中,硬件抽象层(HAL,HardwareAbstractionLayer)库的使用可以极大地简化开发过程,提高代码的可移植性和维护性。本文将详细介绍如何快速搞懂HAL库的移植,帮助
    的头像 发表于 05-18 08:04 1864次阅读
    手把手<b class='flag-5'>带你</b>移植HAL库函数

    搞懂通信协议?先来看一篇SPI热热身

    SPI是串行外设接口(SerialPeripheralInterface)的缩写,它是一种同步串行通信接口,用于微控制器和外围设备(如传感器、SD卡、其他微控制器等)之间的通信。SPI接口通常
    的头像 发表于 05-12 08:10 1687次阅读
    想<b class='flag-5'>搞懂</b>通信协议?先来看一篇<b class='flag-5'>SPI</b>热热身

    天线设计攻略简要概述 带你玩转PCB和WIFI

    给大家分享干货啦!天线设计全攻略,带你玩转PCB和WIFI
    的头像 发表于 05-08 14:42 1515次阅读
    天线设计攻略简要概述 <b class='flag-5'>带你</b><b class='flag-5'>玩转</b>PCB和WIFI

    时序电路的分类 时序电路的基本单元电路有哪些

    时序电路是一种能够按照特定的顺序进行操作的电路。它以时钟信号为基准,根据输入信号的状态和过去的状态来确定输出信号的状态。时序电路广泛应用于计算机、通信系统、数字信号处理等领域。根据不同的分类标准
    的头像 发表于 02-06 11:25 2537次阅读

    PCB阻抗设计12问,轻松带你搞懂阻抗!

    阻抗,工程师们都接触过,但能把阻抗说清楚的工程师少之又少。阻抗看似简单,实则难以言表。下面我们用快问快答的方式,轻松帮你搞懂阻抗!01问:什么是阻抗?答:在有电阻、电感和电容的电路里,对交流电所起
    的头像 发表于 01-05 10:44 1990次阅读
    PCB阻抗设计12问,轻松<b class='flag-5'>带你</b><b class='flag-5'>搞懂</b>阻抗!

    Vivado时序问题分析

    有些时候在写完代码之后呢,Vivado时序报红,Timing一栏有很多时序问题。
    的头像 发表于 01-05 10:18 2109次阅读

    【华秋干货铺】PCB阻抗设计12问,轻松带你搞懂阻抗

    阻抗,工程师们都接触过,但能把阻抗说清楚的工程师少之又少。阻抗看似简单,实则难以言表。 下面我们用快问快答的方式,轻松帮你搞懂阻抗! 0 1 问:什么是阻抗? 答:在有电阻、电感和电容的电路里
    的头像 发表于 01-05 08:45 994次阅读
    【华秋干货铺】PCB阻抗设计12问,轻松<b class='flag-5'>带你</b><b class='flag-5'>搞懂</b>阻抗

    PCB阻抗设计12问,轻松带你搞懂阻抗!

    阻抗,工程师们都接触过,但能把阻抗说清楚的工程师少之又少。阻抗看似简单,实则难以言表。   下面我们用快问快答的方式,轻松帮你搞懂阻抗! 0 1    问:什么是阻抗?   答:在有电阻、电感和电容
    的头像 发表于 01-03 08:40 1169次阅读
    PCB阻抗设计12问,轻松<b class='flag-5'>带你</b><b class='flag-5'>搞懂</b>阻抗!

    ADXL355模拟SPI时序,MISO读取的老是高电平的原因?

    有没有大佬帮忙看一下,这ADXL355模拟SPI时序,MISO读取的老是高电平,是不是这个取出程序的时序有问题啊 uint8_t SPI_ReadWrite1Byte(uint8_t
    发表于 12-27 07:38

    硬件spi和软件spi的区别

    硬件SPI(串行外设接口)和软件SPI是两种不同的SPI传输方式。SPI是一种同步串行数据通信协议,通常用于连接微控制器和外部设备,如存储器、传感器和显示屏等。 硬件
    的头像 发表于 12-26 16:55 5924次阅读