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

    文章

    1900

    浏览量

    102138
  • IIC
    IIC
    +关注

    关注

    11

    文章

    311

    浏览量

    40769
  • SCK
    SCK
    +关注

    关注

    0

    文章

    7

    浏览量

    16692
  • miso
    +关注

    关注

    0

    文章

    7

    浏览量

    5722

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文带你彻底搞懂K8s网络

    说实话,K8s 网络是我见过最让新手头疼的知识点,没有之一。记得我刚接触 K8s 那会儿,看着流量在 Pod、Service、Node 之间穿梭,完全是一脸懵逼。后来踩了无数坑,熬了无数夜,总算把这套网络模型摸透了。今天这篇文章,我会用最接地气的方式,带你彻底搞懂 K8s
    的头像 发表于 02-06 10:15 716次阅读

    ESP32-C5迷你开发板上手指南!轻松驱动SPI屏幕!

    本文将带你一步步完成WT9932C5-TINY开发板的烧录与SPI屏幕驱动,从硬件连接到软件烧录,直至最终的效果演示。无需复杂的前期准备,跟着教程操作即可快速上手。硬件连接1准备材料1
    的头像 发表于 01-19 18:04 1180次阅读
    ESP32-C5迷你开发板上手指南!轻松驱动<b class='flag-5'>SPI</b>屏幕!

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

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

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

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

    GPIOB模拟spi的方法及lcd屏幕的接入

    本小组用到了spi接口的lcd屏幕,在此分享GPIOB模拟spi的方法及lcd屏幕的接入。 一、spi接口简介 如上图所示,SPI接口的典型
    发表于 10-30 07:59

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

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

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

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

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

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

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

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

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为一名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1750次阅读

    如何让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 1310次阅读
    ADuM3151/ADuM3152/ADuM3153用于<b class='flag-5'>SPI</b>的3.75 kV、7通道、<b class='flag-5'>SPI</b>隔离器、数字隔离器技术手册

    ADUM4150用于SPI高速接口的5kV专用隔离器技术手册

    的iCoupler ^®^ 芯片级变压器技术,在CLK、MO/SI、MI/SO和SS SPI总线信号中具有低传播延迟特性,可支持最高17 MHz的SPI时钟速率。 这些通道在工作时具有14 ns传播延迟和1 ns抖动,以针对SPI
    的头像 发表于 06-04 10:55 1031次阅读
    ADUM4150用于<b class='flag-5'>SPI</b>高速接口的5kV专用隔离器技术手册

    零死角玩转STM32——中级篇

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

    零死角玩转STM32——初级篇

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