|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
弄懂SPI接口 9 I1 {$ z6 }; J% a7 w
+ J& c S7 z; j E1 \* s2 XPI(Serial Peripheral InteRFace,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。6 S: F6 u$ _! }3 _5 g
& k. C3 m% _; @7 F) _- ]3 M+ |4 A
1. 接口& o9 R+ Y2 i: d
) f* h. {) W& p' Y1 }* X+ USPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。如图1所示,其使用的4条信号线分别为:" i' L G4 @1 E
) g' m* o( P: @, s
1) SCLK:串行时钟,用来同步数据传输,由主机输出;* C8 D; J8 z- ^: I
3 t5 c. ^3 z$ q C) u6 V
2) MOSI:主机输出从机输入数据线;
/ k$ W5 C- ? a4 V. ] u5 d* i/ z, [+ V0 Q' i
3) MISO:主机输入从机输出数据线;
3 t% c# t* I# z! w1 h
+ C6 J$ B h: t2 k( G% {4) SS:片选线,低电平有效,由主机输出。# f5 [6 j0 q& \0 X H5 ?
, N* j: c8 V7 T, O7 ] s
在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。
8 r. n) @6 Y3 O/ O+ W
! F6 l# B+ y9 g" [工程师博客:弄懂SPI接口(电子工程专辑)
F8 k5 S5 C) l' T6 V
. h( u' ]: X/ u r8 v2 |2. 数据传输+ g4 W, x( |* C2 c% `! Q2 Z1 b) w
/ e; p' v- m' h* V: q在一个SPI时钟周期内,会完成如下操作:
5 A' ~0 {: Q0 B4 C( V3 b" o& l
4 f9 A( t% ^" M7 K3 i7 b: ~1) 主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;8 W3 l1 S4 T- K& u- X; [( g* B
/ S+ O- I" q) L$ V% [: u$ C7 I2) 从机通过MISO线发送1位数据,主机通过该线读取这1位数据。
3 X# ]! e; v; p6 ^; E0 v j P" m+ W/ _0 [+ C' s
这是通过移位寄存器来实现的。如图2所示,主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。5 Q6 t# A0 R: V
* G; l- I1 F3 d8 n9 Y3 }5 Q, S
工程师博客:弄懂SPI接口(电子工程专辑)
$ @$ j; h6 Z; ~) n& M9 i+ I" t7 E8 y% B! b$ L5 n
3. 时钟极性和时钟相位5 G5 b' y5 @3 e4 Z
7 n+ j& @9 b: @8 d9 u在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA或UCCKPH)。时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
+ Y" p, R. _" l6 o2 U0 X/ S4 g0 Z: c i: {
主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。5 j2 S% O. g0 T m% k
2 l O' M- j' _2 C
举例来说,分别选取MSP430控制器和OLED驱动SH1101A为主从机,图3和图4为它们的SPI时序。由图4可知,SH1101A的SPI时钟空闲时为高电平,并且在后时钟沿接收数据,则MSP430控制器SPI的设置应与此保持一致。从图3中可以看出,要使得时钟在空闲时为高电平,应将UCCKPL置1;要使得在后时钟沿接收数据,应将UCCKPH清零。
+ X$ B$ k, q4 R4 F( H8 w, j' W1 e3 |% x
工程师博客:弄懂SPI接口(电子工程专辑); A/ U: S. L' g5 ^$ b
8 J c$ X0 d" ?: R& [4 m) e
工程师博客:弄懂SPI接口(电子工程专辑)/ I( t- { ^. |) \9 E' g
; d1 _ q6 Z& G( z; j4. 优缺点; [3 u5 o. U( s) b3 u
, a. D& P# y/ @( Z- _* L' KSPI接口具有如下优点:; ^5 ?6 e. v6 Z. x/ h
1 N5 {; t; N( h1 o1) 支持全双工操作;
6 B8 W) Z" a# c4 [6 D) Z4 L& z3 ^# y. c
2) 操作简单;5 j; _, w5 _1 ?5 D7 G
( x& _+ X- Z" n0 |
3) 数据传输速率较高。+ I- w" @$ p' u
4 G* k, P1 P# o同时,它也具有如下缺点:
5 z) j) }% |6 }0 {2 @: J5 N6 D6 h; t% s, `# W4 `! R1 n
1) 需要占用主机较多的口线(每个从机都需要一根片选线);
9 r" ~2 A( P; T* W, H" H0 w
3 C8 I7 A% d; l0 u- W6 G2 u2) 只支持单个主机。 | $ D1 d: s8 A P
|
|