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

    文章

    1866

    浏览量

    99792
  • IIC
    IIC
    +关注

    关注

    11

    文章

    308

    浏览量

    40377
  • SCK
    SCK
    +关注

    关注

    0

    文章

    7

    浏览量

    16608
  • miso
    +关注

    关注

    0

    文章

    7

    浏览量

    5688

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA实现基于SPI协议的Flash驱动控制芯片擦除

    本篇博客具体包括SPI协议的基本原理、模式选择以及时序逻辑要求,采用FPGA(EPCE4),通过SPI通信协议,对flash(W25Q16BV)存储的固化程序进行芯片擦除操作。
    的头像 发表于 12-02 10:00 1708次阅读
    FPGA实现基于<b class='flag-5'>SPI</b>协议的Flash驱动控制芯片擦除

    迅为Hi3403开发板极速启航 | 手把手带你玩转核心例程,轻松上手AI视觉!

    迅为Hi3403开发板极速启航 | 手把手带你玩转核心例程,轻松上手AI视觉!
    的头像 发表于 11-19 13:56 1250次阅读
    迅为Hi3403开发板极速启航 | 手把手<b class='flag-5'>带你</b><b class='flag-5'>玩转</b>核心例程,轻松上手AI视觉!

    ‌TLC6989 SPI-Compatible Connectivity 芯片技术文档总结

    TLC6989 SPI 兼容连接使 TLC698x 器件系列能够使用标准 SPI 控制器进行控制。该器件具有内部振荡器,可生成 TLC698x 器件系列所需的连续时钟。抖动可以添加到连续时钟中以增强 EMI。传输的数据与连续时钟对齐,以保持CCSI接口的
    的头像 发表于 08-20 10:23 769次阅读
    ‌TLC6989 <b class='flag-5'>SPI</b>-Compatible Connectivity 芯片技术文档总结

    ‌TLC69699 SPI-Compatible Connectivity 芯片技术文档摘要

    TLC69699 SPI 兼容连接使 TLC696xx 器件系列能够使用标准 SPI 控制器进行控制。该器件具有内部振荡器,可生成 TLC696xx 器件系列所需的连续时钟。抖动可以添加到连续时钟中以增强 EMI。传输的数据与连续时钟对齐,以保持CCSI接口的
    的头像 发表于 08-20 10:14 760次阅读
    ‌TLC69699 <b class='flag-5'>SPI</b>-Compatible Connectivity 芯片技术文档摘要

    ‌LP5899 SPI兼容连接设备技术文档总结

    LP5899 SPI 兼容连接使 LP589x 器件系列能够使用标准 SPI 控制器进行控制。该器件具有内部振荡器,可生成 LP589x 器件系列所需的连续时钟。抖动可以添加到连续时钟中以增强 EMI。传输的数据与连续时钟对齐,以保持 CCSI 接口的
    的头像 发表于 08-20 10:04 636次阅读
    ‌LP5899 <b class='flag-5'>SPI</b>兼容连接设备技术文档总结

    如何让SPI额外发出一个时钟?

    现将2个ADC芯片进行菊花链式连接,手册上给的时序图中,两个芯片读数中间需要额外插入一个时钟时序,要怎样控制SPI输出单个时钟。还是说只能去用IO口模拟时序。IO口模拟的话速率又不如
    发表于 06-13 07:30

    ADuM3151/ADuM3152/ADuM3153用于SPI的3.75 kV、7通道、SPI隔离器、数字隔离器技术手册

    变压器技术,在CLK、MO/SI、MI/SO和SSSPI总线信号中具有低传播延迟特性,可支持最高17 MHz的SPI时钟速率。这些通道在工作时具有14 ns传播延迟和1 ns抖动,以针对SPI优化时序
    的头像 发表于 06-04 11:23 812次阅读
    ADuM3151/ADuM3152/ADuM3153用于<b class='flag-5'>SPI</b>的3.75 kV、7通道、<b class='flag-5'>SPI</b>隔离器、数字隔离器技术手册

    零死角玩转STM32——中级篇

    本文共4册,由于资料内存过大,分开上传,有需要的朋友可以去主页搜索下载哦~ 《零死角玩转 STM32》系列教程由初级篇、中级篇、高级篇、系统篇、四个部分组成,更适合初学者,步步为营,从入门到精通
    发表于 05-21 13:56

    【CW32模块使用】0.96寸SPI单色屏

    硬件SPI与软件SPI相比,硬件SPI是靠硬件上面的SPI控制器,所有的时钟边缘采样,时钟发生,还有时序控制,都是由硬件完成的。它降低了CP
    的头像 发表于 03-29 17:29 2904次阅读
    【CW32模块使用】0.96寸<b class='flag-5'>SPI</b>单色屏

    TLC1543怎么直接用SPI接口控制,不需要模拟时序

    自己在做SST51与TLC1543的连接,而SST51集成SPI接口,想咨询TLC1543怎么直接用SPI接口控制,不需要模拟时序。请指教,谢谢
    发表于 02-11 07:49

    ADS1118 spi通信时序的问题谁来解答一下

    我用ADS1118做4路单端模拟信号的采集,按照DATASHEET 上的SPI时序从SDI引脚输入4BYTE的数据(配置字发送2次),SDO引脚一直保持为高电平。请问这是何种原因?望解答。 请问
    发表于 01-20 08:40

    LPC1768用仿SPI时序去驱动ADS1248,转换不对是哪里的问题?

    我以前用LPC1758仿SPI时序驱动ADS1248,没有问题,转换正确;近来我用LPC1768也是用仿SPI时序去驱动ADS1248,但是转换不对。发现/DRDY信号为一个10
    发表于 01-10 06:42

    把DAC8803的LDAC管脚接地,其他SPI时序正常,DAC可以正常工作吗?

    请问一下,如果把DAC8803 的LDAC管脚接地,其他SPI时序正常,DAC可以正常工作吗?如果能正常工作应该如何操作? 我现在是把LDAC管脚一直接地,时序按数据手册上的时序操作
    发表于 01-06 06:55

    DAC7568按数据手册上要求的SPI时序不能配置,内部参考是否也没有输出,为什么?

    按数据手册上要求的SPI时序不能配置,内部参考是否也没有输出,手册上面介绍的操作有没有顺序要求,没有给出来。试了上面所有写操作也没有输出输入您的问题
    发表于 12-31 06:21

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

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