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

SPI 协议驱动设计

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
SPI是串行外设接口(Serial Peripheral InteRFace)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。1 t6 o, o9 j: O' O# p
5 g+ @9 c% K3 j/ J5 L
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,中间靠三线或者四线连接(三线时为单向传输或者数据线双向传输)。所有基于SPI的设备共有的,它们是MISO、MOSI、SCLK、CS。
& `4 F* e5 j) f8 F' Z- C2 I/ \" O. B! l4 T, Q. O
MISO– Master Input Slave Output,主设备数据输入,从设备数据输出。6 U6 p% e6 Y( Y, w$ q& h1 R
/ }1 b0 ?5 k5 B; z
MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入。
9 `6 m3 @1 `5 p  C9 h7 t4 \2 v# I( k2 h# j- ?
SCLK – Serial Clock,时钟信号,由主设备产生。
9 l' \' ]  ^# J
9 b$ P# K' q' |CS – Chip Select,从设备使能信号,由主设备控制。
- G6 q* [, Q9 b4 X) O9 g3 W' K6 Y) Y: g7 m& p

% R1 f( O) ?- l* i( X" n% C
) f, V; x, o; e
0 d$ h& r, w5 p
6 r! \2 f: J7 Q+ [% `2 H" Dcs是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个spi设备成为可能。) ~/ {7 X3 ^( s/ s/ M

* ^) H" N1 x* H( c

  @' V% O: A* t4 Y8 s: _
1 ?" \8 K+ [1 ?  s9 B; E' e* {* T
' \% z& B/ S0 _* y4 a9 D
/ _- M6 h! ?6 k8 }) U通讯是通过数据交换完成的,由sclk提供时钟脉冲,mosi、miso则基于此脉冲完成数据传输。数据输出通过 mosi线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。因此,至少需要N次时钟信号的改变(上沿和下沿为一次),才能完成N位数据的传输。; q3 r5 K9 Z' t2 U3 [- x  F
! ^) d0 v6 q7 W0 u2 }
spi通信有四种不同的模式,不同的从设备可能在出厂时就已经配置为某种模式。通信的双方必须是工作在同一模式下,所以我们可以对主设备的spi模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式。+ S- W; ?# G& j' G8 n
- Q7 k' l: R6 C) ^" f' _- U( K. k4 X
mode0:CPOL=0,CPHA=0;
2 N& T; v; S% C3 B; `' l( N0 J, V- l7 |  g" m' U) E
mode1:CPOL=0,CPHA=1;  {! |9 F/ C# v/ u& u6 D3 s& E

; `# z- F6 Y6 h- d6 n8 xmode2:CPOL=1,CPHA=0;0 j& [3 G8 C- b( F, y

9 D/ Z/ a& ~. pmode3:CPOL=1,CPHA=1;
  z$ f4 O, C0 `! u
" E$ i/ @3 R/ p( G# N时钟极性CPOL是用来配置SCLK在空闲时,应该处于的状态;时钟相位CPHA用来配置在第几个边沿进行采样。. N$ D% @. _: `4 a6 I

& p) f' P8 Z; S" d+ oCPOL=0,表示在空闲状态时,时钟SCLK为低电平。
- M. y3 t1 V; \; D( m
: i% ?  G: d7 I9 U+ [CPOL=1,表示在空闲状态时,时钟SCLK为高电平。
! }. `0 }8 D+ F0 k2 |- ^9 P& U# h1 n
CPHA=0,表示数据采样是在第1个边沿。
' [$ F1 {. ?) U7 P# Q( z# D. Y/ J9 y6 z: s- \7 e
CPHA=1,表示数据采样是在第2个边沿。' p" L3 ?. \- v

# y  i* G" Y5 l/ r: [$ Q即:
7 S2 m& z  b4 a$ y+ \& [1 m) \& ~3 C* ]5 H4 \9 ~' Y4 l
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
2 U- I7 k, L8 a1 m" a+ [2 g% j' ^" `; q& z5 l7 X
CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
, T; M' [8 j/ s# V. Z( P& c& X- ^9 {- m4 h/ J2 Z
CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
% w0 i  \2 W$ ?& L6 k% |. W0 X8 m7 g  I% g1 `+ A0 o
CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。2 ?& d. m% q; w) e, g

8 H+ y% C2 n3 E% T
6 [  O# h, ]& `8 s3 [; P

  t  g: _: T& ?' `; Z
( y- _2 N& ]$ P/ \. f
- W. y; y8 u% E- S# }

0 }8 g- _1 {. ~7 b+ D2 _

该用户从未签到

2#
发表于 2021-9-10 11:11 | 只看该作者
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议. z1 u; @6 s- X, t$ R1 A

该用户从未签到

3#
发表于 2021-9-10 13:21 | 只看该作者
通讯是通过数据交换完成的,由sclk提供时钟脉冲,mosi、miso则基于此脉冲完成数据传输) Y, e5 P& a& ^. R- T3 Q' n, d

该用户从未签到

4#
发表于 2021-9-10 13:36 | 只看该作者
cs是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个spi设备成为可能
. ^- R& S5 b5 v

该用户从未签到

5#
发表于 2021-9-10 15:22 | 只看该作者
时钟极性CPOL是用来配置SCLK在空闲时,应该处于的状态;时钟相位CPHA用来配置在第几个边沿进行采样  D7 |( W8 P/ X! Q- ]2 p" S/ M, Q, G
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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