ADI官方解释在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI)上的数据)
串行外设接口(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模式。
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)上的数据)相关推荐
- Python数据清洗分列函数,解决多字段数据分列的串行问题
目标:对多字段实现分列,有效解决串行问题 提取数据,分列"岗位属性"字段: 我们爬虫或清洗数据时经常会遇到多字段在同一列的情况,这里以字段"岗位属性"为例: 可 ...
- STM32 OLED显示屏--SPI通信知识汇总
备注:在OLED显示屏部分,单片机是通过SPI和OLED进行通信的. 文章目录 目录 文章目录 一.SPI时序通信 二.SPI通信的分类 1.硬件SPI 2.软件SPI 三.硬件SPI SPI特性 硬 ...
- linux SPI通信超时,提高SPI时钟时通信异常的案例分享
有人采用STM32H743ZI芯片的SPI外设跟ADC器件通信,发现一旦SPI的SCK时钟超过25MHz时,比如50Mhz,就会发生读取数据失败,并提示Busy忙信息或ERR错误信息.反正只要串行时钟 ...
- SPI通信原理---STM32F4--HAL
SPI接口原理 SPI是一种高速全双工同步通信,在芯片管脚上占用四根线,主要应用在EEPROM.FLASH.实时时钟.AD转换器,还有数字信号处理器和数字信号解码器之间. SPI接口使用4根线通信. ...
- STM32CubeMX系列08——SPI通信(W25Q64、NRF24L01无线模块)
文章目录 1. 准备工作 1.1. 所用硬件 1.2. SPI 简介 1.3. 生成工程 1.3.1. 创建工程选择主控 1.3.2. 系统配置 1.3.3. 配置工程目录 2. 读写EEPROM实验 ...
- FPGA基础之SPI通信
本文主要描述SPI在FPGA上的应用实现,描述SPI时序在FPGA上的具体实现方式 SPI协议 SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公 ...
- SPI 通信原理详述
SPI 通信原理详述 1.物理层 1.1 SPI接口 1.2 SPI互连 2 协议层 2.1 SPI时序 1)时钟极性 2)时钟相位 2.2数据格式 3.传输速率 4 优缺点 SPI(Serial P ...
- ESP8266 SPI通信
设备与设备之间的通信往往都伴随着总线的使用,而用得比较多的就当属于SPI总线和I2C总线,而恰巧NodeMcu也支持这两种总线通信 1. SPI总线--SPI类库的使用 SPI是串行外设接口(Seri ...
- 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列
第24章 SPI-读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
最新文章
- shell 下使用 echo 打印彩色字体及彩色背景
- 如何给女朋友解释并发与并行的区别?
- python时间序列滞后命令_如何在Python Pandas回归模型中使用滞后的时间序列变量?...
- 华为鸿蒙15日上市,华为鸿蒙什么时候上市
- rowid 对应mysql_请教一下相当于MySQL中Oracle的RowID
- 【POJ - 1502】MPI Maelstrom(Dijkstra单源最短路--求一点到其余个点的最小值的最大值)
- can't select mysql database_ERROR 1006 (HY000) Can't create database (errno: 13) MySQL 5.6.12
- (十)用于面部识别的混合边缘人工智能:下一步
- 【恋上数据结构】动态规划(找零钱、最大连续子序列和、最长上升子序列、最长公共子序列、最长公共子串、0-1背包)
- #import和@class 的区别
- 0028-如何在CDH未启用认证的情况下安装及使用Sentry
- Java白盒测试工具
- Keras-Unet-语义分割
- 蒙版操作—剪切蒙版制作艺术字
- 交换机测试丢包软件,交换机丢包问题定位
- <statement> or DELIMITER expected, got ‘id‘
- 戴尔服务器r720矩阵卡无响应,戴尔r720阵列卡驱动
- 区块链从业者地摊致富秘籍
- HTML5中常见的新语义化标签
- kali 2020.3中安装pyrit无法定位软件包
热门文章
- 赠书:深入理解 Spring Cloud 与实战
- Liunx实现超级签名详细攻略(一)超级签名简介
- LINUX SHELL宝塔判断域名变化IP脚本
- 百度地图定位失败,显示经纬度(4.9E-324,4.9E-324),错误码-162
- 《Dream it possible》【梦想能成真】——最具感人,激励,追梦的英文歌曲,华为主题曲。
- GeoServer结合FWTools切片工具发布影像金字塔切片
- iOS-获取当前设备的局域网以及链接的WiFi分配的IP地址
- 文读懂安防视频监控系统中H.265、SVAC、GB/T28181、ONVIF、PSIA的区别。
- flash游戏代码html5,Flash贪吃蛇游戏AS代码翻译
- 二进制及二进制的转换