SPI协议详解(工作特点、时序图)

article/2025/8/26 16:31:35

文章目录

  • 一、SPI总线介绍
    • 1.1.SPI信号列表
    • 1.2.SPI工作模式
    • 1.3.SPI特点——同步、串行、全双工、主从结构
  • 二、SPI传输时序
    • 2.1.时钟极性CPOL与时钟相位CPHA
    • 2.2.时序图
    • 2.3.SPI配置信息
    • 2.4.SPI数据交换过程

一、SPI总线介绍

  SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外设接口SPI协议主要作为主控芯片去配置外围芯片的接口协议。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步,串行,主从结构通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

  SPI总线的传输速率需要自定义,没有具体的规定,一般为:400KHz~10MHz(AHB:100MHz,APB:50MHz)

  • 主要功能实现MCU与各种外接设备连接(芯片与芯片之间的连接),以串行的方式进行数据交换(串并转换)
  • 拓扑结构一个SPI Master可以通过共享数据线的方式可以连接多个SPI Slave(一主多从)
  • 接口配置作为芯片与芯片之间互连的接口,通过配置寄存器实现主控芯片(SPI Master)对外围芯片(SPI Slave)的配置

1.1.SPI信号列表

信号名含义描述
SCKSerial Clock、时钟信号线Master 设备往 Slave 设备传输时钟信号, 同步控制数据交换的时机以及速率
MOSIMaster Ouput Slave Input、主设备输出从设备输入数据线在 Master 上面也被称为 Tx-Channel, 作为数据的出口, 用于SPI主设备发送数据
MISOMaster Input Slave Ouput、主设备输入从设备输出数据线在 Master 上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI从设备接收数据
SS_nSlave Select、从机选择线,低电平有效Master 设备片选 Slave 设备, 使被选中的 Slave 设备能够被 Master 设备所访问

  SS_n、SCK、MOSI信号均由主设备产生,MISO信号由从设备产生。在SS_n为低电平的前提下,MOSI和MISO信号才有效,在每个时钟周期MOSI和MISO传输一位数据。

1.2.SPI工作模式

  SPI通讯需要使用4条线:3条总线和1条片选,物理连接如下:
在这里插入图片描述
  SPI还是遵循主从结构,SPI协议适用于一主 多从的工作场景:
在这里插入图片描述

1.3.SPI特点——同步、串行、全双工、主从结构

  1. 同步方式(Synchronous)传输数据
      Master设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的
  2. 主-从结构(Master-Slave) 的控制方式
      SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave)一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock。
  3. 串行、全双工方式数据交换(Data Exchanges)
      SPI 设备间的数据传输之所以又被称为数据交换(全双工通信), 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”. 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据(串行通信)(不管主设备好还是从设备),相当于该设备有一个 bit 大小的数据被交换了。

需要说明的是,SPI只有主模式和从模式之分,没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

二、SPI传输时序

  SPI 设备在进行通信的过程中, Master 设备和 Slave 设备之间会产生一个数据链路回环(Data Loop)
  SPI接口有四种不同的数据传输时序,取决于时钟极性(CPOL)和时钟相位(CPHA)的组合。

2.1.时钟极性CPOL与时钟相位CPHA

  • CPOL:表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1;
  • CPHA:表示对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿;

1)、CPHA=0,表示第一个边沿:

   对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;
   对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;
2)、CPHA=1,表示第二个边沿:

  对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;
  对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;
        在这里插入图片描述

2.2.时序图

参考:https://blog.csdn.net/ivy_reny/article/details/78189058?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6
在这里插入图片描述
  Bit1为MSB,Bit8为LSB。假设CPOL=0,CPHA=0。在SCK的第一个时钟周期,在时钟的前沿采样数据(上升沿),在时钟的后沿输出数据。先看主器件,主器件的输出口(MOSI)输出数据bit1,在时钟的前沿被从器件采样,那主器件是何时输出bit1的呢?bit1的输出时刻实际上在SCK信号有效以前,比SCK的上升沿还要早半个时钟周期,bit1的输出时刻与SS_n信号没有关系。再来看从器件,主器件的输入口MISO同样是在时钟的前沿采样从器件输出的bit1的,那从器件又是在何时输出bit1的呢?从器件实在SS_n信号有效后,立即输出bit1,尽管此时SCK信号还没有生效。
在这里插入图片描述

2.3.SPI配置信息

在这里插入图片描述

2.4.SPI数据交换过程

在这里插入图片描述
   SPI是一个环形总线结构,由SS_n (CS)、SCK、MOSI、MISO构成,时序很简单,在SCK的控制下,SSPSR是SPI设备内部的移位寄存器,根据SPI时钟信号状态,往SSPBUF里移入或移出数据,每次移动的数据大小由Bus-width和Channel-width决定。在正常工作时,两个双向移位寄存器进行数据交换,寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。在每个时钟周期内,Master与Slave之间交换的数据其实都是SPI内部移位寄存器从SSPBUF里面拷贝的,可以通过往SSPBUF对应的寄存器(Tx-Data/Rx-Data register)里读写数据,间接操控SPI内部的SSPBUF。SSPSR控制数据移入移出SSPBUF。Master里面的Controller主要通过时钟信号以及片选信号来控制Slave。Slave会一直等待,直到接收到Master发过来的片选信号,然后根据时钟信号来工作。Master的片选操作必须由程序实现。。

  • SSPBUF,Synchronous Serial Port Buffer, 泛指 SPI 设备里面的内部缓冲区, 一般在物理上是以FIFO 的形式, 保存传输过程中的临时数据;
  • SSPSR, Synchronous Serial Port Register, 泛指 SPI 设备里面的移位寄存器(Shift Regitser), 它的作用是根据设置好的数据位宽(bit-width) 把数据移入或者移出 SSPBUF;
  • Controller, 泛指 SPI 设备里面的控制寄存器, 可以通过配置它们来设置 SPI 总线的传输模式。

http://chatgpt.dhexx.cn/article/0EH2Z7Tb.shtml

相关文章

SPI 通讯协议

Cuitbasics 汽车ECU设计 2/2 当您将微控制器连接到传感器,显示器或其他模块时,您是否考虑过这两种设备是如何相互通信的?他们到底在说什么? 事实上电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电…

SPI学习(三):SPI协议波形

写在前面:上一小节介绍了SPI的基本工作原理与极性相位等知识,这一小结介绍波形 由于我实际用到的IP是ARM PrimeCell SSP(PL022),所以会以这个IP为主,也会对比《SPI Block Guide V04.01》 一.PL022支持的三种帧格式介绍 一共有三种帧格式可…

SPI协议介绍

文章目录 1- SPI协议介绍2- SPI总线传输模式3- SPI总线数据交换3- SPI与I2C对比 1- SPI协议介绍 SPI(Serial Peripheral Interface)是一种高速全双工同步串行通信协议,它由一个主设备(Master)和一个或多个从设备(Slave)组成,其中…

【数字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 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线,…