历史上的今天
今天是:2024年10月11日(星期五)
2019年10月11日 | SPI接口的工作原理及优缺点分析
2019-10-11 来源:eefocus
SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。
1. 接口
SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。如图1所示,其使用的4条信号线分别为:
1) SCLK:串行时钟,用来同步数据传输,由主机输出;
2) MOSI:主机输出从机输入数据线;
3) MISO:主机输入从机输出数据线;
4) SS:片选线,低电平有效,由主机输出。
在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。

2. 数据传输
在一个SPI时钟周期内,会完成如下操作:
1) 主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;
2) 从机通过MISO线发送1位数据,主机通过该线读取这1位数据。
这是通过移位寄存器来实现的。如图2所示,主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。

3. 时钟极性和时钟相位
在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA或UCCKPH)。时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。
举例来说,分别选取MSP430控制器和OLED驱动SH1101A为主从机,图3和图4为它们的SPI时序。由图4可知,SH1101A的SPI时钟空闲时为高电平,并且在后时钟沿接收数据,则MSP430控制器SPI的设置应与此保持一致。从图3中可以看出,要使得时钟在空闲时为高电平,应将UCCKPL置1;要使得在后时钟沿接收数据,应将UCCKPH清零。

4. 优缺点
SPI接口具有如下优点:
1) 支持全双工操作;
2) 操作简单;
3) 数据传输速率较高。
同时,它也具有如下缺点:
1) 需要占用主机较多的口线(每个从机都需要一根片选线);
2) 只支持单个主机。
史海拾趣
|
同时介绍:CC2500 是集FSK/ASK/OOK/MSK调制方式的收发模块,它兼容扩展硬件支持实现信息包处理、数据缓冲、群发射.。可以采用曼彻斯特编码进行调制它的数据流,性能优越并且易于应用到你的产品设计中。它可以应用在2400-2483.5MHz ISM/SRD频段的系 ...… 查看全部问答> |
|
当硬件设计上 flash 和 sram 地址数据线时,sopc的建立需要一个三态桥,然后再把加入的CFI 和 SRAM controller 分别挂在该三态桥上。 然后双击三态桥,address 勾上,设置成复用。 一点常用的技巧共享给大家!… 查看全部问答> |
|
one or more files from the emulator for windows ce installation is missing 在Embedded Visual C++ 4.0编译程序,即不能编译,也运行不起来,提示如下: one or more files from the emulator for windows ce installation is missing 解决办法: 打开系统分区根目录下的BOOT.INI文件,对其进行编辑。 将其 ...… 查看全部问答> |
|
机器上用到煤气加热,需要煤气检测。请问: 1.煤气检测是不是应该与控制电路板分开,单独做出一个煤气传感器模块? 2.独立的煤气传感器安装在什么位置比较好的?机器的高度才1米。 3.电子脉冲点火器对单片机的干扰很大,具体怎么做可以降低干扰 ...… 查看全部问答> |
|
我用的IAR5.3和三合一板子上STLINK,调试STM32F103RBT6芯片,前些天调试仿真还都挺好,但从昨天开始,代码不能下载仿真了,显示 下载 (27.69 KB) 2010-5-26 13:21 警告,按确定后出现 下载 (55.81 KB) 201 ...… 查看全部问答> |
|
Chipscope是XILINX推出的一款在线调试软件,价格便宜,通过它完全可以脱离传统逻辑分析仪(太贵)来调时序,观察FPGA内部的任何信号,触发条件、数据宽度和深度等的设置也非常方便,但是肯定也存在不足,比如速度和数据量方面。Chipscope本身是一个逻 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 11:46 编辑 来自于,电机驱动业务部门Gem Li 市场销售经理 电机驱动基础知识,仅供初步学习~~~欢迎下载分享~~~ … 查看全部问答> |
|
如何提高阅读源代码的效率 记得在开源流行之前,我看过的代码紧限于所参与的项目,能有个几万行就不错哩。后来很多优秀开源项目都相继蹦出来了,阅读的代码量那叫一个大呀!不得不 ...… 查看全部问答> |




