打印
[技术问答]

SPI中主机和从机模式的区别

[复制链接]
14739|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
643757107|  楼主 | 2017-2-25 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那么主机和从机模式到底有哪些区别呢?
沙发
643757107|  楼主 | 2017-2-25 18:01 | 只看该作者
弄懂SPI接口         
SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。
1. 接口
SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。如图1所示,其使用的4条信号线分别为:
1) SCLK:串行时钟,用来同步数据传输,由主机输出;
2) MOSI:主机输出从机输入数据线;
3) MISO:主机输入从机输出数据线;
4) SS:片选线,低电平有效,由主机输出。
在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。


使用特权

评论回复
板凳
643757107|  楼主 | 2017-2-25 18:01 | 只看该作者


2. 数据传输

在一个SPI时钟周期内,会完成如下操作:

1) 主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;

2) 从机通过MISO线发送1位数据,主机通过该线读取这1位数据。

这是通过移位寄存器来实现的。如图2所示,主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。

使用特权

评论回复
地板
643757107|  楼主 | 2017-2-25 18:02 | 只看该作者
3. 时钟极性和时钟相位

在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA或UCCKPH)。时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。

主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。

举例来说,分别选取MSP430控制器和OLED驱动SH1101A为主从机,图3和图4为它们的SPI时序。由图4可知,SH1101A的SPI时钟空闲时为高电平,并且在后时钟沿接收数据,则MSP430控制器SPI的设置应与此保持一致。从图3中可以看出,要使得时钟在空闲时为高电平,应将UCCKPL置1;要使得在后时钟沿接收数据,应将UCCKPH清零。

使用特权

评论回复
5
643757107|  楼主 | 2017-2-25 18:04 | 只看该作者
4. 优缺点

SPI接口具有如下优点:

1) 支持全双工操作;

2) 操作简单;

3) 数据传输速率较高。

同时,它也具有如下缺点:

1) 需要占用主机较多的口线(每个从机都需要一根片选线);

2) 只支持单个主机。

使用特权

评论回复
6
643757107|  楼主 | 2017-2-25 18:07 | 只看该作者
从上面来看,那么就很容易知道问题了,主机和从机模式的区别就在于:
主模式就是SPI主机,简单说就是提供SCK的那方.
而从模式,就是被动接受SCK的那方.

使用特权

评论回复
7
dongnanxibei| | 2017-2-25 21:19 | 只看该作者
提供时钟信号的是主控。就跟那个外挂个SPI的存储芯片一样,那个芯片肯定是不会提供时钟的。

使用特权

评论回复
8
heisexingqisi| | 2017-2-26 14:14 | 只看该作者
主从模式的区别就在于是谁主动提供时钟信号,因为时钟信号是数字 通信的载体。

使用特权

评论回复
9
dongnanxibei| | 2017-2-26 15:38 | 只看该作者
如果只是点到点的通信,那就可以省略SS这个接口了。

使用特权

评论回复
10
gejigeji521| | 2017-2-26 16:04 | 只看该作者
时钟信号是控制通信的凭证,谁提供这个信号谁就是主机。

使用特权

评论回复
11
huangcunxiake| | 2017-2-26 17:07 | 只看该作者
片选这个不应该单独弄个,其实可以用普通的IO来做就行了。

使用特权

评论回复
12
玛尼玛尼哄| | 2017-2-26 19:32 | 只看该作者
弄清楚什么是主,什么是次,就是掌握主动权的。

使用特权

评论回复
13
稳稳の幸福| | 2017-2-26 20:41 | 只看该作者
随便看个官方的库函数,或者例程,你会发现主机是配置时钟信号的,从机是读取时钟信号的。

使用特权

评论回复
14
threetigher| | 2019-3-13 15:25 | 只看该作者
643757107 发表于 2017-2-25 18:07
从上面来看,那么就很容易知道问题了,主机和从机模式的区别就在于:
主模式就是SPI主机,简单说就是提供SCK ...

对于双方都可能发起双向通信的情况下,是否可以主从关系定死?
当从机需要发起通信时,通过一个IO口给主机一个中断,主机开始主控,这种方式如何?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

213

主题

3849

帖子

11

粉丝