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

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

1、基础知识

1.1 概念

SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输,广泛用于EEPROM、Flash、RTC(实时时钟)、ADC(数模转换器)、DSP(数字信号处理器)以及数字信号解码器上。SPI通信的速度很容易达到好几兆bps,所以可以用SPI总线传输一些未压缩的音频以及压缩的视频。

特点:
       SPI设备之间通信必须由主设备控制从设备,主设备可通过片选实现控制多个从设备,从设备不能产生或控制时钟,只可主设备提供。

        SPI是采用同步方式传输数据的。

        SPI设备之间数据传输又称为数据交换,不管是读数据还是写数据都需要发送数据到从设备为其提供时钟,才能正常进行,在有些设备读取数据时可能需要先写入数据,此时一定要记得将写入时从设备响应的数据也读出来,后面才可读出对应需要的数据。

优点:
        支持全双工操作,操作简单,数据传输速率较高。
缺点:
        需要占用主机较多的口线,只支持单个主机,没有应答机制确认是否接收到数据,相对于IIC缺点来说是一个大的缺点。

1.2 SPI物理层

        采用主从模式(Master-Slave)的控制方式,支持单Master多Slave。

        SPI规定了两个SPI设备之间通信必须由主设备Master来控制从设备Slave。也就是说,如果FPGA是主机的情况下,不管是FPGA给芯片发送数据还是从芯片中接收数据,写Verilog逻辑的时候片选信号CS与串行时钟信号SCK必须由FPGA来产生。同时一个Master可以设置多个片选(Chip Select)来控制多个Slave。SPI协议还规定Slave设备的clock由Master通过SCK管脚提供给Slave,Slave本身不能产生或控制clock,没有clock则Slave不能正常工作。

 注:一主一从

        SCK(Serial Clock):SCK是串行时钟线,作用是Master向Slave传输时钟信号,控制数据交换的时机和速率,它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,两个设备之间通讯时,通讯速率受限于低速设备。

        MOSI(Master Out Slave in):在SPI Master上也被称为Tx-channel,作用是SPI主机给SPI从机发送数据,主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。

        MISO(Master In Slave Out):在SPI Master上也被称为Rx-channel,作用是SPI主机接收SPI从机传输过来的数据,主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。

        CS/SS(Chip Select/Slave Select):从设备选择信号线,常称为片选信号线,也称为 NSS、SS。SPI 协议中没有设备地址,它使用 cs 信号线来寻址,当主机要选择从设备时,把该从设备的 cs 信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行 SPI 通讯。所以SPI通讯以 cs 线置低电平为开始信号,以 cs 线被拉高作为结束信号。

 注:一主多从

        SPI 协议使用 3 条总线及N条片选线,3 条总线分别为 SCLK、MOSI、MISO,片选线为CS,其中3条总线是多个从设备共用的,CS是每一个从机有一条。

1.3 SPI协议层

        SPI总线在传输数据的同时也传输了时钟信号,所以SPI协议是一种同步(Synchronous)传输协议。Master会根据将要交换的数据产生相应的时钟脉冲,组成时钟信号,时钟信号通过时钟极性(CPOL)和时钟相位(CPHA)控制两个SPI设备何时交换数据以及何时对接收数据进行采样,保证数据在两个设备之间是同步传输的。

        SPI总线传输一共有4中模式,这4种模式分别由时钟极性(CPOL,Clock Polarity)和时钟相位(CPHA,Clock Phase)来定义,其中CPOL参数规定了SCK时钟信号空闲状态的电平,CPHA规定了数据是在SCK时钟的上升沿被采样还是下降沿被采样。

        时钟极性 CPOL: 表示SPI 通讯设备处于空闲状态时,SCK信号线的电平信号(即 SPI 通讯开始前、CS 线为高电平时 SCLK的状态)。CPOL=0时, SCK在空闲状态时为低电平,CPOL=1 时,则相反。
        时钟相位 CPHA:表示数据采样的时刻,当 CPHA=0 时,MOSI 或 MISO 数据线上的信号将会在 SCLK 时钟线的“奇数边沿”被采样。当 CPHA=1 时,数据线在 SCLK 的“偶数边沿”采样。

        模式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时钟的下降沿切换

SPI工作模式CPOLCPHA空闲时的SCLK电平采样时刻
000低电平奇数边沿
101低电平偶数边沿
210高电平奇数边沿
311高电平偶数边沿

 SPI通信过程:

        SPI总线协议是一种全双工的串行通信协议,数据传输时高位在前,低位在后。SPI协议规定一个SPI设备不能在数据通信过程中仅仅充当一个发送者(Transmitter)或者接受者(Receiver)。在片选信号CS为0的情况下,每个clock周期内,SPI设备都会发送并接收1 bit数据,相当于有1 bit数据被交换了。数据传输高位在前,低位在后(MSB first)。SPI主从结构内部数据传输示意图如下图所示:

        在对SPI核操作的控制寄存器进行设置之后即可启动数据传输。数据传输的启动是通过向数据寄存器SPDR中写入数据。对数据寄存器执行写操作实际上是往一个4项写队列中添加数据项。每次写操作即往队列中写入一个字节的数据。当SPI核被使能时,并且写缓冲区不为空,SPI核就是会自动往发送写队列中最旧的数据项。接收数据与发送数据同时进行;每当发送一个字节的数据,同时总会收到一个字节的数据。如果想要的接收一个字节的数据,需要往写缓冲区写入一个字节的冗余数据,这样做是为了让SPI核启动数据传输,在发送冗余数据的同时接收想要的数据,每完成接收一个字节的数据,这个字节会被移入读缓冲区。读缓冲区和写缓冲区是对立的,是一个独立的4项队列。对数据寄存器执行读操作,便会得到读队列中的数据项。


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

相关文章

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,通用串行异步通讯协…

Xms Xmx Xss 释义

Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。 Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会…

JVM中的Xms和Xmx

JVM内存参数 -Xms和-Xmx 参考资料:(1) JVM常用内存参数配置 (2)深入理解Java虚拟机 -Xms和-Xmx (1)这两个参数老是搞混,特地记一下。-Xms 为JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当…