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

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

接口

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

4线SPI器件有四个信号:

  • 时钟(SPI CLK, SCLK)
  • 片选(CS)
  • 主机输出、从机输入(MOSI)
  • 主机输入、从机输出(MISO)

产生时钟信号的器件称为主机。主机和从机之间传输的数据与主机产生的时钟同步。同I2C接口相比,SPI器件支持更高的时钟频率。用户应查阅产品数据手册以了解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显示了这4种SPI模式。

表1. 通过CPOL和CPHA选择SPI模式
SPI 模式 CPOL CPHA 空闲状态下的时钟极性 用于采样和/或移位数据的时钟相应
0 0 0 逻辑低电平 数据在上升沿采样,在下降沿移出
1 0 1 逻辑低电平 数据在下降沿采样,在上升沿移出
2 1 1 逻辑低电平 数据在下降沿采样,在上升沿移出
3 1 0 逻辑低电平 数据在上升沿采样,在下降沿移出

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

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

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

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

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

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

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

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

自己注:四种模式都是低电平的期间数据变化更新,在移位寄存器内部发生2020.1.11

位数据的更新改变是在时钟低电平期间发生,在移位寄存器内部发生而采集和输出分别在上升沿和下降沿发生2020.1.11

多从机配置

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

常规SPI模式:

图6. 多从机SPI配置。

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

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

菊花链模式:

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

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

使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。例如在图7所示的8位系统中,为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。图8显示了时钟周期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模式。请参阅产品数据手册以确认菊花链是否可用。

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

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

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

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

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

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

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

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

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

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

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

开关可采用菊花链配置,以进一步优化GPIO数量。在菊花链配置中,无论系统使用多少开关,都只使用主机(微控制器)的四个GPIO。

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

图13用于说明目的。ADGS1412数据手册建议在SDO引脚上使用一个上拉电阻。有关菊花链模式的更多信息,请参阅ADGS1412数据手册。为简单起见,此示例使用了四个开关。随着系统中开关数量的增加,电路板简单和节省空间的优点很重要。在6层电路板上放置8个四通道SPST开关,采用4×8交叉点配置时,ADI公司支持SPI的开关可节省20%的总电路板空间。文章"精密SPI开关配置
提高通道密度"详细说明了精密SPI开关配置如何提高通道密度。

ADI公司提供多种支持SPI的模拟开关与多路转换器。欲了解更多信息,请访问这里。

参考电路

ADuCM3029数据手册。ADI公司,2017年3月。

Nugent, Stephen。"精密SPI开关配置提高通道密度”。《模拟对话》,2017年5月。

Usach, Miguel。应用笔记AN-1248:SPI接口.。ADI公司,2015年9月。

ADI官方解释在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI)上的数据)相关推荐

  1. Python数据清洗分列函数,解决多字段数据分列的串行问题

    目标:对多字段实现分列,有效解决串行问题 提取数据,分列"岗位属性"字段: 我们爬虫或清洗数据时经常会遇到多字段在同一列的情况,这里以字段"岗位属性"为例: 可 ...

  2. STM32 OLED显示屏--SPI通信知识汇总

    备注:在OLED显示屏部分,单片机是通过SPI和OLED进行通信的. 文章目录 目录 文章目录 一.SPI时序通信 二.SPI通信的分类 1.硬件SPI 2.软件SPI 三.硬件SPI SPI特性 硬 ...

  3. linux SPI通信超时,提高SPI时钟时通信异常的案例分享

    有人采用STM32H743ZI芯片的SPI外设跟ADC器件通信,发现一旦SPI的SCK时钟超过25MHz时,比如50Mhz,就会发生读取数据失败,并提示Busy忙信息或ERR错误信息.反正只要串行时钟 ...

  4. SPI通信原理---STM32F4--HAL

    SPI接口原理 SPI是一种高速全双工同步通信,在芯片管脚上占用四根线,主要应用在EEPROM.FLASH.实时时钟.AD转换器,还有数字信号处理器和数字信号解码器之间. SPI接口使用4根线通信. ...

  5. STM32CubeMX系列08——SPI通信(W25Q64、NRF24L01无线模块)

    文章目录 1. 准备工作 1.1. 所用硬件 1.2. SPI 简介 1.3. 生成工程 1.3.1. 创建工程选择主控 1.3.2. 系统配置 1.3.3. 配置工程目录 2. 读写EEPROM实验 ...

  6. FPGA基础之SPI通信

    本文主要描述SPI在FPGA上的应用实现,描述SPI时序在FPGA上的具体实现方式 SPI协议 SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公 ...

  7. SPI 通信原理详述

    SPI 通信原理详述 1.物理层 1.1 SPI接口 1.2 SPI互连 2 协议层 2.1 SPI时序 1)时钟极性 2)时钟相位 2.2数据格式 3.传输速率 4 优缺点 SPI(Serial P ...

  8. ESP8266 SPI通信

    设备与设备之间的通信往往都伴随着总线的使用,而用得比较多的就当属于SPI总线和I2C总线,而恰巧NodeMcu也支持这两种总线通信 1. SPI总线--SPI类库的使用 SPI是串行外设接口(Seri ...

  9. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列

    第24章     SPI-读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

最新文章

  1. shell 下使用 echo 打印彩色字体及彩色背景
  2. 如何给女朋友解释并发与并行的区别?
  3. python时间序列滞后命令_如何在Python Pandas回归模型中使用滞后的时间序列变量?...
  4. 华为鸿蒙15日上市,华为鸿蒙什么时候上市
  5. rowid 对应mysql_请教一下相当于MySQL中Oracle的RowID
  6. 【POJ - 1502】MPI Maelstrom(Dijkstra单源最短路--求一点到其余个点的最小值的最大值)
  7. can't select mysql database_ERROR 1006 (HY000) Can't create database (errno: 13) MySQL 5.6.12
  8. (十)用于面部识别的混合边缘人工智能:下一步
  9. 【恋上数据结构】动态规划(找零钱、最大连续子序列和、最长上升子序列、最长公共子序列、最长公共子串、0-1背包)
  10. #import和@class 的区别
  11. 0028-如何在CDH未启用认证的情况下安装及使用Sentry
  12. Java白盒测试工具
  13. Keras-Unet-语义分割
  14. 蒙版操作—剪切蒙版制作艺术字
  15. 交换机测试丢包软件,交换机丢包问题定位
  16. <statement> or DELIMITER expected, got ‘id‘
  17. 戴尔服务器r720矩阵卡无响应,戴尔r720阵列卡驱动
  18. 区块链从业者地摊致富秘籍
  19. HTML5中常见的新语义化标签
  20. kali 2020.3中安装pyrit无法定位软件包

热门文章

  1. 赠书:深入理解 Spring Cloud 与实战
  2. Liunx实现超级签名详细攻略(一)超级签名简介
  3. LINUX SHELL宝塔判断域名变化IP脚本
  4. 百度地图定位失败,显示经纬度(4.9E-324,4.9E-324),错误码-162
  5. 《Dream it possible》【梦想能成真】——最具感人,激励,追梦的英文歌曲,华为主题曲。
  6. GeoServer结合FWTools切片工具发布影像金字塔切片
  7. iOS-获取当前设备的局域网以及链接的WiFi分配的IP地址
  8. 文读懂安防视频监控系统中H.265、SVAC、GB/T28181、ONVIF、PSIA的区别。
  9. flash游戏代码html5,Flash贪吃蛇游戏AS代码翻译
  10. 二进制及二进制的转换