找回密码
 注册
关于网站域名变更的通知
查看: 491|回复: 1
打印 上一主题 下一主题

这就是传说中的SPI,简单!!!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-13 15:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

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

+ I: k  [3 N1 `5 c( x9 k5 }SPI 是一种同步、全双工、主从式接口。来自主机或从机的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。SPI 接口可以是3线式或4线式。本文重点介绍常用的4线SPI接口。
7 ]+ {( r0 Z+ ?4 K9 W) K
接口
4线SPI器件有四个信号:
· 时钟(SPI CLK, SCLK)
· 片选(CS)
· 主机输出、从机输入(MOSI)
· 主机输入、从机输出(MISO)
1 B$ R) ?' Y7 w+ `# `

4 ]9 O+ a0 ?! q6 b; T- X! T& _- }! |) P产生时钟信号的器件称为主机。主机和从机之间传输的数据与主机产生的时钟同步。同I2C接口相比,SPI器件支持更高的时钟频率。用户应查阅产品数据手册以了解SPI接口的时钟频率规格。+ B% K$ N0 p1 E' _
2 ?4 e, U' \- I- @
SPI接口只能有一个主机,但可以有一个或多个从机。图1显示了主机和从机之间的SPI连接。
& X7 B+ {/ ^5 k2 x8 v

0 J" [# O# k* }0 k来自主机的片选信号用于选择从机。这通常是一个低电平有效信号,拉高时从机与SPI总线断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。本文中的片选信号始终是低电平有效信号。
& o: j' _2 {0 j5 Z( O6 I+ @5 [" j6 x) K7 g
MOSI和MISO是数据线。MOSI将数据从主机发送到从机,MISO将数据从从机发送到主机。
9 {3 N/ n+ G. g
/ `/ q$ u2 b9 x5 M数据传输( E, }/ K4 N) \! p1 {- O# C! ~: b
+ q. W# @2 \5 ^  h" I' E- ?* k* M; l
要开始SPI通信,主机必须发送时钟信号,并通过使能CS信号选择从机。片选通常是低电平有效信号。因此,主机必须在该信号上发送逻辑0以选择从机。SPI是全双工接口,主机和从机可以分别通过MOSI和MISO线路同时发送数据。在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI)上的数据)同时进行。串行时钟沿同步数据的移位和采样。SPI接口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数据。欲确定使用SPI接口传输的数据位数,请参阅器件数据手册。
- a+ M7 i  Q" a7 m9 Y4 L% M
: N( L4 ~- S, `8 ~0 {6 B4 I时钟极性和时钟相位
- J4 t- t9 ]6 \0 m
& m" n& S! Q( t! F- v0 m在SPI中,主机可以选择时钟极性和时钟相位。在空闲状态期间,CPOL位设置时钟信号的极性。空闲状态是指传输开始时CS为高电平且在向低电平转变的期间,以及传输结束时CS为低电平且在向高电平转变的期间。CPHA位选择时钟相位。根据CPHA位的状态,使用时钟上升沿或下降沿来采样和/或移位数据。主机必须根据从机的要求选择时钟极性和时钟相位。根据CPOL和CPHA位的选择,有四种SPI模式可用。表1显示了这4种SPI模式。
0 V; {" n6 G. A6 G" ]# ^
表1.通过CPOL和CPHA选择SPI模式

- m$ k$ D% ?; @% B6 ^: }图2至图5显示了四种SPI模式下的通信示例。在这些示例中,数据显示在MOSI和MISO线上。传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。请注意,这些图形仅供参考。要成功进行SPI通信,用户须参阅产品数据手册并确保满足器件的时序规格。: V! |; O2 k  e4 j* I4 y: P

* p8 E3 l; }3 M$ r+ z
图2. SPI模式0,CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出8 K+ |5 A; C0 l6 A8 U; V

9 X) I7 x* u7 }# @0 u2 x, Y3 z& O图3给出了SPI模式1的时序图。在此模式下,时钟极性为0,表示时钟信号的空闲状态为低电平。此模式下的时钟相位为1,表示数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。

0 S( s1 x% Z4 q! A8 q! A  j0 x
图3. SPI模式1,CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出
* O; M  ?% O! J- i) h

! m# _! l$ n' l- a
图4. SPI模式2,CPOL = 1,CPHA = 1:CLK空闲状态 = 高电平,数据在下降沿采样,并在上升沿移出
  {$ M) L- K4 Q0 A" g- ^2 ^

  |% w  B" z+ y/ F- S$ w1 r& P图4给出了SPI模式2的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为1,表示数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。

& c1 H. h; `5 Q9 g1 }- g) x- Q
图5. SPI模式3,CPOL = 1,CPHA = 0:CLK空闲状态 = 高电平,数据在上升沿采样,并在下降沿移出
) N5 E8 G' N8 }/ }3 O  N
: z5 a* v5 H1 _7 \2 \. W1 d
图5给出了SPI模式3的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为0,表示数据在上升沿采样(由橙色虚线显示),并且数据在时钟信号的下降沿移出(由蓝色虚线显示)。
' I2 W% W1 h/ m! p9 ?% C
; J# n( j4 |) i* }多从机配置8 {" Z; B5 A( i5 N$ o; U; }

+ m# W# M; ?: F多个从机可与单个SPI主机一起使用。从机可以采用常规模式连接,或采用菊花链模式连接。& B7 r, K* w  Y, k

2 v# Z  l$ z& F6 c) O常规SPI模式
: P8 T# L0 H3 Y- k3 {0 h在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用于所选的从机。如果使能多个片选信号,则MISO线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。
6 w; ]8 w1 {6 E  o9 f- N+ n! |: ~' x0 M, R
从图6可以看出,随着从机数量的增加,来自主机的片选线的数量也增加。这会快速增加主机需要提供的输入和输出数量,并限制可以使用的从机数量。可以使用其他技术来增加常规模式下的从机数量,例如使用多路复用器产生片选信号。
8 n/ v! S4 f  T: U/ w; @2 C5 B
图6. 多从机SPI配置
" b: l! C' c. ?- ~( E# \
% G) U7 y9 P" A1 `  d; w1 P
菊花链模式
4 a" s7 R; w8 {. N( _在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。
: @0 D) Q1 E: R; z6 N- q2 h
! @* D: G5 x4 b  C+ l使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。例如在图7所示的8位系统中,为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。

3 X: Z# I4 B. }; @4 l) M% n
图7. 多从机SPI菊花链配置
9 C  d7 I. L5 M6 |" }$ L% W$ R
( x, c7 @- G0 d! A1 F! V
图8显示了时钟周期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模式。请参阅产品数据手册以确认菊花链是否可用。

2 Q+ |) [& A1 p& A; g" b: f; D. z- ~
图8. 菊花链配置:数据传播, m) p9 {) V" N
) m% ?$ u9 O& }! e7 ]% D# T
支持 SPI 接口的模拟开关与多路转换器
, m! e  a" \5 f( L0 G$ E$ @( l' @0 H$ O; E, B
ADI公司最新一代支持SPI的开关可在不影响精密开关性能的情况下显著节省空间。本文的这一部分将讨论一个案例研究,说明支持SPI的开关或多路复用器如何能够大大简化系统级设计并减少所需的GPIO数量。; Y- N! \' H) N" P& c: Y4 }$ U3 Q. T

6 t+ S1 B$ O3 oADG1412是一款四通道、单刀单掷(SPST)开关,需要四个GPIO连接到每个开关的控制输入。图9显示了微控制器和一个ADG1412之间的连接。
$ C2 R. W- O3 b# |2 V  `
图9. 微控制器GPIO用作开关的控制信号) i7 P$ V  a# S8 S) z, w
* g( Q/ d! B* Q
随着电路板上开关数量的增加,所需GPIO的数量也会显著增加。例如,当设计一个测试仪器系统时,会使用大量开关来增加系统中的通道数。在4×4交叉点矩阵配置中,使用四个ADG1412。此系统需要16个GPIO,限制了标准微控制器中的可用GPIO。图10显示了使用微控制器的16个GPIO连接四个ADG1412。
& v; y: }/ Z7 ]" T
图10. 在多从机配置中,所需GPIO的数量大幅增加& y& M7 h+ v8 ?/ f( t

4 n  O6 ]* w, h) `如何减少 GPIO 数量?6 W, S" \7 [! H- C
一种方法是使用串行转并行转换器,如图11所示。该器件输出的并行信号可连接到开关控制输入,器件可通过串行接口SPI配置。此方法的缺点是外加器件会导致物料清单增加。
3 @4 `: i6 Y, [) G
图11. 使用串行转并行转换器的多从机开关
9 q& m8 V' W5 j/ V6 g- j9 o! v

1 A  d* J# ?  u另一种方法是使用SPI控制的开关。此方法的优点是可减少所需GPIO的数量,并且还能消除外加串行转并行转换器的开销。如图12所示,不需要16个微控制器GPIO,只需要7个微控制器GPIO就可以向4个ADGS1412提供SPI信号。开关可采用菊花链配置,以进一步优化GPIO数量。在菊花链配置中,无论系统使用多少开关,都只使用主机(微控制器)的四个GPIO。
: e  g- E$ d) p9 r$ y  O; m- g
图12. 支持SPI的开关节省微控制器GPIO- ]2 L9 P. L& s0 h3 q
8 u  u) f6 h. O$ N& R! a
图13用于说明目的。ADGS1412数据手册建议在SDO引脚上使用一个上拉电阻。为简单起见,此示例使用了四个开关。随着系统中开关数量的增加,电路板简单和节省空间的优点很重要。
. c* V! K+ J: o8 o0 e8 l( j( K9 L
图13. 菊花链配置的SPI开关可进一步优化GPIO
& {1 |8 `9 O* y( t

8 J8 j  ^7 ~2 W$ x( U7 S- l+ `+ Q. v在6层电路板上放置8个四通道SPST开关,采用4×8交叉点配置时,ADI 公司支持 SPI 的开关可节省20%的总电路板空间。
5 G& r; C1 W; Z; O$ c( \
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-13 01:37 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表