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

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

3天内不再提示

什么是SPI?SPI通信的4种工作模式

kae1_cdebyte 来源:亿佰特物联网应用专家 2023-08-11 09:22 次阅读

什么是SPI?

SPI的英文全称为Serial Peripheral Interface,顾名思义为串行外设接口。SPI是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离通信。该接口由摩托罗拉在20世纪80年代中期开发,后发展成了行业规范。

SPI简介?

SPI是一种高速的、全双工的、同步的通信总线,并且至多仅需使用4根线,节约了芯片的管脚,SPI主要应用于EEPROM、FLASH、ADCDAC等芯片,还有数字信号处理器和数字信号解码器之间。

SPI设备之间采用全双工模式通信,是一个主机和一个或者多个从机的主从模式。主机负责初始化帧,这个数据传输帧可以用于读与写两种操作,片选线可以从多个从机选择一个来响应主机的请求。

SPI接口定义如下表:

wKgZomTVjWGAcQzzAAIx2cigS-E278.png

由上表也可以看出当SPI设备间通信时,数据线应该是MOSI连接MOSI,MISO连接MISO,SCLK与SCLK相连,而不是像串口那样TX、RX进行反接。当只有单一SPI从机设备时,如果从机设备允许的话,可直接将CS/SS线固定在低电平。然而类似于MAX1242这款需要CS/SS线的下降沿来触发的芯片,则必须将CC/SS线与主机相连。如下图,为一主一从连接方式。

wKgZomTVjWGAHoC_AADlDIbhgCg408.png

对于多个从机设备时,则每个从机都需要一根CS/SS线来与主机相连,从而达到主机能与任一从机通信的目的。如下图,为一主多从的连接方式。

wKgaomTVjWGAUkZ1AAKj7R4iWdk533.png

大多数从机设备都有着三态逻辑的特性,因此当设备未被选中时,它们的MISO信号线会变成高阻抗状态(电气断开)。没有三态输出的设备则需外接三态缓冲器才能与其他的从机设备共享SPI总线。

数据传输

在SPI通信中,SPI主机设备以从机设备支持的频率通过SCLK线给到SPI从机设备,这点也意味着从机是无法主动向主机发送数据的,只能主机轮询向从机发或者从机设备主动通过一个IO口来告知主机数据到达。

在SPI每个时钟周期内,都会进行一次全双工数据的传输。主机通过MOSI线上发送1bit时,从机也会在读取到之后通过MISO线发送1bit数据出去。这说明,即使只进行单工通信,也会保持此通信顺序。

SPI传输通常涉及到两个给定了字长的移位寄存器。例如在主机、从机中的8bit的移位寄存器。它们以虚拟环形拓扑连接,数据通常先从最高有效位被移出。在时钟沿,主机和从机都移出1bit数据从传输线上给到对方。在下一个时钟边沿来到时,双方的接收器再对传输线上的该bit进行采样,并将其设置为移位寄存器的新的最低有效位。在寄存器位被移出和移入后,主机和从机交换了寄存器值。如果需要交换更多数据,则重新加载移位寄存器并重复该过程。传输可以持续任意数量的时钟周期。完成后,主机停止切换时钟信号。如下图,为主从机之间的交互时的移位寄存器示意图。

wKgaomTVjWGAYv26AABC9-taNZI226.png

其中上图的通信流程如下:

1.SPI主机首先现将SS或CS线拉低,以此来告知SPI从机通信开始。

2. 主机通过发送SCLK时钟信号,来告知从机即将进行的读写操作。这里的SCLK时钟信号是由SPI的模式来决定是高电平还是低电平有效的,这点在稍后会进行介绍。

3. 主机(Master)将要发送的数据写到发送数据缓存区(Memory),缓存区经过移位寄存器(0~7),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。

4.从机(Slave)也将自己的串行移位寄存器(0~7)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

SPI通信的4种工作模式

SPI通信中有4种不同的操作模式,不同的从机设备可能在出厂时就被设置好了某种模式,并且无法更改。但是SPI通信必须处于同一种模式下才能进行。因此我们应该对自己手里的SPI主机设备进行模式的配置,也就是通过CPOL(时钟极性)和CPHA(时钟相位)来控制SPI主设备的通信模式,具体如下:

时钟极性(CPOL)定义了SCLK时钟线空闲状态时的电平:

1.CPOL=0,即SCLK=0,表示SCLK时钟信号线在空闲状态时的电平为低电平,因此有效状态为高电平。

2. CPOL=1,即SCLK=1,表示SCLK时钟信号线在空闲状态时的电平为高电平,因此有效状态为低电平。

时钟相位(CPHA)定义了数据位相对于时钟线的时序(即相位):

1. CPHA=0,即表示输出(out)端在上一个时钟周期的后沿改变数据,而输入(in)端在时钟周期的前沿(或不久之后)捕获数据。输出端保持数据有效直到当前时钟周期的尾部边缘。对于第一个时钟周期来说,第一位的数据必须在时钟前沿之前出现在MOSI线上。也就是一个CPHA=0的周期包括半个时钟空闲和半个时钟置位的周期。

2. CPHA=1,即表示输出(out)端在当前时钟周期的前沿改变数据,而输入(in)端在时钟周期的后沿(或不久之后)捕获数据。输出端保持数据有效直到下一个时钟周期的前沿。对于最后一个时钟周期来说,从机设备在片选信号消失之前保持MISO信号线有效。也就是一个CHPA=1的周期包括半个时钟置位和半个时钟空闲的周期。

注意:此处的前沿和后沿的意思表示在每个周期中第一个出现的边沿和最后一个出现的边沿。总的来说则为:当时钟为正向时钟时,时钟线的上升沿为前沿,时钟的下降沿为后沿,反之。

如下表,为SPI通信的4种模式:

wKgaomTVjWGADXH4AAEQkT3qOcw790.png

下图显示了时钟极性和相位的时序图。红线表示时钟的前沿,蓝线表示时钟的后沿。

wKgZomTVjWGAQum5AAKENvhYhxs204.png

SPI协议的优缺点

SPI的优点在于它有着比I2C更高的吞吐量,不被最大时钟速度所限制,可实现潜在的高速、极为简单的硬件接口,外围电路使用的上拉电阻是比I2C协议更少的,这意味着它具有比I2C的功耗更低、从机的时钟来源来自主机设备,无需新增精密振荡器、从机不需要唯一的地址、相对于并行接口而言,使用的引脚数目大大减少等优点。

但同时有着一定的缺点,例如SPI没有带内寻址、当使用多个不同模式的从机设备时,主机设备切换模式时重新初始化,会使得访问从机设备速度变慢、SPI从机设备没有硬件流控,只能通过主机自主的延迟下个时钟周期到来的时间、仅能在短距离通信等缺点。但能在避免SPI的缺点的方向来应用SPI的话,SPI的优点让它远远优于其他协议。

审核编辑:汤梓红

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

    关注

    33

    文章

    7648

    浏览量

    148533
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89674
  • 串行通信
    +关注

    关注

    4

    文章

    536

    浏览量

    35024
  • 通信总线
    +关注

    关注

    0

    文章

    40

    浏览量

    9791

原文标题:【干货】超全面!SPI通信协议详解

文章出处:【微信号:cdebyte,微信公众号:亿佰特物联网应用专家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SPI通信的4种工作模式

    SPI的英文全称为Serial Peripheral Interface,顾名思义为串行外设接口。SPI是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离通信。该接口由摩托罗拉
    发表于 09-30 11:10 8379次阅读

    超详细的SPI原理和通信模式

    SPI分为主、从两种模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个或多个从设备。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的
    发表于 02-29 12:33 494次阅读
    超详细的<b class='flag-5'>SPI</b>原理和<b class='flag-5'>通信</b><b class='flag-5'>模式</b>

    SPI接口的两模式

    ADI HMC系列该系列支持SPI接口,有两通信MODE,SPI_OPEN_MODE和SPI_HMC_MODE。这两
    发表于 11-05 07:03

    SPI模式

    SPI模式
    发表于 12-15 21:51 1次下载

    SPI通信原理 SPI的接线实例

    以主从方式来工作,这种模式通常是:一个主设备和一个或多个从设备,由主设备发起通信。需要至少 4 根线,然而事实
    的头像 发表于 12-01 14:04 1.7w次阅读

    SPI通信

    SPI简介SPI是一种串行外围设备通信接口,高速全双工通信总线,主要用于通信速率较高的场合。SPI
    发表于 11-24 15:06 50次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>

    SPI通信分析

    SPI通信分析许久不更,想你们了。SPI 模式的配置SPI通信配置STM官方的芯片手册中对于
    发表于 12-22 19:12 2次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>分析

    SPI通信

    SPI简介SPI是一种串行外围设备通信接口,高速全双工通信总线,主要用于通信速率较高的场合。SPI
    发表于 12-22 19:13 2次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>

    SPI通信简介

    目录(?)[-]SPI简介SPI特点1采用主-从模式Master-Slave 的控制方式2采用同步方式Synchronous传输数据3数据交换Data Exchanges4 SPI有四
    发表于 12-22 19:14 9次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>简介

    SPI通信协议讲解

    SPI通信协议讲解SPI通信概念SPI通信SPI
    发表于 12-22 19:19 25次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>协议讲解

    通信协议:SPI

    STM32模拟SPI通信协议SPI的简介:SPI是串行外设接口的缩写,是一种高速的,全双工、同步的串行通信总线;
    发表于 12-22 19:20 21次下载
    <b class='flag-5'>通信</b>协议:<b class='flag-5'>SPI</b>

    SPI接口通信协议详解:SPI时序、2线、3线、4线SPI及4种常用工作模式

    简介SPI通信原理比I2C要简单,它主要是主从方式通信。这种模式通常只有一个主机和一个或者多个从机,标准的SPI是4根线,分别是SSEL(片
    发表于 12-22 19:20 19次下载
    <b class='flag-5'>SPI</b>接口<b class='flag-5'>通信</b>协议详解:<b class='flag-5'>SPI</b>时序、2线、3线、4线<b class='flag-5'>SPI</b>及4种常用<b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    SD卡系列之spi模式---spi通信

    SD卡操作分为SPI模式与SDIO模式,这里选择SPI模式,DSP为SPI主机,SD卡为从机,本
    发表于 12-22 19:35 14次下载
    SD卡系列之<b class='flag-5'>spi</b><b class='flag-5'>模式</b>---<b class='flag-5'>spi</b><b class='flag-5'>通信</b>

    spi工作模式有几种

    SPI 四种工作模式 SPI 有四种工作模式,通过时钟极性(CPOL)和时钟相位(CPHA)的搭
    的头像 发表于 07-27 10:35 7439次阅读
    <b class='flag-5'>spi</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>有几种

    CW32的SPI单工模式主从通信介绍

    CW32的SPI单工模式主从通信介绍
    的头像 发表于 10-24 15:50 421次阅读
    CW32的<b class='flag-5'>SPI</b>单工<b class='flag-5'>模式</b>主从<b class='flag-5'>通信</b>介绍