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

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

3天内不再提示

SPI接口如何帮助减少系统板设计中的数字GPIO数量

星星科技指导员 来源:ADI 作者:Piyu Dhaker 2022-12-23 10:33 次阅读

串行外设接口 (SPI) 是微控制器和外设 IC(如传感器ADCDAC、移位寄存器、SRAM 等)之间使用最广泛的接口之一。本文简要介绍SPI接口,然后介绍ADI公司支持SPI的开关和多路复用器,以及它们如何帮助减少系统板设计中的数字GPIO数量。

SPI 是一个同步的、基于全双工主子节点的接口。来自主节点或子节点的数据在时钟上升沿或下降沿同步。主节点和子节点可以同时传输数据。SPI 接口可以是 3 线或 4 线。本文重点介绍流行的4线SPI接口。

接口

205973_fig_01.svg?la=en&imgver=3

图1.具有主节点和子节点的 SPI 配置。

4线SPI器件有四个信号

时钟 (SPI CLK, SCLK)

芯片选择(CS)

主输出,子节点输入 (MOSI)

主输入,子节点输出 (MISO)

产生时钟信号的设备称为主设备。主节点和子节点之间传输的数据与主节点生成的时钟同步。SPI 器件支持的时钟频率比 I 高得多2C 接口。用户应查阅产品数据手册,了解SPI接口的时钟频率规格。

SPI 接口只能有一个主节点,并且可以有一个或多个子节点。图 1 显示了主节点和子节点之间的 SPI 连接。

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

MOSI和MISO是数据线。MOSI将数据从主节点传输到子节点,MISO将数据从子节点传输到主节点。

数据传输

要开始SPI通信,主节点必须发送时钟信号并通过启用CS信号来选择子节点。通常片选是低电平有效信号;因此,主节点必须在此信号上发送逻辑 0 以选择子节点。SPI 是一个全双工接口;主节点和子节点可以分别通过 MOSI 和 MISO 线路同时发送数据。在SPI通信期间,数据同时被发送(串行移出到MOSI/SDO总线上)和接收(总线(MISO/SDI)上的数据被采样或读入)。串行时钟边沿同步数据的移位和采样。SPI接口使用户能够灵活地选择时钟的上升沿或下降沿来采样和/或转换数据。请参考器件数据手册,确定使用SPI接口传输的数据位数。

时钟极性和时钟相位

在SPI中,主电源可以选择时钟极性和时钟相位。CPOL 位设置空闲状态下时钟信号的极性。空闲状态定义为 CS 在传输开始时为高并过渡到低电平的时间段,以及当 CS 为低并在传输结束时过渡到高电平的时间段。CPHA位选择时钟相位。根据CPHA位,上升或下降时钟边沿用于采样和/或移位数据。主节点必须根据子节点的要求选择时钟极性和时钟相位。根据CPOL和CPHA位选择,有四种SPI模式可用。表1显示了四种SPI模式。

SPI 模式 中波尔 注册会计师协会 空闲状态下的时钟极性 用于采样和/或转换数据的时钟相位
0 0 0 逻辑低电平 数据在上升沿采样,在下降沿移出
1 0 1 逻辑低电平 数据在下降沿采样,在上升沿移出
2 1 0 逻辑高电平 数据在上升沿采样,在下降沿移出
3 1 1 逻辑高电平 数据在下降沿采样,在上升沿移出

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

pYYBAGOlE2eAatF6AABWYuAfL0Y056.png?la=en&imgver=1

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

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

poYBAGOlE2iABBhVAABZelGUE30358.png?la=en&imgver=1

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

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

pYYBAGOlE2mAD4q-AABkVP6wLgU340.png?la=en&imgver=1

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

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

pYYBAGOlE2uAILpDAABm3scNwPg852.png?la=en&imgver=1

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

多子节点配置

多个子节点可以与单个 SPI 主节点一起使用。子节点可以以常规模式或菊花链模式连接。

常规 SPI 模式:

205973_fig_06.svg?la=en&imgver=3

图6.多子节点 SPI 配置。

在常规模式下,需要从主节点为每个子节点选择单独的芯片。一旦主器件使能(拉低)片选信号,MOSI/MISO线路上的时钟和数据就可用于所选子节点。如果启用了多个片选信号,则MISO线路上的数据将损坏,因为主节点无法识别哪个子节点正在传输数据。

从图6可以看出,随着子节点数量的增加,来自主节点的片选线数量也在增加。这可以快速增加主节点所需的输入和输出数量,并限制可以使用的子节点数量。在常规模式下,可以使用不同的技术来增加子节点的数量;例如,使用多路复用器生成片选信号。

菊花链法:

205973_fig_07.svg?la=en&imgver=3

图7.多子节点 SPI 菊花链配置。

在菊花链模式下,子节点的配置使得所有子节点的片选信号绑定在一起,数据从一个子节点传播到下一个子节点。在此配置中,所有子节点同时接收相同的 SPI 时钟。来自主节点的数据直接连接到第一个子节点,该子节点向下一个子节点提供数据,依此类推。

在这种方法中,当数据从一个子节点传播到下一个子节点时,传输数据所需的时钟周期数与菊花链中的子节点位置成正比。例如,在图7中,在8位系统中,需要24个时钟脉冲才能在3位系统上提供数据。RD子节点,而常规SPI模式下只有8个时钟脉冲。图8显示了通过菊花链传播的时钟周期和数据。并非所有 SPI 器件都支持菊花链模式。请参阅产品数据表以确认是否有菊花链可用。

poYBAGOlE22AYAUCAABPzqJnGbw823.png?la=en&imgver=1

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

ADI公司支持SPI的开关和多路复用器

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

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

205973_fig_09.svg?la=en&imgver=3

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

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

205973_fig_10.svg?la=en&imgver=2

图 10.在多子节点配置中,所需的 GPIO 数量大大增加。

减少 GPIO 数量的一种方法是使用串行至并行转换器,如图 11 所示。该器件输出可连接到开关控制输入的并行信号,并且可通过串行接口SPI进行配置。这种方法的缺点是通过引入附加组件来增加物料清单。

205973_fig_11.svg?la=en&imgver=3

图 11.使用串行至并行转换器的多子节点交换机。

另一种方法是使用 SPI 控制的开关。这种方法的优点是减少了所需的GPIO数量,还消除了额外的串行至并行转换器的开销。如图12所示,只需7个微控制器GPIO即可向4个ADGS1412提供SPI信号,而不是16个微控制器GPIO。

205973_fig_12.svg?la=en&imgver=3

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

交换机可以配置为菊花链配置,以进一步优化 GPIO 计数。在菊花链配置中,无论系统中使用的开关数量如何,主(微控制器)仅使用四个 GPIO。

205973_fig_13.svg?la=en&imgver=3

图 13.支持以菊花链形式配置的交换机,以进一步优化 GPIO。

图 13 用于说明目的。ADGS1412数据手册建议在SDO引脚上安装上拉电阻。为简单起见,此示例中使用了四个开关。随着系统中开关数量的增加,电路板简单和节省空间的好处是显著的。支持ADI SPI的开关采用4×8交叉点配置,6层板上有8个四通道SPST开关,整体电路板空间减少20%。

审核编辑:郭婷

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

    关注

    2525

    文章

    48129

    浏览量

    740205
  • 接口
    +关注

    关注

    33

    文章

    7648

    浏览量

    148529
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89674
收藏 人收藏

    评论

    相关推荐

    基于GPIO模拟的SPI接口驱动设计与实现

    SPI总线是我们常用的串行设备接口,一般情况下我们都会适应硬件SPI接口,但有些时候当硬件端口不足时,我们也希望可以使用软件来模拟SPI硬件
    发表于 12-07 16:21 4683次阅读
    基于<b class='flag-5'>GPIO</b>模拟的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>驱动设计与实现

    基于SPI接口的模拟开关提高通道密度

    Stephen Nugent摘要设计一个要求高通道密度的系统时,例如在测试仪器仪表,电路上通常需要包括大量开关。当使用并行接口控制的开关时,控制开关所需的逻辑线路以及用于生成
    发表于 10-18 10:43

    SPI接口有什么作用?

    串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。本文先简要说明SPI接口
    发表于 07-31 06:40

    采用SPI接口的模拟开关提高通道密度

    ,该数据被传送至链(像一个移位寄存器)的所有器件。这个示例解决方案的尺寸是30 mm x 18 mm,面积为540 mm2。以菊花链形式使用SPI接口可大大减少串行转并行转换器和
    发表于 10-10 08:00

    一文详解SPI接口

    来源:易特创芯串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。本文先简要说明SPI
    发表于 10-22 18:05

    4线SPI接口是什么?有哪几个信号?

    串行外设接口SPI)是什么?4线SPI接口是什么?有哪几个信号?如何去减少GPIO
    发表于 06-28 08:44

    数字接口系列文章之SPI总线

    数字接口系列文章之SPI总线  串行外设接口 (SPI) 总线是一种运行于全双工模式下的同步串行数据链路。用于在单个主节点和一个或多个从节
    发表于 01-08 10:46 817次阅读
    <b class='flag-5'>数字</b><b class='flag-5'>接口</b>系列文章之<b class='flag-5'>SPI</b>总线

    SPI接口简介 如何减少系统电路板设计中的数字GPIO数量

    串行外设接口SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。本文先简要说明SPI接口
    发表于 07-16 09:37 2537次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>简介 如何<b class='flag-5'>减少</b><b class='flag-5'>系统</b>电路板设计中的<b class='flag-5'>数字</b><b class='flag-5'>GPIO</b><b class='flag-5'>数量</b>

    可配置GPIO模拟SPI总线的设计和实现过程分析

    在嵌入式系统处理器中有相当一部分处理器不带SPI接口,但基丁SPI接口的设备非常丰富,此外,SPI
    的头像 发表于 10-04 14:10 3832次阅读
    可配置<b class='flag-5'>GPIO</b>模拟<b class='flag-5'>SPI</b>总线的设计和实现过程分析

    详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    6. I2C接口工作模式7. 硬件拉高拉低的过程8. 一对多9. 开发流程三. SPI1. 什么是SPI?2. SPI优与缺点3. SPI
    发表于 12-05 12:51 21次下载
    详细介绍<b class='flag-5'>GPIO</b>、I2C、<b class='flag-5'>SPI</b>通讯原理以及物理层原理

    详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    6. I2C接口工作模式7. 硬件拉高拉低的过程8. 一对多9. 开发流程三. SPI1. 什么是SPI?2. SPI优与缺点3. SPI
    发表于 12-05 13:21 9次下载
    详细介绍<b class='flag-5'>GPIO</b>、I2C、<b class='flag-5'>SPI</b>通讯原理以及物理层原理

    数字接口(续)— SPI 总线

    数字接口(续)— SPI 总线
    发表于 11-07 08:07 0次下载
    <b class='flag-5'>数字</b><b class='flag-5'>接口</b>(续)— <b class='flag-5'>SPI</b> 总线

    支持SPI的开关和多路复用器减少设计数字GPIO数量

    串行外设接口SPI) 是微控制器和外设 IC(如传感器、ADC、DAC、移位寄存器、SRAM 等)之间使用最广泛的接口之一。SPI是一个同步的、全双工的主从
    的头像 发表于 11-29 17:36 2482次阅读
    支持<b class='flag-5'>SPI</b>的开关和多路复用器<b class='flag-5'>减少</b>设计<b class='flag-5'>数字</b><b class='flag-5'>GPIO</b><b class='flag-5'>数量</b>

    SPI接口简介

    串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用较广泛的接口之一。本文先简要说明SPI接口
    的头像 发表于 06-17 09:13 4657次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>简介

    SPI协议优缺点 如何减少GPIO数量

    如何减少GPIO数量? 一种方法是使用串行转并行转换器,如图所示。该器件输出的并行信号可连接到开关控制输入,器件可通过串行接口SPI配置。此
    的头像 发表于 07-21 10:17 637次阅读
    <b class='flag-5'>SPI</b>协议优缺点 如何<b class='flag-5'>减少</b><b class='flag-5'>GPIO</b><b class='flag-5'>数量</b>