一文了解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  总线 编辑:冀凯 引用地址:一文了解SPI总线工作原理、优缺点和应用案例

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

推荐阅读

Flex Power Modules推出8:1非隔离式总线转换器
Flex Power Modules现已推出BMR320,这是一款非隔离、非稳压的DC-DC中间总线转换器,具有固定8:1输入/输出电压比,外形紧凑。该产品在40-60 VDC输入电压范围下运行,产生5至7.5 VDC输出电压,非常适宜在较低中间总线电压下为负载点转换器供电,以优化系统效率。在输入电压为54 V时,BMR320额定为400 W/60 A,可以在27 x 18 x 6.4 mm的小尺寸下出色地实现128 W/cm3 (2126 W/in3)的功率密度。产品效率峰值为97.7%,最多可并联三个单元,达到1080 W总负载。该产品适用于以气流对散热器进行顶部冷却或通过热块进行液体冷却,该转换器顶部相对扁平的设计,允许您通过
发表于 2022-11-16
Flex Power Modules推出8:1非隔离式<font color='red'>总线</font>转换器
单片机---ICC总线EEPROM理论
I2C:同步串行2线方式进行通信(一条时钟线SCL,一条数据线SDA)是一种串行总线I2C 总线的主要特点是接口方式简单,两条线可以挂多个参与通信的器件,即多机模式,而且任何一个器件都可以作为主机,当然同一时刻只能有一个主机。有接入的器件保持高电平,这条线才是高电平,而任何一个器件输出一个低电平,那这条线就会保持低电平,因此可以做到任何一个器件都可以拉低电平,也就是任何一个器件都可以作为主机虽然说任何一个设备都可以作为主机,但绝大多数情况下我们都是用单片机来做主机,而总线上挂的多个器件,每一个都像电话机一样有自己唯一的地址,I2C总线是通过上拉电阻接正电源。当总线空闲的时候,两根线均为高电平。I2C总线传输协议:数据位有效性规定SC
发表于 2022-11-12
单片机---ICC<font color='red'>总线</font>EEPROM理论
智能汽车CAN FD总线需要什么样的降噪对策?
CANFD等接口使用被称为差分传输的传输方式。差分传输通过两条信号线之间的电位差传输信号,因此具有不易受外部辐射噪声影响的特点。1.CANFD是什么CANFD是连接汽车内的ECU或电脑并进行通讯的车内局域网之一。CAN FD能够以比以往的CAN标准更快的速度进行通讯。2. 噪声问题CAN FD具有比以往的CAN更高的比特率,这也增加了CAN通讯时产生的发射噪声问题。CAN FD等接口使用被称为差分传输的传输方式。差分传输通过两条信号线之间的电位差传输信号,因此具有不易受外部辐射噪声影响的特点。此外,两条信号线上因信号而产生的电波还会相互抵消,因此难以作为噪声向外发射。然而,由于各种因素,电路板上会产生共模电流。如果共模电流流入差分传
发表于 2022-11-03
智能汽车CAN FD<font color='red'>总线</font>需要什么样的降噪对策?
矽力杰车规级LIN总线静电保护方案
LIN网络作为串行通讯网络,用于实现汽车中的分布式电子系统控制,它是现有汽车CAN网络功能的补充。LIN总线有效降低了汽车制造成本,提升了系统结构的灵活性,并且无论从硬件还是软件的角度而言,都为网络节点提供了相互操作性。LIN总线保护LIN总线是一种最大数据速率为20kbit/s的单线通信。常用于汽车网络中数据速率不需要特别高的外围设备的网络连接,LIN总线应用较多的是灯光照明,车窗座椅,汽车天窗,雨量探测器等的控制传输。LIN和CAN总线有什么区别?单线通信,传输速率较低LIN总线与CAN总线的一对差分双绞线不同,采用单线通信,多个节点可以并联到同一根线上。通信速率最高只能20kbit/s,而CAN可达1Mbit/s。主从结构,中
发表于 2022-10-27
矽力杰车规级LIN<font color='red'>总线</font>静电保护方案
福特汽车LIN总线结构及灯光功能开关原理
福特汽车旗下有福特(Ford)、林肯(Lincoln)、水星(Mercury)三个品牌,重要车型有Thunderbird(雷鸟),Mustang(野马),F系列卡车,T系列轿车。文中涉及福特汽车LIN总线结构及灯光功能开关原理不涉及长安福特、江铃福特和福田汽车,因为没有在这些车上做过实际测试,也没有客户有项目和数据需求需要涉及这些方面,主要指的进口车系。福特汽车LIN总线取代了原来的MUX电路或者专用电路,CCN控制单元是其中一个LIN总线网络上的主模块,他的功能包括了多功能开关中的灯光、雨刮器、加热座椅系统、指南针模块和危险警告灯开关。另一路LIN主线的主模块是WCM,这个主要是连接的胎压监控系统。图一:主模块LIN总线经过解码和
发表于 2022-10-21
福特汽车LIN<font color='red'>总线</font>结构及灯光功能开关原理
STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)
一、环境介绍编程软件: keil5操作系统: win10MCU型号: STM32F103ZET6STM32编程方式: 寄存器开发 (方便程序移植到其他单片机)IIC总线: STM32本身支持IIC硬件时序的,本文采用的是模拟时序,下篇文章就介绍配置STM32的IIC硬件时序读写AT24C02和AT24C08。模拟时序更加方便移植到其他单片机,通用性更高,不分MCU;硬件时序效率更高,单每个MCU配置方法不同,依赖硬件本身支持。目前器件: 采用AT24C02 EEPROM存储芯片完整的工程源码下载地址,下载即可编译运行测试(包含了模拟IIC时序、STM32硬件IIC时序分别驱动AT24C02和AT24C08): https://dow
发表于 2022-10-13
STM32入门开发: 介绍IIC<font color='red'>总线</font>、读写AT24C02(EEPROM)(采用模拟时序)
小广播
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved