|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
6 u0 y. _* q8 K6 Q5 X' X4 B电子系统设计中,往往被IIC/SPI/UART等总线搞的晕头转向,本文详细介绍SPI总线的接口协议和应用。
; I8 Q$ k) J; ^( H0 ~7 L9 f! U9 L, H0 s
SPI总线是一种同步串行外设接口,它可以使mcu/FPGA/DSP等控制器与各种外围设备以串行方式进行通信。其具有通信速度快,同步设计以及控制协议简单等特点,是电子系统设计的常用选择之一。很多芯片的控制都提供SPI接口。4 n; n( p* Z3 H' p" @
/ F' v; b$ R( [8 k L# k
SPI 是英语 Serial Peripheral InteRFace 的缩写,顾名思义就是串行外围设备接口。是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,最早由Motorola提出的。由于其简单易用的特性,现在很多的芯片都集成了SPI通信协议。2 C! F+ @* w' o$ c6 q8 {. G
8 s/ x* i8 w9 T4 K7 e6 ]' h& }/ c
SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。
' T; x$ v" E3 D; s+ Q Z0 m7 ^
7 ~, X1 R! f7 l SPI flash 芯片应用十分广泛,在很多电子产品上面或多或少都有它的踪影,如手机、数码、液晶显示器、机顶盒、电脑主板等。主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器等,也是很多复杂芯片参数配置的常用接口。
, o6 |% v! N; n, j8 q7 D. j1 C) {4 L3 Q
SPI总线介绍3 F! p# r! B6 M% Z
4 j, n/ i$ ]. K( N# q3 {
SPI 接口一般使用 4 条线通信,包括片选线(cs_n)、时钟线(sclk/sck)、输入数据线(sdi/miso) 和输出数据线(sdo/mosi):
( ^4 H+ s3 ]. `: D4 Q6 _9 }5 m7 y+ s- M8 A$ T# O/ Z
SCLK:串行时钟线,由主设备产生; `- m& u& V) D
; ~- Z$ d8 g; M# h/ _" zMISO:主设备数据输入,从设备输出;8 k j/ B8 t4 c3 y; N5 j5 \
. I& F% V" {* d9 N. p9 M+ x
MOSI:主设备数据输出,从设备输入;9 f6 X o. Q+ j' c2 T9 k
9 o" |, [9 B. {2 \' i8 K$ I$ `
CS:从设备片选信号,由主设备控制。6 ~( N/ I$ P6 j' C4 T, ~
7 P: C* @* m! E+ K* c
- G7 d; H6 n" x( P4 @8 N 其中CS是片选信号,可以预先规定其为高使能或者低使能有效时,对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备。, _& Z' Z( a" f0 ~9 t3 P7 h6 E4 b0 Q
. m, |% ~ W; I2 v2 o3 ~, ]3 ~5 o }
5 x4 k2 x& V7 [3 e- L SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB)。在SCK的下降沿数据改变,上升沿一位数据被存入移位寄存器,如图所示:
/ g# r! ^" ?( x
3 B: n. ]& }4 @% W, h+ JSPI总线通信特点
]# C0 I/ v! _- u. t6 O
3 U C# y2 W- a: o7 z 1.采用主-从模式(Master-Slave) 的控制方式( k/ E" B/ S i) E7 }$ Y" {" V
/ h4 P& G% g) p+ r% E1 M
SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制从设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选来控制多个 Slave 设备。
* O- d; ~1 s+ _
3 i: Q# U: N& b6 b9 W 2.采用同步方式(Synchronous)传输数据
2 g% N" }" x' j# m( `1 O0 P' V _
( Y% g7 i! G% Q) O* K0 w" ~ Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的。3 K W/ s7 T' v H& L+ A I. o
$ \: l$ S! ^1 \' f
3.数据交换(Data Exchanges)
4 n9 z/ u/ o4 K# b* F, m$ G) u/ t5 |& b! ~$ }+ Z
SPI设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个"发送(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了。, t# S5 y2 @ ^, L
% K# c! }- b* ?* r
SPI FLASH读写介绍
& N+ v) X. f6 o% r8 ]( H" x" v
对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。5 R' }; [" Z Y/ @) J4 m' L
3 g( e. P" I, B, A* h 其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。3 z5 M0 B+ b8 e/ s7 b
0 j# o' D" t+ v& K# U
|
|