|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
, z: W3 p! f' @/ Y! A" p7 A电子系统设计中,往往被IIC/SPI/UART等总线搞的晕头转向,本文详细介绍SPI总线的接口协议和应用。1 U+ J/ K) S9 B5 \
- M) B; s' d2 }# q, I. r
SPI总线是一种同步串行外设接口,它可以使mcu/FPGA/DSP等控制器与各种外围设备以串行方式进行通信。其具有通信速度快,同步设计以及控制协议简单等特点,是电子系统设计的常用选择之一。很多芯片的控制都提供SPI接口。
$ x* P- \9 h8 l$ c
; h/ N; K- H) h' M# w6 Z; C7 j* Q SPI 是英语 Serial Peripheral InteRFace 的缩写,顾名思义就是串行外围设备接口。是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,最早由Motorola提出的。由于其简单易用的特性,现在很多的芯片都集成了SPI通信协议。8 k: Y' _% N' x# d( o5 j
; B% G9 K# [( N
SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。6 y- @8 s/ ~) f* Q. h* M( `/ d
0 p9 L3 ?) l# L2 K: @. n8 M SPI flash 芯片应用十分广泛,在很多电子产品上面或多或少都有它的踪影,如手机、数码、液晶显示器、机顶盒、电脑主板等。主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器等,也是很多复杂芯片参数配置的常用接口。 % n c5 O$ Z2 g/ m
+ ~$ X7 u+ ?3 H5 q2 ~( \
SPI总线介绍
* k' f$ O( @8 F( a; I# J; A9 |, ?) r* z4 [( B
SPI 接口一般使用 4 条线通信,包括片选线(cs_n)、时钟线(sclk/sck)、输入数据线(sdi/miso) 和输出数据线(sdo/mosi):
- t. f) l& ~+ `, K) T5 T
1 |9 a/ U& i( |9 M* |% y& @1 pSCLK:串行时钟线,由主设备产生;8 o0 Z. k! F& y' }& N
/ V, J) s O0 i- r9 p K( cMISO:主设备数据输入,从设备输出;
' U# H* e) t9 d4 o
4 i% T) D4 P, z8 A7 E! SMOSI:主设备数据输出,从设备输入;
, Y1 B( D% M; R+ {
% u3 k$ D {- g! F7 e' G# H, n* nCS:从设备片选信号,由主设备控制。! P- e f, B8 H6 {; u
7 s: z7 t7 \6 T
6 E7 {5 N. d3 Z( w' H& G% ^- c g
其中CS是片选信号,可以预先规定其为高使能或者低使能有效时,对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备。
3 S5 j/ J, z/ U/ R3 Y# Q
& t1 K# u6 E/ d4 \3 [) k
4 H- `% M! d+ ]0 L2 { SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB)。在SCK的下降沿数据改变,上升沿一位数据被存入移位寄存器,如图所示:8 p: d) E5 c- O: _" A+ y) \, s
9 b, P: D6 E5 u6 l# aSPI总线通信特点. k5 J" a. F5 ^) e0 [; y* q* W$ g
: t# L- y8 j; h" m5 Q/ e 1.采用主-从模式(Master-Slave) 的控制方式- r4 D; d5 n9 w" Q1 ?. O! W, s
5 X9 E( q3 l6 K) T2 S+ x SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制从设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选来控制多个 Slave 设备。) l5 _, f- h! M% X
7 w7 j( W" c- S( p# x+ x4 t
2.采用同步方式(Synchronous)传输数据
1 O# {0 l/ y" x/ s
/ O; q6 f% A' S; ?7 O# u; T- S Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的。4 r9 y+ T ^. P
2 Z, f' Z! n* u* e+ f
3.数据交换(Data Exchanges) Y8 @6 n& J1 D& W; C7 w$ Q% t
/ r$ l) x" i& g H+ m3 k SPI设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个"发送(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了。 g4 [. \' [: _. P- F) M
' [* ^ S4 Y/ l) L2 u: ]; Z1 u7 ESPI FLASH读写介绍
) `' @. L' J/ ^0 D
8 f6 J, |7 r/ w4 i 对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。4 T5 q5 ?) F: H' ?# e1 o
& M9 } [# K7 R1 J: m' D6 \9 h
其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。9 r( X0 J- A% b# I% a& H" @
' R8 V: ?% Q; X( ^; g
|
|