极速赛车手机官网

一文了解SPI总线工作原理、优缺点和应用案例

2019-08-05来源: EEWORLD关键字:SPI  总线

将微控制器连接到传感器,显示器或其他模块时,您是否考虑过两个设备之间如何通信?他们到底在说什么?他们如何能够相互理解?

电子设备之间的通信就像人类之间的通信,双方都需要说同一种语言。在电子学中,这些语言称为通信协议。幸运的是,在构建大多数DIY电子项目时,我们只需要了解一些通信协议。在本系列文章中,我们将讨论三种最常见协议的基础知识:串行外设接口(SPI),内部集成电路(I2C)和通用异步接收器/发送器(UART)驱动通信。

首先,我们将从一些关于电子通信的基本概念开始,然后详细解释SPI的工作原理。

SPI,I2C和UART比USB,以太网,蓝牙和WiFi等协议慢得多,但它们更简单,使用的硬件和系统资源也更少。 SPI,I2C和UART非常适用于微控制器之间以及微控制器和传感器之间的通信,在这些传感器中不需要传输大量高速数据。


图片.png


串行与并行通信

电子设备通过物理连接在设备之间的导线发送数据位来相互通信,有点像一个字母中的字母,除了26个字母(英文字母表中),一个位是二进制的,只能是1或0。通过电压的快速变化,位从一个设备传输到另一个设备。在工作电压为5V的系统中,0位作为0V的短脉冲通信,1位通过5V的短脉冲通信。

数据位可以并行或串行形式传输。在并行通信中,数据位是同时发送的,每个都通过单独的线路。下图显示了二进制(01000011)中字母“C”的并行传输:

图片.png

在串行通信中,通过单线逐个发送这些位。下图显示了二进制(01000011)中字母“C”的串行传输:


图片.png


SPI通信简介

许多设备都采用了SPI通用通信协议。例如,SD卡模块,RFID读卡器模块和2.4 GHz无线发送器/接收器都使用SPI与微控制器通信。

SPI的一个独特优势是可以不间断地传输数据。可以连续流发送或接收任意数量的比特。使用I2C和UART,数据以数据包形式发送,限制为特定的位数。启动和停止条件定义每个数据包的开始和结束,因此数据在传输过程中会被中断。

通过SPI通信的设备处于主从关系。主设备是控制设备(通常是微控制器),而从设备(通常是传感器,显示器或存储器芯片)接收来自主设备的指令。最简单的SPI配置是单主机,单从机系统,但是一个主机可以控制多个从机(下面将详细介绍)。

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间。


图片.png


极速赛车手机官网(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;


极速赛车手机官网(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;


(3)SCLK – Serial Clock,时钟信号,由主设备产生;


(4)CS – Chip Select,从设备使能信号,由主设备控制。


图片.png

*实际上,从设备的数量受到系统负载电容的限制,受主设备在电压电平之间精确切换的能力。

SPI如何工作

时钟

时钟信号将来自主设备的数据位输出与从设备的位采样同步。在每个时钟周期传输一位数据,因此数据传输的速度由时钟信号的频率决定。由于主设备配置并生成时钟信号,因此SPI时钟始终为主设备的时钟。

设备共享时钟信号的任何通信协议称为同步。SPI是一种同步通信协议,还有一些不使用时钟信号的异步方法。例如,在UART通信中,双方都设置为预先配置的波特率,该波特率决定数据传输的速度和时间。

SPI中的时钟信号可以使用时钟极性和时钟相位属性进行修改。这两个属性协同工作以定义何时输出以及何时对它们进行采样。时钟极性可由主机设置,以允许在时钟周期的上升沿或下降沿输出和采样。时钟相位也可以由主机设置,以便在时钟周期的第一个边沿或第二个边沿上进行输出和采样,无论是上升还是下降。

从设备选择

主设备可以通过将从设备的CS / SS线设置为低电压电平来选择要通话的从设备。在空闲非传输状态中,从选择线保持在高电压电平。主机上可能有多个CS / SS引脚,以允许多个从机并联连接。如果只有一个CS/SS引脚,则可以通过菊花链将多个从器件连接到主器件。

多个从设备

SPI可以设置为使用单个主设备和单个从设备进行操作,也可以设置通过单个主设备控制多个从设备。有两种方法可以将多个从站连接到主站。如果主机有多个从机选择引脚,则从机可以并联连接,如下所示:

图片.png
如果只有一个从选择引脚可用,则从器件可以菊花链式连接,如下所示:


图片.png

MOSI和MISO

主机通过MOSI线串行发送数据到从机。从器件接收MOSI引脚上的主器件发送的数据。从主设备发送到从设备的数据通常首先以最高有效位发送。

从机还可以通过串行的MISO线路将数据发送回主机。从从设备发送回主设备的数据通常首先以最低有效位发送。

SPI数据传输步骤

1.主机输出时钟信号:
图片.png

2.主器件将SS / CS引脚切换到低电压状态,从而激活从器件:

图片.png

3.主机沿MOSI线一次一位地向从机发送数据。从机在接收到的位时读取这些位:

图片.png

4.如果需要响应,从站将沿着MISO线一次一位地向主站返回数据。主机在接收到的位时读取这些位:

图片.png


SPI的优点和缺点

使用SPI有一些优点和缺点,如果在不同的通信协议之间进行选择,您应该根据项目的要求知道何时使用SPI:

优点

没有启动和停止位,因此数据可以连续流式传输而不会中断
没有复杂的从机寻址系统,如I2C
比I2C更高的数据传输速率(几乎快两倍)
单独的MISO和MOSI线,因此可以同时发送和接收数据

缺点

使用四根线(I2C和UART使用两根)
无法确认数据已成功接收(I2C已执行此操作)
没有错误检查,如UART中的奇偶校验位
仅允许单个主机

关键字:SPI  总线

编辑:冀凯 引用地址:http://news.1900222.com/qrs/ic470019.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:你真的了解ESD吗?老司机从零教学系列之学会ESD选型
下一篇:一文了解UART总线工作原理、优缺点和应用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

16.HAL库之SPI和QSPI

1.SPI协议(以RN8302为例)SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线(SCSN,SCLK,SDI,SDO).总结传输流程:a.写时序SCSN拉低,开启通讯。主机依次写入地址,命令,数据(高位在前,低位在后),CS校验。主机在SCLK下降沿将数据通过SDI写入从机。最后SCSN拉高结束通讯。b.读时序SCSN拉低开启通讯,主机先写入地址+命令共两个字节,随后在SCLK下降沿读取从机从SDO输出的数据(高位在前,低位在后)。最后SCSN拉高结束通讯。驱动程序编写:头文件中需定义管脚控制命令,寄存器地址,芯片
发表于 2019-08-16
16.HAL库之SPI和QSPI

初探STM32 SPI2中断接收多组数据的处理方式

一、描述        两块STM32板子之间进行SPI通讯,都使用的是SPI2。主机连续发送多组数据(数据的格式为半字,即16位),从机采用SPI2中断方式接受主机发过来的多组数据。针对从机中断接受方法我尝试了两种方案:方案一:从机每接收主机发来的一组数据就进入中断一次,即主机发来几组数据从机就进入几次中断。方案二:仅当主机发来第一组数据时,从机才触发一次中断,然后关闭中断,以循环接受的方式接受主机发过来的剩下几组数据,当所有数据接受完后,再打开从机的接受中断。二、程序        因为两种方案的主机程序是一样的,如下:uint16_t 
发表于 2019-08-15

STM32F103做从机SPI通信SPI3中断异常

在做AM335D板子与STM32F103使用SPI通信时,需要用到STM32的从机模式,所以特别对于ST的从机模式进行了研究,由于硬件上使用的是STM32F103的SPI3,所以过程中遇到了一点麻烦,这里记录一下过程,以备查阅:使用SPI3通信时,从机时钟产生不了中断,经过查阅资料,是因为spi3的nss口与JTAG有共用引脚,所以配置错误会导致SPI3无法使用。需要注意以下两点就可以了:1.开启GPIO时钟的同时,开启AFIO时钟,如下:RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE ); 
发表于 2019-08-15

关于stm32的spi发送命令时的注意事项

        近日在进行一个倾角仪产品操作时,发现了stm32在往外发送数据时出现的一个问题。类似问题以前也出过,现在再次出现。特地写下来提醒自己注意以后防止再犯错。        该倾角仪adis16210与主控制器stm32通信时选用的是spi接口,并且在后续的操作过程中是使用stm32的官方函数库。在初期程序调试时,只是进行了spi的读操作(adis可以不用设置初试参数),能正常进行spi的读操作,能获取到随姿态变好的角度值。        在使用过程中,发现倾角仪更新数据太慢,因此需要对倾角仪进行设置
发表于 2019-08-14

【STM32CubeMX】12,STM32之SPI串行FLASH

1,野火的自带版本讲的还不错,综合多方的资料看比较好(1)  SS ( Slave Select):从设备选择信号线,常称为片选信号线,也称为 NSS、CS,以下用 NSS 表示。当有多个 SPI 从设备与 SPI 主机相连时,设备的其它信号线 SCK、MOSI及 MISO 同时并联到相同的 SPI 总线上,即无论有多少个从设备,都共同只使用这 3 条总线;而每个从设备都有独立的这一条 NSS 信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。I2C 协议中通过设备地址来寻址、选中总线上的某个设备并与其进行通讯;而 SPI 协议中没有设备地址,它使用 NSS 信号线来寻址,当主机要选择从设备时
发表于 2019-08-14
【STM32CubeMX】12,STM32之SPI串行FLASH

STM32-(18):SPI与数码管(SPI)

SPI串行接口SPI是由Motorala公司提出的一种同步串行外围接口。它在速度要求不高、低功耗、需保存少量参数的智能化传感系统中得到了广泛应用。SPI是一个全双工的同步串行接口。在数据传输过程中,总线上只能是一个主机和一个从机进行通信。1、MISO(Master In Slave Out)主机输入、从机输出信号。2、MOSI(Master Out Slave In)主机输出、从机输入信号。3、SCK(Serial Clock)串行时钟信号。(用来同步使用的)4、SS(Slave Select)从机选择信号,低电平有效。SPI系统连接SPI总线可在软件的控制下构成各种简单或复杂的系统。SPI通信工作原理SPI的基本结构相当于两个
发表于 2019-08-12
STM32-(18):SPI与数码管(SPI)

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 1900222.com, Inc. All rights reserved
极速赛车双面盘 极速赛车APP下载 极速赛车手机官网 极速赛车APP下载 极速赛车双面盘 极速赛车APP 极速赛车手机官网 极速赛车APP 极速赛车手机版下载 极速赛车APP下载