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

SPI 协议驱动设计

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
SPI是串行外设接口(Serial Peripheral InteRFace)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。  @: p) ^. A) k+ ~; ~0 y# X

* }/ S5 _. c. k/ w* G8 |8 bSPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,中间靠三线或者四线连接(三线时为单向传输或者数据线双向传输)。所有基于SPI的设备共有的,它们是MISO、MOSI、SCLK、CS。, O$ F; \6 O; [

% y- O! l) _6 m/ B8 R7 `MISO– Master Input Slave Output,主设备数据输入,从设备数据输出。6 g& ?) w7 U8 o2 s) d
, i( [9 Y& F6 {! q! c! G: O
MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入。
1 [6 X. D" V; h
1 H! ~# l0 i  YSCLK – Serial Clock,时钟信号,由主设备产生。( g0 j1 g7 C- d# T' U& R. ]

& K% D, D* h/ ]% H% E5 A6 UCS – Chip Select,从设备使能信号,由主设备控制。: B( I) o' d) C& O& h) d1 j
1 M$ Z  \! Q9 C8 v* A- C
% }1 N! l) h' ]9 D6 L2 B

2 H  z- n0 B* a) p( }8 g7 [: w: r9 q+ T% b5 S- s4 [4 T

: E( ]5 H5 J( m* o7 o5 V/ z* [cs是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个spi设备成为可能。8 s: a, f+ K1 z" ^2 H2 t4 O

/ q9 C5 t1 h5 C3 B/ ~, D
" N; C/ j1 [4 J% B& H

4 V5 G7 |" z* `7 [' j. n: h) H: ]9 j4 V8 N* P3 S. [. D+ ~. u

* y2 D& H( Z; {$ R2 N( G通讯是通过数据交换完成的,由sclk提供时钟脉冲,mosi、miso则基于此脉冲完成数据传输。数据输出通过 mosi线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。因此,至少需要N次时钟信号的改变(上沿和下沿为一次),才能完成N位数据的传输。) }) a; \) R6 l) ?1 j

5 Q3 u& d/ b: _; K6 H) P+ w3 M4 zspi通信有四种不同的模式,不同的从设备可能在出厂时就已经配置为某种模式。通信的双方必须是工作在同一模式下,所以我们可以对主设备的spi模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式。0 E& E* ]6 V9 Z
: H7 n; K1 I# V' f' r
mode0:CPOL=0,CPHA=0;
9 U% G- p9 Q& |  U3 U
% l6 E+ e6 r3 U' c& z2 Qmode1:CPOL=0,CPHA=1;
: A3 N# A' M6 Q" i" n: S- T# E: c1 R' g5 n' k0 ]% h4 v
mode2:CPOL=1,CPHA=0;
: {# Z, U3 F  y5 l& N6 K- ^
; s' T6 m9 Z. A( Q% Hmode3:CPOL=1,CPHA=1;
7 M, V8 V' R- h& k" L8 V* N
1 G0 Z2 o7 w* U时钟极性CPOL是用来配置SCLK在空闲时,应该处于的状态;时钟相位CPHA用来配置在第几个边沿进行采样。( F; a2 t/ r5 Y5 ^6 [; Y4 {$ g
- g6 h6 [: z5 C. l# m
CPOL=0,表示在空闲状态时,时钟SCLK为低电平。5 r  w' }2 k" s3 T' \) Z
* A; m/ K8 G; `# S0 r7 Y9 I
CPOL=1,表示在空闲状态时,时钟SCLK为高电平。
/ {, _0 L- n+ K  ~0 @" x7 x+ s4 y0 x" h  u4 r; `
CPHA=0,表示数据采样是在第1个边沿。
7 R8 n! c' [0 v# T' V8 w' R# E$ I8 C  h/ P: }/ W( v/ {
CPHA=1,表示数据采样是在第2个边沿。1 B/ [7 b% ?; H1 o9 L8 V% I% w
/ j4 e! Z, G- J1 |
即:8 [8 I$ U5 `8 |7 ^9 Z; B: S

. t3 D0 N" n2 f: Q; ~- W: i$ L8 NCPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
  a8 _2 E( _. t: I% t9 a% j
8 N7 }4 J- T! Y- w- {+ cCPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
- e3 ~1 x4 v" g' e& r9 F: F
& j* r# b1 w! `1 z$ s6 |CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。/ i' V& M/ L( B3 M6 u( S( z

- Q" H0 f8 L$ o/ HCPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。
6 x# y) [" t2 ]# U; r& R# H: z
4 ]8 Q- q1 l9 R/ J+ z- U. I" i
& f0 h, P4 C! E5 R9 f
  G# C: f- k( v7 p* ?5 g: `2 k) F

/ E4 E5 H/ c! m
3 x$ ^2 N' i" m. W" j
7 O: x4 A9 Z% R$ f! g7 R+ \4 e

该用户从未签到

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

该用户从未签到

3#
发表于 2021-9-10 13:21 | 只看该作者
通讯是通过数据交换完成的,由sclk提供时钟脉冲,mosi、miso则基于此脉冲完成数据传输
( o9 q4 O9 S" c+ S

该用户从未签到

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

该用户从未签到

5#
发表于 2021-9-10 15:22 | 只看该作者
时钟极性CPOL是用来配置SCLK在空闲时,应该处于的状态;时钟相位CPHA用来配置在第几个边沿进行采样/ C# e) I' y+ `( [) ?- i+ z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-4 17:50 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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