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

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

3天内不再提示

一文讲完SPI通讯,看后不懂来找我

单片机技术宅 来源:ADI 作者:ADI 2021-11-01 10:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

外设接口 (SPI) 是微控制器和外围 IC(如传感器ADCDAC、 移位寄存器、SRAM等)之间使用最广泛的接口之一。

SPI 是一种同步、全双工、主从式接口。来自主机或从机的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。SPI 接口可以是3线式或4线式。本文重点介绍常用的4线SPI接口。

1 接口

4 线 SPI 器件有四个信号

时钟(SPICLK,SCLK)

片选(CS)主机输出

从机输入(MOSI)主机输入

从机输出(MISO)

产生时钟信号的器件称为主机。主机和从机之间传输的数据与主机产生的时钟同步。同I2C接口相比,SPI器件支持更高的时钟频率。用户应查阅产品数据手册以了解SPI接口的时钟频率规格。

SPI接口只能有一个主机,但可以有一个或多个从机。图1显示了主机和从机之间的SPI连接。

36f1c408-3a29-11ec-82a9-dac502259ad0.png

图1. 含主机和从机的SPI配置

来自主机的片选信号用于选择从机。这通常是一个低电平有效信号,拉高时从机与SPI总线断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。本文中的片选信号始终是低电平有效信号。

MOSI和MISO是数据线。MOSI将数据从主机发送到从机,MISO将数据从从机发送到主机。

2 数据传输

要开始SPI通信,主机必须发送时钟信号,并通过使能CS信号选择从机。片选通常是低电平有效信号。因此,主机必须在该信号上发送逻辑0以选择从机。

SPI是全双工接口,主机和从机可以分别通过MOSI和MISO线路同时发送数据。在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI)上的数据)同时进行。串行时钟沿同步数据的移位和采样。

SPI接口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数据。欲确定使用SPI接口传输的数据位数,请参阅器件数据手册。

3 时钟极性和时钟相位

在SPI中,主机可以选择时钟极性和时钟相位。在空闲状态期间,CPOL位设置时钟信号的极性。空闲状态是指传输开始时CS为高电平且在向低电平转变的期间,以及传输结束时CS为低电平且在向高电平转变的期间。CPHA位选择时钟相位。

根据CPHA位的状态,使用时钟上升沿或下降沿来采样和/或移位数据。主机必须根据从机的要求选择时钟极性和时钟相位。根据CPOL和CPHA位的选择,有四种SPI模式可用。表1显示了这4种SPI模式。

3789ef30-3a29-11ec-82a9-dac502259ad0.jpg

表1.通过CPOL和CPHA选择SPI模式

图2至图5显示了四种SPI模式下的通信示例。在这些示例中,数据显示在MOSI和MISO线上。传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。请注意,这些图形仅供参考。要成功进行SPI通信,用户须参阅产品数据手册并确保满足器件的时序规格。

37b5a9e0-3a29-11ec-82a9-dac502259ad0.jpg

图2. SPI模式0,CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出

图3给出了SPI模式1的时序图。在此模式下,时钟极性为0,表示时钟信号的空闲状态为低电平。此模式下的时钟相位为1,表示数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。

37ca4be8-3a29-11ec-82a9-dac502259ad0.jpg

图3. SPI模式1,CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出

37dc22dc-3a29-11ec-82a9-dac502259ad0.jpg

图4. SPI模式2,CPOL = 1,CPHA = 1:CLK空闲状态 = 高电平,数据在下降沿采样,并在上升沿移出

图4给出了SPI模式2的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为1,表示数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。

380f6e94-3a29-11ec-82a9-dac502259ad0.jpg

图5. SPI模式3,CPOL = 1,CPHA = 0:CLK空闲状态 = 高电平,数据在上升沿采样,并在下降沿移出

图5给出了SPI模式3的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为0,表示数据在上升沿采样(由橙色虚线显示),并且数据在时钟信号的下降沿移出(由蓝色虚线显示)。

4 多从机配置

多个从机可与单个SPI主机一起使用。从机可以采用常规模式连接,或采用菊花链模式连接。

常规SPI模式

在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用于所选的从机。如果使能多个片选信号,则MISO线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。

从图6可以看出,随着从机数量的增加,来自主机的片选线的数量也增加。这会快速增加主机需要提供的输入和输出数量,并限制可以使用的从机数量。可以使用其他技术来增加常规模式下的从机数量,例如使用多路复用器产生片选信号。

384ecdbe-3a29-11ec-82a9-dac502259ad0.jpg

图6. 多从机SPI配置

菊花链模式

在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。

使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。例如在图7所示的8位系统中,为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。

3886e06e-3a29-11ec-82a9-dac502259ad0.jpg

图7. 多从机SPI菊花链配置

图8显示了时钟周期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模式。请参阅产品数据手册以确认菊花链是否可用。

38970c78-3a29-11ec-82a9-dac502259ad0.jpg

图8. 菊花链配置:数据传播

ADI 支持 SPI 的模拟开关与多路转换器

ADI公司最新一代支持SPI的开关可在不影响精密开关性能的情况下显著节省空间。本文的这一部分将讨论一个案例研究,说明支持SPI的开关或多路复用器如何能够大大简化系统级设计并减少所需的GPIO数量。

ADG1412是一款四通道、单刀单掷(SPST)开关,需要四个GPIO连接到每个开关的控制输入。图9显示了微控制器和一个ADG1412之间的连接。

38c8d01e-3a29-11ec-82a9-dac502259ad0.jpg

图9. 微控制器GPIO用作开关的控制信号

随着电路板上开关数量的增加,所需GPIO的数量也会显著增加。例如,当设计一个测试仪器系统时,会使用大量开关来增加系统中的通道数。在4×4交叉点矩阵配置中,使用四个ADG1412。此系统需要16个GPIO,限制了标准微控制器中的可用GPIO。图10显示了使用微控制器的16个GPIO连接四个ADG1412。

390262ac-3a29-11ec-82a9-dac502259ad0.jpg

图10. 在多从机配置中,所需GPIO的数量大幅增加

5 如何减少IO数量

一种方法是使用串行转并行转换器,如图11所示。该器件输出的并行信号可连接到开关控制输入,器件可通过串行接口SPI配置。此方法的缺点是外加器件会导致物料清单增加。

3962593c-3a29-11ec-82a9-dac502259ad0.jpg

图11. 使用串行转并行转换器的多从机开关

另一种方法是使用SPI控制的开关。此方法的优点是可减少所需GPIO的数量,并且还能消除外加串行转并行转换器的开销。如图12所示,不需要16个微控制器GPIO,只需要7个微控制器GPIO就可以向4个ADGS1412提供SPI信号。开关可采用菊花链配置,以进一步优化GPIO数量。在菊花链配置中,无论系统使用多少开关,都只使用主机(微控制器)的四个GPIO。

3973b182-3a29-11ec-82a9-dac502259ad0.jpg

图12. 支持SPI的开关节省微控制器GPIO

图13用于说明目的。ADGS1412数据手册建议在SDO引脚上使用一个上拉电阻。为简单起见,此示例使用了四个开关。随着系统中开关数量的增加,电路板简单和节省空间的优点很重要。

39aa4e68-3a29-11ec-82a9-dac502259ad0.jpg

图13. 菊花链配置的SPI开关可进一步优化GPIO

在6层电路板上放置8个四通道SPST开关,采用4×8交叉点配置时,ADI 公司支持 SPI 的开关可节省20%的总电路板空间。

编辑:jq

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

    关注

    49

    文章

    8910

    浏览量

    166041
  • 传感器
    +关注

    关注

    2578

    文章

    55833

    浏览量

    795534
  • IC
    IC
    +关注

    关注

    36

    文章

    6497

    浏览量

    186764
  • adc
    adc
    +关注

    关注

    100

    文章

    7977

    浏览量

    557394
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1907

    浏览量

    102455

原文标题:一文讲完SPI通讯,看后不懂来找我

文章出处:【微信号:chuxue_MCU,微信公众号:单片机技术宅】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于使用SPI与ADATE318通讯的问题求解

    现在正在通过SPI与ADATE318通讯,复位时序切正常,在提供段时钟后,Busy角正确拉高,如下图所示: 然后试图读取318寄存器,发现318始终返回我上
    发表于 05-11 07:46

    瑞萨RA系列FSP库开发实战指南之SPI通讯协议的物理层和协议层简介

    RA芯片的SPI分为简单SPI和普通SPI,简单SPI就是SCI模块(Serial Communications Interface)中的SPI
    的头像 发表于 02-04 08:23 1.2w次阅读
    瑞萨RA系列FSP库开发实战指南之<b class='flag-5'>SPI</b><b class='flag-5'>通讯</b>协议的物理层和协议层简介

    瑞萨RA系列FSP库开发实战指南之SPI通讯协议的结构和功能

    以RA6M5为例,SPI的功能结构框图如下图所示。接下来我们大致地研究下它的结构和功能。
    的头像 发表于 02-03 13:53 1123次阅读
    瑞萨RA系列FSP库开发实战指南之<b class='flag-5'>SPI</b><b class='flag-5'>通讯</b>协议的结构和功能

    SPI NOR Flash和SPI NAND Flash存储芯片的区别

    SPI NOR Flash与SPI NAND Flash并非相互替代,而是互补关系。SPI NOR胜在读取速度快、使用简单、可靠性高,是代码存储的理想选择。SPI NAND则以其大容量
    的头像 发表于 01-29 16:58 1068次阅读
    <b class='flag-5'>SPI</b> NOR Flash和<b class='flag-5'>SPI</b> NAND Flash存储芯片的区别

    高性能SPI NOR FLASH芯片ZB25VQ系列推荐

    在嵌入式系统、物联网设备及各类存储应用中,SPI NOR FLASH芯片因其接口简单、功耗低、读写速度快等特点,成为代码存储与数据缓存的常见选择。SPI NOR FLASH是种基于SPI
    的头像 发表于 12-01 14:52 995次阅读

    AT32F4xx SPI使用单工模式通讯

    AT32F4xx SPI使用单工模式通讯 示例目的演示AT32F403Axx SPI使用单工模式通讯,其余系列使用方式与此类似。 注:本示例代码是基于雅特力提供的V2.x.x板级支持
    发表于 11-05 13:34

    SPI使用单工模式通讯

    SPI使用单工模式通讯 本帖子演示AT32F403Axx SPI使用单工模式通讯,其余系列使用方式与此类似。注:本示例代码是基于雅特力提供的V2.x.x板级支持包(BSP)而开发,对
    发表于 10-20 16:24

    数字电压表设计教程之使用FPGA实现SPI协议通讯

    LTC2308通过个标准4线SPI数字接口进行通信。LTC2308模数转换芯片有8个ADC通道和12位的分辨率,输入信号时钟频率范围不超过500KHz,按照Nyquist采样定理则建议输入信号在250KHz以下。
    的头像 发表于 10-07 09:22 1912次阅读
    数字电压表设计教程之使用FPGA实现<b class='flag-5'>SPI</b>协议<b class='flag-5'>通讯</b>

    蓝牙打印机电路怎么设计?芯片如何选型?APP和小程序的BLE通讯协议如何制定?

    与蓝牙芯片通讯的BLE协议怎么制定?蓝牙BLE芯片如何选型?给你讲解清楚
    的头像 发表于 09-08 10:02 1486次阅读
    蓝牙打印机电路怎么设计?芯片如何选型?APP和小程序的BLE<b class='flag-5'>通讯</b>协议如何制定?

    谷歌查找我的设备配件(Google Find My Device Accessory)详解和应用

    物品。为了更好的理解它的工作原理,我们先来了解下谷歌查找我的设备网络FMDN(Google find my device network)。FMDN由四部分组成:附件(Accessory),所有者
    发表于 08-31 21:10

    深入剖析SPI协议

    SPI,全称(Serial Peripheral interface)是由摩托罗拉公司首先定义的协议,中文名为串型外围设备接口。SPI种高速全双工的总线协议。
    的头像 发表于 08-21 15:04 4361次阅读
    深入剖析<b class='flag-5'>SPI</b>协议

    释永信的事,让我重新思考了颗“连接器”的良心——从佛门“塌房”聊聊工程师的诚意与边界

    但如果你也在研发、采购,或者创业的路上,遇到连接器相关的问题,欢迎你来找我聊聊。 我可能不懂佛法,但我愿意丝不苟地,给你份技术的诚意。 愿我们不靠浮夸立人,也不靠套路做事。 靠
    的头像 发表于 07-30 14:51 712次阅读
    释永信的事,让我重新思考了<b class='flag-5'>一</b>颗“连接器”的良心——从佛门“塌房”聊聊工程师的诚意与边界

    SPI通信笔记:基础+动图+时序图+总结,吃透!

    SPI现在已经成为MCU和外围设备之间最常用的通信方式了。它是种同步、全双工、主从式的通信接口。工作原理其实很直接:主机产生时钟信号,从机跟着这个时钟同步收发数据。允许双向传输,可以在同时钟周期内进行主从设备的数据交换。
    的头像 发表于 07-29 14:15 8515次阅读
    <b class='flag-5'>SPI</b>通信笔记:基础+动图+时序图+总结,<b class='flag-5'>一</b><b class='flag-5'>文</b>吃透!

    AS32系列MCU调试教程 SPI调试的常见问题解析

    协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 中
    的头像 发表于 06-27 18:10 959次阅读
    AS32系列MCU调试教程 <b class='flag-5'>SPI</b>调试的常见问题解析

    使用nRFF54L15初始化SPI

    【NCS随笔】 NCS使用了Zyphyr操作系统,以及设备树的概念,所以有许多客户对于不了解,今天copySPI初始化的例程,给读者看 Nordic官方课程 官方已经写了SPI
    的头像 发表于 06-27 14:55 998次阅读
    使用nRFF54L15初始化<b class='flag-5'>一</b>个<b class='flag-5'>SPI</b>