SPI通信协议基础

发布者:创意航海最新更新时间:2023-05-16 来源: zhihu关键字:SPI  通信协议  基础 手机看文章 扫描二维码
随时随地手机看文章

引言

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

电子设备之间的通信就像人类之间的通信。双方都需要说相同的语言。在电子学中,这些语言称为 通信协议。对我们来说幸运的是,在构建大多数DIY电子产品项目时,我们只需要知道一些通信协议即可。

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

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

正文

串行与并行通信

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

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



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



SPI通信简介

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

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

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



  • MOSI(主机输出/从机输入) –主机将数据发送到从机的线路。

  • MISO(主机输入/从机输出) –从机将数据发送到主机的线路。

  • SCLK(时钟) –时钟信号线。

  • SS / CS(从站选择/芯片选择) –主站用于选择向其发送数据的从站的线路。



实际上,从站的数量受系统负载电容的限制,这降低了主机在电压电平之间准确切换的能力。

SPI如何运作?

时钟

时钟信号将主设备的数据位输出同步到从设备的位采样。每个时钟周期传输一位数据,因此数据传输的速度取决于时钟信号的频率。由于主机配置并生成时钟信号,因此SPI通信始终由主机启动。

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

可以使用时钟极性和时钟相位的属性来修改SPI中的时钟信号。这两个属性共同定义了何时输出位以及何时对其进行采样。主机可以设置时钟极性,以允许在时钟周期的上升沿或下降沿输出和采样位。可以设置时钟相位,以便在时钟周期的第一沿或第二沿进行输出和采样,而不管它是上升还是下降。

从机选择

主机可以通过将从机的CS / SS线设置为低电压电平来选择要与之通信的从机。在空闲,非传输状态下,从选择线保持在高电压电平。主机上可能有多个CS / SS引脚,这允许多个从机并行连接。如果仅存在一个CS / SS引脚,则可以通过菊花链将多个从机连接到主机。

多个从机

可以将SPI设置为与单个主机和单个从机一起运行,并且可以与由单个主机控制的多个从机一起设置。有两种方法可以将多个从站连接到主站。如果主机具有多个从机选择引脚,则从机可按以下方式并联:



如果只有一个从设备选择引脚可用,则可以通过以下方式菊花链连接从设备:



MOSI和MISO

主机通过MOSI线以串行方式将数据发送到从机。从机通过MOSI引脚接收主机发送的数据。从主机发送到从机的数据通常先发送最高有效位。

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

SPI数据传输步骤

  1. 主机输出时钟信号:


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



  1. 主机沿着MOSI线一次将数据发送给从机。从站读取接收到的位:



  1. 如果需要响应,则从机沿着MISO线一次将数据返回一位给主机。主机读取接收到的位:



SPI的优缺点

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

优点

  • 没有起始位和停止位,因此数据可以连续流传输而不会中断

  • 没有像I2C这样复杂的从站寻址系统

  • 数据传输速率比I2C更高(几乎快两倍)

  • 分开的MISO和MOSI线路,因此可以同时发送和接收数据

缺点

  • 使用四根线(I2C和UART使用两根线)

  • 没有确认已成功接收数据的确认(I2C拥有此功能)

  • 没有任何形式的错误检查,如UART中的奇偶校验位

  • 只允许一个主机


关键字:SPI  通信协议  基础 引用地址:SPI通信协议基础

上一篇:什么是单片机,什么叫单片机?
下一篇:MCU如何在扩展的SDRAM上运行程序?

推荐阅读最新更新时间:2024-11-10 17:06

非线编系统应用过程中的基础知识
非线编系统应用过程中的基础知识 任何系统都是由若干个元素组成的,在是至关重要的: 文件 在非线性编辑系统中,所有素材都以文件的形式存储在记录媒体(硬盘、光盘和软盘)中,并以树状目录的结构进行管理。每个文件被分成标准大小的数据块,通过链表进行快速访问。在这一基础上,非线性编辑系统的快速定位编辑点的功能才能充分发挥。编辑工作中主要用到两种文件-素材文件和工作文件。工作文件包括用来记录编辑状态的项目(工程)文件和管理素材的库文件等;素材文件可粗略分为静态图像、音频、视频、字幕和图形文件等几大类。素材文件中除了可记录画面和声音数据以外,还能够保存素材的名称、类别、大小、长度及存储位置等信息,极大地方便了节目的制作和素材的管理。 图
[嵌入式]
GD32开发实战指南(基础篇) 第20章 GD32的存储结构
开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 1 GD32存储结构的工作原理 1.1 Cortex-M内核的存储器映射 存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOTBLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。 如下图,是Cortex-M3存储器映射结构图。 Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000 - 0xFFFF_FFFF这一大块空间。根据图中描述,Corte
[单片机]
汽车电子系统总线LIN通信协议简介
简介 本地互联网络 LIN(Local Interconnect Network)总线协议,是基于UART/SCI(Universal Asynchronous Receiver-Transmitter/SerialCommunication Interface通用异步收发器/串行通信接口)的低成本串行通信协议。在车载电子系统中,相对于CAN总线而言,LIN总线协议较为简单,对单片机的要求也并不高,基本的串口就可以实现,成本较低,可作为CAN总线的辅助总线。LIN总线广泛应用于车门、车窗、车灯以及中控锁等车身控制领域。 表x LIN总线协议大事记 最新的标准: ISO 17897-2016/2019 SAE J2602
[嵌入式]
汽车电子系统总线LIN<font color='red'>通信协议</font>简介
示波器探头基础系列之五——示波器探头使用指南(下)
有源(FET)探头 对于许多应用要求高的阻抗和频率(如2GHz以上),则有源探头成为有力的工具。有源探头使用具有高的输入阻抗的场效应管放大器和缓冲器电路。典型的有源探头提供1:1的电压增益和1MOhm输入电阻和2.2pF输入电容,1G带宽。其电路原理图如图14所示: 图 14 有源探头原理图 关键部件包括由场效应管构成的源极,互补双极晶体管构成的发射机。FET提供很高的输入电阻,大于1011倍探头输入电阻。有源探头要求供电,并有一个更为严格的动态范围。实际上,高带宽有源探头最大的缺点在于其很容易被高压打坏。因为有源探头远远比无源探头贵,使用者注意应该避免这一点。实际上,有源探头填补了高阻探头和低容值探头的各自缺点。具有高达2
[测试测量]
示波器探头<font color='red'>基础</font>系列之五——示波器探头使用指南(下)
【ARM裸板】Nor Flash基础知识与编程示例
1.NOR与NAND的区别 Flash NOR NAND 接口 RAM-Like,引脚多 引脚少,复用(地址数据共用) 容量 小(1-32M) 大(128M+) 读 简单 复杂 写 发出特定命令(慢) 发出特定命令(快) 价格 贵 较便宜 缺点 无位反转、坏块 位反转、坏块 一般存放 bootloader(关键程序) 大文件、视频 xip 可以 不可以 xip(eXecute In Place),即芯片内执行,指应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。flash内执行是指nor flash 不需要初始化,可以直接在flash内执行代码。但往往只执行部分代码,比如初始化RAM. 2.命令表 U
[单片机]
【ARM裸板】Nor Flash<font color='red'>基础</font>知识与编程示例
PIC16F877A开发板 SPI总线驱动74595实验
//*****************电子园PIC16F877A开发板 SPI总线驱动74595实验*************** // //CKP=0; 空闲为低电平 //CKP=1; 空闲为高电平 //STAT_CKE=0; SDO后沿采样 //STAT_CKE=1; SDO前沿采样 // //STAT_SMP=0; //在数据输出时间的中间采样输入数据 //STAT_SMP=1; //在数据输出时间的末尾采样输入数据 // //RC3/SCK 接74595 移位时钟11脚 //RC5/SDO 接74595 数据输入14脚 //RC4/SDI 接74595 锁存时钟12脚 // //mcu: PIC16F877
[单片机]
国家能源局:加快构建高质量充电基础设施
  国家能源局日前发布的数据显示,截至今年6月底,全国充电桩总量达到1024.4万台,同比增长54%,保障了2400万辆新能源汽车的充电需求。随着我国新能源汽车市场快速发展,构建高质量充电基础设施体系,有助于更好满足群众购置和使用新能源汽车的需要。当前 ...
[新能源]
比科奇介绍其打造更加智能移动通信基础设施新愿景
近期, 2023年MWC上海世界移动通信大会在上海圆满落幕。 作为5G开放式RAN基带芯片和电信级软件提供商,比科奇在展会期间介绍了其在引入人工智能(AI)等技术打造更加智能的移动通信基础设施方向的新愿景,包括致力于解决困扰行业的基站功耗等问题,以及人工智能技术与先进无线通信技术的结合等创新,同时为大会带去了多个精彩演示,并与业界合作伙伴和观众进行了积极地沟通与交流。 比科奇在本届MWC上海展会上再次展现了其领先的技术、完善的生态和快速的发展。在开幕当日上午,比科奇和无线接入通信系统解决方案提供商几维通信技术(深圳)有限公司(KiwiCT)联合发布了业界首款完整功能的4G+5G双模小基站。由几维通信设计和制造的DYND-610
[网络通信]
比科奇介绍其打造更加智能移动通信<font color='red'>基础</font>设施新愿景

推荐帖子

在电源应用中,用SiC还是GaN比较好?来聊聊实际需要考虑的因素
在电源应用中,是用SiC还是GaN?是不是其中一种可以完全替代另外一种?在实际应用中,需要考虑哪些因素呢?在往下看往下聊之前,小伙伴们可以自己先投个票,说一说直观感受下你觉得选哪个比较好,还可以跟帖说说你的理由。大家一起来聊一聊:选择使用GaN还是SiC器件,从实际应用要关注的角度来看,主要取决于四个关键因素:可靠性、性能、成本和产能。从可靠性来讲的话:SiC有它自身的一些缺陷问题,但是也已经取得了基本的可靠性水准,而GaN的可靠性水平跟Si的差不多。管管找来了这样
okhxyyo 电源技术
DS18B20温度传感器的proteus仿真
温度最小分辨率为0.5度;显示范围为零下10度至零上50度;用LED显示当前温度值;可通过键盘设定温度上、下限,超限报警。 DS18B20温度传感器的proteus仿真先感谢了顶一下顶一下:D谢谢啦正用得着!!!!!顶!!顶一个,找了很久了,正好需要,谢谢楼主了楼主有Protus软件么,拿出来给大家分享哈最右边的3个KEY,是什么意思呢?内容不错,收藏啦!谢了还差一枚芯币,这回应该可
historyarea 单片机
NIOSII那些事儿REV7.0
NIOSII那些事儿REV7.0谢谢楼主,无私分享
陌路绝途 FPGA/CPLD
分享:胶囊机器人的天线设计资料(英文)
胶囊机器人的天线设计资料(英文)分享:胶囊机器人的天线设计资料(英文)
qwqwqw2088 RF/无线
请教SD卡启动NK.bin
小弟遇到难题,请教各位前辈!分都用完了,还请各位前辈帮帮我。问题:在eboot启动后,添加从SD(fatorfat32)卡直接启动NK的工作。目前进展,nk.nb0已经可以读到ram,ce也已经起来了。目前需要使nk.bin也可以这样放到SD卡里面启动。不知道nk.bin写入ram的时候怎么解析,请各位前辈指点一二。谢谢大家了~!请教SD卡启动NK.bin参照ms的eboot代码就可以了,直接搬过来就行引用2楼veabol的回复:\\WINCE500\\PUBLIC\\
Feeeee 嵌入式系统
关于Windows 2000的电源管理 (转载)
电源管理  Windows2000对系统的电源管理功能进行了极大的扩展。比如,可以设置当按下机箱上的电源按钮时,系统执行挂起、快速关机(当然是安全关机,绝不是突然断电)等操作,而这项功能以前可是HP等原装机的专利。不过要使用该功能有一个条件,就是你的主板必须支持ACPI规范,否则这项功能选项不会出现,不过现有的主板几乎都支持该规范。调出这项功能的步骤为:在“控制面板”中打开“电源管理”,再选择“高级”标签,然后就可以在其中选择当按下电源按钮时系统要执行的动作了。  Windows
zbz0529 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved