SPI协议介绍

article/2025/8/26 20:45:54

文章目录

    • 1- SPI协议介绍
    • 2- SPI总线传输模式
    • 3- SPI总线数据交换
    • 3- SPI与I2C对比


1- SPI协议介绍

SPI(Serial Peripheral Interface)是一种高速全双工同步串行通信协议,它由一个主设备(Master)和一个或多个从设备(Slave)组成,其中主设备启动与从设备的同步通信,从而完成数据的交换。

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,一般需要4根线,事实上3根也可以。
在这里插入图片描述

  • MISO(Master Input Slave Output)/SDI(Serial Data Input)
    主设备数据输入,从设备数据输出。
  • MOSI(Master Output Slave Input)/SDO(Serial Data Output)
    主设备数据输出,从设备数据输入。
  • SCLK(Synchronous Clock)
    同步时钟信号,由主设备产生。
  • CS(Chip Select)
    从设备使能信号,由主设备控制。当总线上有多个从设备的时候,主设备如果需要和某个从设备通信,就将该设备对应的片选引脚拉低使能。

由于SPI采用两根数据线实现全双工的数据通信,从而能达到比12C更快的通信速率。12C协议v2.1规定了100K, 400K和3.4M三种速率(bps)。而SPI是一种事实标准,并没有一个官方标准,已知已有的器件SPI 速率可达到50Mbps,具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。此外, SPI没有相应的流控和应答机制,这样跟IC协议相比在数据可靠性上有一定的缺陷。


2- SPI总线传输模式

Master设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse),时钟脉冲组成了时钟信号(Clock Signal),钟信号通过时钟极性(CPOL, Clock Polarity)和时钟相位(CPHA, Clock Phase)控制着两个SPI设备间何时数据交换以及何时对接收到的数据进行采样,来保证数据在两个设备之间是同步传输的。

  • CPOL(Clock Polarity,时钟的极性):规约SPI总线在空闲时,时钟信号是高电平还是低电平。
  • CPHA(Clock Phase,时钟的相位):规约 SPI设备是在时钟信号上升沿还是下降沿触发数据采样。

SPI总线传输也就出现了如下四种模式

  • 模式0-CPOL=0, CPHA=0: SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换。
  • 模式1-CPOL=0,CPHA=1:SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换。
  • 模式2-CPOL=1, CPHA=0:SCK串行时钟线空闲是为高电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换。
  • 模式3-CPOL=1,CPHA=1: SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换。
    在这里插入图片描述

其中比较常用的模式是模式0和模式3,为了更清晰的描述SPI总线的时序,下图展现了模式0下的SPI时序图。

从途中我们可以清晰地看出,在模式0下总线空闲时, SCK串行时钟线为低电平,当SS被主机拉低以后,数据传输开始,数据线MOSI和MISO的数据切换(Toggling)发生在时钟的下降沿(下图的黑色虚线),而数据线MOSI和MISO的数据采样(Sampling)发生在数据的正中间(下图中的灰色实线)。

在这里插入图片描述


3- SPI总线数据交换

一个Slave设备要想能够接收到Master发过来的控制信号,必须在此之前能够被Master设备进行访问(Access)。所以,Master设备必须首先通过拉低 SS/CS管脚对Slave设备进行片选,把想要访问的Slave设备选上。

SPI设备间的数据传输之所以又被称为数据交换,是因为SPI协议规定一个SPI设备不能在数据通信过程中仅仅只充当一个"发送者(Transmitter)“或者"接收者(Receiver)”。事实上SPI设备在通信时两边各有1个移位寄存器,这样在发送一个bit的同时将会收到对方1个bit的数据,当发送完8bit数据后,也将收到对方的8bit数据,这也就意味着完成了1个byte的数据交换。

在这里插入图片描述

SPI数据传输过程实际上就是主从设备两个移位寄存器的数据交换过程,所以SPI的读功能实际上可以由SPI的写功能实现,即随便写一个字节的无效数据(Dummy Data)即可。在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样,如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导致SPI物理模块最级生效,因此,在程序中一般都会在SPI传输完数据后,正在联网识别并翻译。去读取 SPI设备里的数据,即使这些数据(Dummy Data)在我们的程序里是无用的。


3- SPI与I2C对比

前面我们讲了I2C,现在我们来对比一下I2C和SPI的区别:

  • SPI是全双工,而IIC是半双工
  • I2C支持多主机多从机,SPI只能有一个主机
  • 从GPIO占用上来看,IIC占用更少的GPIO,更节省资源
  • SPI的数据位宽更灵活,可以根据需要选择多位数数据宽度
  • SPI协议没有响应机制,主机无法得知从机是否接收到所发的数据,如果不采用一些方法的话可能会导致数据丢帧
  • 正是因为没有复杂的响应机制,SPI协议可以做到非常高的速率,每一个SCLK都可以进行数的传输,通过引入CRC校验等校验方法,可以即高速传输数据,又能保持数据的准确度。
  • I2C通过期间地址来选择从机,从机数量的增加不会导致GPIO的增加,而SPI通过CS片选信号选择从机,每增加一个从机就要多占用一个GPIO,当然也可以通过加入译码器来实现多从机控制

http://chatgpt.dhexx.cn/article/MeEssKed.shtml

相关文章

【数字IC】深入浅出理解SPI协议

深入浅出理解SPI协议 一、什么是SPI协议二、什么是全双工通信协议三、SPI的信号线四、SPI的连接方式4.1 多NSS形式4.2 菊花链形式 五、SPI可配置变量5.1 时钟极性(CPOL)5.2 时钟相位(CPHA)5.3 CPOL和CPHA组合出四种情况5.4数据大小…

通信协议(二)——SPI协议

1、基础知识 1.1 概念 SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输&am…

SPI协议代码

软件模拟SPI程序代码 文章目录 SPI协议简介●SPI接口介绍●SPI数据传输方向●SPI传输模式 通过两个单片机模拟SPI来加深理解※硬件连接方式✯SPI模式✯程序思路✯主机C代码波形✯从机C代码波形 概述:    通过两个MCU(STM32F103)来模拟SPI…

SPI协议讲解与总结

1.SPI通讯协议 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线 1.1 SPI引脚与工作过程 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一…

【STM32】SPI协议通信详解

目录 一.SPI协议简介二.SPI物理层三.SPI协议层 1.通讯的起始和停止信号2.数据有效性3.时钟信号的相位和极性(重点) 四.SPI 特性及架构(重点) 1.通信引脚2.时钟控制逻辑3.数据控制逻辑(非常重要)4.全双工发…

FPGA实现的SPI协议(一)----SPI驱动

写在前面 SPI协议系列文章: FPGA实现的SPI协议(一)----SPI驱动 FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用 1、什么是SPI协议 SPI(Serial Peripheral Interface,串行外围设备…

SPI总线协议概述

一.概述 SPI(serial peripheral interface)是一种同步串行通信协议,由一个主设备和一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据的交换。SPI是一种高速全双工同步通信总线,标准的SPI仅仅使用4个引脚&#xff…

SPI协议详解(总结)

关于SPI协议 1)SPI是串行外设接口(Serial Peripheral Interface)的缩写; 2)是一种高速的,全双工,同步的通信总线; 3)在芯片的管脚上只占用四根线,节约了芯片的…

SPI通讯协议介绍

来到SPI通讯协议了。废话两句,“SPI很重要”,这是我在学校时候听那些单片机开发工程师说的。出来实习,到后来工作,确实如此,SPI的使用很常见,那么自然重要咯。 SPI(Serial peripheral interface)即串行外围…

spi协议及工作原理分析

说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html 一、概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro…

SPI总线协议介绍

SPI总线协议介绍 一、技术性能 SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI接…

SPI 协议的解析

目录 1、SPI 的硬件层 1.1、SPI接口的信号线 1.2、SPI通信常见的连接方式 2、SPI的通信协议 2.1、起始信号 2.2、停止信号 2.3、数据有效性 2.4、时钟的同步 3、SPI的四种工作模式 SPI协议是由摩托罗拉公司提出的一种串行外围设备通信接口,是一种高速全双工…

SPI协议详解

1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器&a…

一文看懂SPI协议

文章目录 SPI协议简介4线还是3线?4种工作模式多种传输速率SPI协议的基本时序SPI协议的升级版FPGA实现SPI协议SPI和IIC的对比总结 SPI协议简介 板卡内不同芯片间通讯最常用的三种串行协议:UART、I2C、SPI,之前写过串口协议及其FPGA实现&#…

SPI协议简单介绍

导言 SPI是串行扩展总线。 串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时系统的更改和扩充极为容易。 常用的串行扩展总线有:I2C(Inter IC Bus)总线、单总线(1-WIRE BUS)、SPI(Serial Peripher…

SPI通信协议详解

SPI协议基本概念 SPI接口 (1)SPI(Serial Peripheral interface)是一种同步串行传输规范,也是单片机外设芯片串行外设扩展接口,该接口是一种高速,全双工,同步的通信总线,…

SPI 协议详解

SPI 协议详解 1、SPI 简介2、SPI四线3、SPI四种工作模式4、SPI时序图 1、SPI 简介 SPI 全称是 Serial Perripheral Interface,也就是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线,…

SPI协议简介—学习笔记

SPI协议简介—学习笔记 1、SPI百度百科 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚&…

一文搞懂SPI通信协议

目录 1、简介 2、通信原理 3、通信特性 3.1、设备选择 3.2、设备时钟 3.2.1、时钟速率 3.2.2、时钟极性 3.2.3、时钟相位 3.3、四种模式 4、多从机模式 5、SPI优缺点 1、简介 SPI是串行外设接口(Serial Peripheral Interface)的缩写&#xf…

SPI协议详解(图文并茂+超详细)

加入技术交流群 领取资料 文章目录 先说串口SPI通讯协议SPI特性时钟频率时钟极性 CKP/Clock Polarity时钟相位 CKE /Clock Phase (Edge)时钟配置总结 模式编号多从机模式优缺点SPI通讯的优势SPI的缺点 编程实现 先说串口 因为之前写过一篇UART,通用串行异步通讯协…