配色: 字号:
ADI SPI接口简介
2024-04-27 | 阅:  转:  |  分享 
  

SPI 接口简介
作者:Piyu Dhaker
共享
串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、
数据传输
移位寄存器、SRAM等)之间使用最广泛的接口之一。本文先简
要开始SPI通信,主机必须发送时钟信号,并通过使能CS信号选择
要说明SPI接口,然后介绍ADI公司支持SPI的模拟开关与多路转换
从机。片选通常是低电平有效信号。因此,主机必须在该信号上
器,以及它们如何帮助减少系统电路板设计中的数字GPIO数量。
发送逻辑0 以选择从机。SPI是全双工接口,主机和从机可以分别
通过MOSI 和MISO线路同时发送数据。在SPI通信期间,数据的发送
SPI是一种同步、全双工、主从式接口。来自主机或从机的数据在
(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/
时钟上升沿或下降沿同步。主机和从机可以同时传输数据。SPI接
SDI)上的数据)同时进行。串行时钟沿同步数据的移位和采样。SPI
口可以是3线式或4线式。本文重点介绍常用的4 线SPI接口。
接口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数
据。欲确定使用SPI接口传输的数据位数,请参阅器件数据手册。
接口
CS CS
SPI SPI
时钟极性和时钟相位
Master Slave
SCLK SCLK
在SPI中,主机可以选择时钟极性和时钟相位。在空闲状态期
MOSI SDI
间,CPOL位设置时钟信号的极性。空闲状态是指传输开始时CS为
MISO SDO 高电平且在向低电平转变的期间,以及传输结束时CS为低电平且
在向高电平转变的期间。CPHA位选择时钟相位。根据CPHA位的状
图1. 含 主机 和 从机 的SPI 配置 。 态,使用时钟上升沿或下降沿来采样和/或移位数据。主机必须根
据从机的要求选择时钟极性和时钟相位。根据CPOL和CPHA位的选
4线SPI器件有四个信号:
择,有四种SPI模式可用。表1显示了这4种SPI模式。
? 时钟(SPI CLK, SCLK)
表1. 通过CPOL和CPHA选择SPI模式
? 片选(CS)
? 主机输出、从机输入(MOSI) /
SPI CPOL CPHA
? 主机输入、从机输出(MISO)
0
00
产生时钟信号的器件称为主机。主机和从机之间传输的数据与
2
主机产生的时钟同步。同I C 接口相比,SPI器件支持更高的时钟
10 1
频率。用户应查阅产品数据手册以了解SPI接口的时钟频率规格。
21 1
SPI接口只能有一个主机,但可以有一个或多个从机。图1显示了
主机和从机之间的SPI连接。 0
31
来自主机的片选信号用于选择从机。这通常是一个低电平有效信
图2至图5 显示了四种SPI模式下的通信示例。在这些示例中,数据
号,拉高时从机与SPI总线断开连接。当使用多个从机时,主机需
显示在MOSI和MISO线上。传输的开始和结束用绿色虚线表示,采
要为每个从机提供单独的片选信号。本文中的片选信号始终是低
样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。请注意,这
电平有效信号。
些图形仅供参考。要成功进行SPI通信,用户须参阅产品数据手册
MOSI和MISO是数据线。MOSI将数据从主机发送到从机,MISO将数 并确保满足器件的时序规格。
据从从机发送到主机。
模拟对话52-09,2018年9 月 1
analog.com/cn/analogdialoguenCS
CLK
MOSI
xxxx xxxx
1 0 10010 1
0xA5
MISO
Hi-Z Hi-Z
1 0 1 11 0 10
0xBA
图2. SPI 模式0 , CPOL = 0 , CPHA = 0 : CLK空闲状 态 = 低 电 平 , 数 据在 上升 沿 采 样 , 并 在下 降 沿 移 出 。
nCS
CLK
MOSI xxxx xxxx
1 0 10010 1
MISO Hi-Z Hi-Z
1 0 1 110 10
图3. SPI 模式1 , CPOL = 0 , CPHA = 1 : CLK空闲状 态 = 低 电 平 , 数 据在下 降 沿 采 样 , 并 在 上升 沿 移 出 。
nCS
CLK
MOSI
xxxx xxxx
1 0 100 1 0 1
0xA5
MISO
Hi-Z Hi-Z
0xBA 1 0 111 0 10
图4. SPI 模式2 , CPOL = 1 , CPHA = 0 : CLK空闲状 态 = 高 电 平 , 数 据在下 降 沿 采 样 , 并 在 上升 沿 移 出 。
nCS
CLK
MOSI
xxxx xxxx
1 0 10010 1
0xA5
MISO
Hi-Z Hi-Z
0xBA 1 0 1 11 0 10
图5. SPI 模式3 , CPOL = 1 , CPHA = 1 : CLK空闲状 态 = 高 电 平 , 数 据在 上升 沿 采 样 , 并 在下 降 沿 移 出 。
图3 给出了SPI模式1 的时序图。在此模式下,时钟极性为0 ,表示 图5 给出了SPI模式3 的时序图。在此模式下,时钟极性为1 ,表示
时钟信号的空闲状态为低电平。此模式下的时钟相位为1 ,表示 时钟信号的空闲状态为高电平。此模式下的时钟相位为1 ,表示
数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的 数据在上升沿采样(由橙色虚线显示),并且数据在时钟信号的
上升沿移出(由蓝色虚线显示)。 下降沿移出(由蓝色虚线显示)。
图4 给出了SPI模式2 的时序图。在此模式下,时钟极性为1 ,表示
多从机配置
时钟信号的空闲状态为高电平。此模式下的时钟相位为0 ,表示
多个从机可与单个SPI主机一起使用。从机可以采用常规模式连
数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的
接,或采用菊花链模式连接。
上升沿移出(由蓝色虚线显示)。
模拟对话52-09,2018年9 月
2SPI CS3
Master
CS2
CS CS
CS1 CS
SCLK SCLK SCLK
SPI SPI SPI
Slave Slave Slave
SDI SDI SDI
SDO SDO SDO
ADGS1412 ADGS1412 ADGS1412
SCLK
MOSI
MISO
图6. 多从 机SPI 配置 。
在菊花链模式下,所有从机的片选信号连接在一起,数据从一个
常规SPI模式:
从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI
在常规模式下,主机需要为每个从机提供单独的片选信号。一旦
时钟。来自主机的数据直接送到第一个从机,该从机将数据提供
主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用
给下一个从机,依此类推。
于所选的从机。如果使能多个片选信号,则MISO线上的数据会被
破坏,因为主机无法识别哪个从机正在传输数据。
使用该方法时,由于数据是从一个从机传播到下一个从机,所以
传输数据所需的时钟周期数与菊花链中的从机位置成比例。例如
从图6可以看出,随着从机数量的增加,来自主机的片选线的数量
在图7所示的8 位系统中,为使第3个从机能够获得数据,需要24个
也增加。这会快速增加主机需要提供的输入和输出数量,并限制
时钟脉冲,而常规SPI模式下只需8 个时钟脉冲。图8 显示了时钟周
可以使用的从机数量。可以使用其他技术来增加常规模式下的从
期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模
机数量,例如使用多路复用器产生片选信号。
式。请参阅产品数据手册以确认菊花链是否可用。
菊花链模式:
Eight Eight Eight
CLK
Clocks Clocks Clocks
SPI
CS
CS SPI
Master
Slave
SDIN1 0xA5 0x5A 0x0A
SCLK SCLK
SDI
MOSI
MISO
SDO SDOUT1
X 0xA5 0x5A
SDIN2
SDOUT2
SDI
X X 0xA5
SDIN3
CS
SPI
SCLK Slave
图8. 菊花链配置 : 数 据 传 播 。
SDO
ADI公司支持SPI的模拟开关与多路转换器
ADI公司最新一代支持SPI的开关可在不影响精密开关性能的情况
SDI
下显著节省空间。本文的这一部分将讨论一个案例研究,说明
CS
支持SPI的开关或多路复用器如何能够大大简化系统级设计并减
SPI
Slave
少所需的GPIO数量。
SCLK
SDO
ADG1412 是一款四通道、单刀单掷(SPST)开关,需要四个GPIO连接
图7. 多从 机SPI 菊花链配置 。
到每个开关的控制输入。图9 显示了微控制器和一个ADG1412之
间的连接。
模拟对话52-09,2018年9 月
3中的通道数。在4×4 交叉点矩阵配置中,使用四个ADG1412。此系
Micro-
统需要16个GPIO,限制了标准微控制器中的可用GPIO。图10显示了
controller
使用微控制器的16个GPIO连接四个ADG1412。
为了减少GPIO数量,一种方法是使用串行转并行转换器,如图11
GPIOs
所示。该器件输出的并行信号可连接到开关控制输入,器件可
SPI Master
通过串行接口SPI配置。此方法的缺点是外加器件会导致物料清
单增加。
ADG1412
另一种方法是使用SPI控制的开关。此方法的优点是可减少所需
Inputs Outputs
GPIO的数量,并且还能消除外加串行转并行转换器的开销。如图
SPI
Slave 12所示,不需要16个微控制器GPIO,只需要7 个微控制器GPIO就可
以向4个ADGS1412提供SPI信号。
图9. 微 控制器GPIO用 作 开 关 的 控 制 信 号。
开关可采用菊花链配置,以进一步优化GPIO数量。在菊花链配置
随着电路板上开关数量的增加,所需GPIO的数量也会显著增加。
中,无论系统使用多少开关,都只使用主机(微控制器)的四
例如,当设计一个测试仪器系统时,会使用大量开关来增加系统
个GPIO。
Micro-
controller
SPI Master
ADG1412 ADG1412 ADG1412 ADG1412
SPI SPI SPI SPI
Slave Slave Slave Slave
图10. 在 多 从 机 配 置 中 ,所 需 GPIO的 数 量 大 幅 增加。
Micro-
controller
CS
Serial to
CLK
Parallel
MOSI
Converter
MISO
SPI Master
ADG1412 ADG1412 ADG1412 ADG1412
SPI SPI SPI SPI
Slave Slave Slave Slave
图11. 使用 串 行转 并行转 换器 的 多 从 机 开 关 。
模拟对话52-09,2018年9 月
4
GPIOsCS4
CS3
SPI
Master
CS2
CS CS CS
CS1 CS
SCLK SCLK SCLK SCLK
SPI SPI SPI SPI
Slave Slave Slave Slave
SDI SDI SDI SDI
Microcontroller
SDO SDO SDO SDO
ADGS1412 ADGS1412 ADGS1412 ADGS1412
SCLK
MOSI
MISO
图12. 支持SPI的开 关节省 微 控 制 器GPIO 。
图13用于说明目的。ADGS1412数据手册建议在SDO引脚上使用一
SPI
CS CS
SPI
个上拉电阻。有关菊花链模式的更多信息,请参阅ADGS1412数据
Master
Slave
SCLK SCLK
手册。为简单起见,此示例使用了四个开关。随着系统中开关数
SDI
MOSI
量的增加,电路板简单和节省空间的优点很重要。在6 层电路板
ADGS1412
MISO
SDO 上放置8 个四通道SPST开关,采用4×8 交叉点配置时,ADI公司支
Microcontroller
持SPI的开关可节省20%的总电路板空间。文章“精密SPI开关配置
提高通道密度”详细说明了精密SPI开关配置如何提高通道密度。
SDI
CS
SPI ADI公司提供多种支持SPI的模拟开关与多路转换器。欲了解更多
Slave
SCLK
信息,请访问这里。
ADGS1412
SDO
参考文献
ADuCM3029数据手册 。ADI公司,2017年3月。
SDI
CS Nugent, Stephen。“ 精密SPI开关配置提高通道密度 ”。
SPI
Slave
《模拟对话》,2017年5月。
SCLK
ADGS1412
SDO Usach, Miguel。 应用笔记AN-1248:SPI接口 。ADI公司,2015年9月。
SDI
CS
SPI
Slave
SCLK
ADGS1412
SDO
图13. 菊花链配置 的SPI开 关可 进 一 步 优化GPIO 。
Piyu Dhaker

Piyu Dhaker [piyu.dhaker@analog.com] 是ADI公司北美核心应用部门的应用
工程师。2007年毕业于圣何塞大学,获电气工程硕士学位。2017年6 月加入
北美核心应用部门。此前,她也在ADI公司的汽车传动系统部门和电源管理
部门工作过。
模拟对话52-09,2018年9 月
5
献花(0)
+1
(本文系李清龙1023首藏)