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

FPGA入门系列--SPI

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-7-14 09:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x

2 o- E. S0 c8 o# ?# i电子系统设计中,往往被IIC/SPI/UART等总线搞的晕头转向,本文详细介绍SPI总线的接口协议和应用。
9 |: s  y- W4 F- R5 z/ U1 i. f1 J% d1 t4 s' b# `2 }8 ^; w6 Q/ |9 h
    SPI总线是一种同步串行外设接口,它可以使mcu/FPGA/DSP等控制器与各种外围设备以串行方式进行通信。其具有通信速度快,同步设计以及控制协议简单等特点,是电子系统设计的常用选择之一。很多芯片的控制都提供SPI接口。# L7 T3 y  J; T, j9 R
7 e, h' q' {2 [: H7 \) w2 h
    SPI 是英语 Serial Peripheral InteRFace 的缩写,顾名思义就是串行外围设备接口。是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,最早由Motorola提出的。由于其简单易用的特性,现在很多的芯片都集成了SPI通信协议。
! H! J) `. W* O0 o; j
/ c1 x/ U! a9 c" y+ |    SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。
2 Y0 `. ^# ~" w, s. j
( o4 X) Z  G, d9 b7 E    SPI flash 芯片应用十分广泛,在很多电子产品上面或多或少都有它的踪影,如手机、数码、液晶显示器、机顶盒、电脑主板等。主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器等,也是很多复杂芯片参数配置的常用接口。   
" n, ]/ W/ B1 l3 x2 [3 f* r6 X  K! _- S9 g$ Z( U* ?% P, x8 |7 i
SPI总线介绍
' t+ a6 ?% Q# q) t' c7 y4 L
, ?7 t% W& h( c! l- ?' @  U    SPI 接口一般使用 4 条线通信,包括片选线(cs_n)、时钟线(sclk/sck)、输入数据线(sdi/miso) 和输出数据线(sdo/mosi):9 B# _" B- r' L4 ~/ I0 c

9 b9 j+ Y" U! D: zSCLK:串行时钟线,由主设备产生;; l8 B* c+ \/ x1 [' s( R- D# |

% h0 g' r+ m6 SMISO:主设备数据输入,从设备输出;( ^8 [& [  q6 L; j

3 d2 O8 [* Y3 t) j1 v% |8 `- S9 d. ~MOSI:主设备数据输出,从设备输入;
/ c; I& D, n4 v% @* A+ @5 V- i- A1 i4 P
CS:从设备片选信号,由主设备控制。0 [5 N' a" n7 ~) }8 W; R
' R7 n3 e) {6 D7 X; N, s

1 i6 F5 ~. S9 k    其中CS是片选信号,可以预先规定其为高使能或者低使能有效时,对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备。
. p) t" u  G9 M$ B! [9 N
  t+ A& k& L8 g; W+ c. i" Q
7 L" P3 u1 W5 w3 N
    SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB)。在SCK的下降沿数据改变,上升沿一位数据被存入移位寄存器,如图所示:
  M- m3 f5 l8 i, r

! X, b* v# Z" D/ m+ B# e. _  QSPI总线通信特点0 f% a9 ]3 A1 d$ ~
0 B. X5 {9 g6 b; p
    1.采用主-从模式(Master-Slave) 的控制方式# i+ E6 E' e% V1 g7 e* s  s  g
! |9 x( p6 s2 M: T" c) m
    SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制从设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选来控制多个 Slave 设备。& S, P  ?/ s* ]# p$ D7 @

( R+ }& i9 T6 G1 A6 X. _    2.采用同步方式(Synchronous)传输数据/ }. Z. w6 O5 m" ?7 t

. h- e) J% |# L. J* n! q3 r5 R    Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的。( E6 _: ~* l5 x9 b4 B% d( K5 O

* E5 a  t" v- A& i    3.数据交换(Data Exchanges)0 X4 l: [( ^5 t2 z# t1 P. a4 {

; @, s1 l4 _/ v" E7 M6 S    SPI设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个"发送(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了。
& M: I5 |  W0 }4 [6 }# W
  M5 C! b" }5 y
SPI FLASH读写介绍
$ u5 ?4 D! w& H* X) a/ x# Q" |! b
     对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。
% H0 m) |2 N8 d7 T  L! F/ l. @
+ T4 v; a3 H: s7 G    其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。
3 C, B* H( h. \! q) ~
; L: O- j/ ?! f5 S0 m! c

该用户从未签到

2#
发表于 2021-7-14 10:12 | 只看该作者
很多芯片的控制都提供SPI接口+ }4 L, i1 \2 p

该用户从未签到

3#
发表于 2021-7-14 10:56 | 只看该作者
由于其简单易用的特性,现在很多的芯片都集成了SPI通信协议9 f. Y  I- A4 s9 Y

该用户从未签到

4#
发表于 2021-7-21 14:50 | 只看该作者
谢谢分享,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-31 17:38 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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