SPI通信协议详解

article/2025/8/26 23:55:18

SPI协议基本概念

SPI接口
(1)SPI(Serial Peripheral interface)是一种同步串行传输规范,也是单片机外设芯片串行外设扩展接口,该接口是一种高速,全双工,同步的通信总线,并且在芯片的管脚上占用4根线
(2)SPI接口主要应用在EEPROM,Flash,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间
(3)SPI由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换
(4)SPI接口由MOSI(串行数据输出),MISO(串行数据输入),SCLK(串行移位时钟),/SS(从设备使能信号),四种信号构成
请添加图片描述
(5)MOSI(串行数据输出),MISO(串行数据输入),SCL(串行移位时钟)都是公用的,只有SS(从设备使能信号)不是公用的,每增加一个从设备,那么就要增加一个SS使能信号,从而实现寻址的功能,当你的引脚不够用的时候,最好使用IIC(只有两根线)
引脚描述
MOSI:主设备数据输出,从设备数据输入
MISO:主设备数据输入,从设备数据输出
SCLK:时钟信号,由主设备产生
/SS:从设备使能信号,由主设备控制。当有多个从设备的时候,每个从设备都有一个片选接入到主设备机中,当我们的主设备和某个从设备通信时,需要将从设备对应的片选信号拉低或拉高
SPI接口特点
(1)SCLK信号线只由主设备控制,从设备不能控制信号线,同样,在一个基于SPI的设备中,至少有个主设备
(2)与普通的串行通信不同,普通的串行通讯一次连续传输至少8位数据(UART,但是还有一个起始位,一个停止位,还有校验位(可有可无)),而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据,也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制
(3)SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同的定义。
移位传输
请添加图片描述
在SCLK的控制下,两个双向移位寄存器进行数据交换
(4)在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显的简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比IIC系统要稍微复杂,SPI的一个缺点;没有指定的流控制,没有应答机制确认是否接收到数据

SPI的工作模式

概述
SPI通信有4种不同的模式,不同的从设备可能在出厂时就是配置为某种模式,这个不能更改,但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们的主设备的通信模式:
请添加图片描述
时钟极性CPOL是用来配置SCLK的电平出于空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿
CPOL=0;表示当SCLK = 0时,处于空闲态,所以有效态就是SCLK处于高电平
CPOL=1;表示当SCLK = 1时,处于空闲态,所以有效态就是SCLK处于低电平
CPHA=0;表示数据采样是在第1边沿,数据发送在第2个边沿,也就是奇数边沿被采样
CPHA=1;表示数据采样是在第2边沿,数据发送在第1个边沿,偶数边沿被采样请添加图片描述
(1)起始信号:NSS信号线由高变低,是SPI通讯的起始信号
(2)借宿信号:NSS信号由低变高,是SPI通讯的停止信号
(3)数据传输:SPI使用MOSI以及MISO信号来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出时同时进行的。SPI每次传输数据可以8位或16位为单位,每次传输的单位数不受限制
通信模式的设置
由于CPOL以及CPHA的不同状态,SPI分成了四种模式,主机与从机需要工作在相同的模式下才可以正常通信,因此通常主机要按照从机支持的模式去设置
请添加图片描述

STM32F4-SPI控制器特性

STM32F4的MOSI以及MISO都连接到数据移位寄存器上,数据移位寄存器的数据来源于接收缓冲区与发送缓冲区
(1)通过写SPI的“数据寄存器DR”把数据填充到发送缓冲区
(2)通过读“数据寄存器DR”可以获取接收缓冲区中的内容
(3)其中数据帧长度可以通过“控制寄存器CR1”的“DFF位”配置为8位或16位模式,配置“LSBFIRST位”可选择MSB先行还是LSB先行

内部SPI设置

STM32F429有高达6个SPI(45Mbits/s),其SPI接口提供两个主要功能:支持SPI协议和I2S音频协议。默认情况下,选择的是SPI功能。可通过软件将接口从SPI切换到I2S。
串行外设接口SPI可与外部器件进行半双工/全双工的同步串行通信。该接口可配置为主模式,在这种情况下,它可为外部器件提供通信时钟SCLK。该接口还能够在多主模式下工作
它可用于多种用途,包括基于双线的单工同步传输,其中一条可作为双向数据线,或使用CRC检验实现可靠通信请添加图片描述
片选接到了主控制逻辑芯片上面,主控制逻辑芯片又连接到了MOSI和MISO上面,时钟引脚接到了我们的波特率发生器上面,波特率是由SPI_CR1上面产生的,
单个主器件/单个从器件应用
请添加图片描述
主模式
请添加图片描述


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

相关文章

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。默认当…

通过两个小例子,更快了解-Xms -Xmx

我们偶尔就会遇到OutOfMemoryError,面试的时候总是能够被问道,可明明背好的面试题临时又不会了,答出来也很生硬,自己都想让自己快点“回家等通知”,那我们就通过下面的两个例子了解一下吧。 开发环境:ide…

程序员都需要会的JVM调优总结 -Xms -Xmx -Xmn -Xss,附idea配置实战(程序员必学)

目录 1.堆大小设置 2.JVM回收器和其他参数 3.JVM常见配置汇总 4.JVM在idea配置实战 5.JVM优化总结 1.堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制&#x…

Xms Xmx size 调整java虚拟机堆大小

-Xms 设置堆空间(年轻代)的初始内存大小,等价于 -XX:InitialHeapSize -Xmx 设置堆空间(老年代)的最大内存大小,等价于 -XX:MaxHeapSize 一旦堆区中的内存大小超过“-Xmx”所指定的最大内存时&#xff0c…

xms应用框架 - 基于.netcore

xms应用框架 - 基于.netcore 背景一、xms是什么二、能干什么三、目标四、框架介绍1、元数据管理2、组织架构3、授权体系4、高度可视化配置5、业务扩展6、流程7、二次开发 五、多图鉴赏六、源码地址 背景 鄙人经过多年开发,数百个项目“打磨(折磨)”,各种…

JVM -XMX与XMS是什么

XMS : JVM初始分配的堆内存XMX : JVM最大允许分配的堆内存,按需分配堆内存分配: 默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制; 空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。 因此服务器一般设置-Xms、-…

xms跨平台基础框架 - 基于.netcore

背景 鄙人经过多年开发,数百个项目“打磨(折磨)”,各种国内外框架平台都有涉及,没有一款称心顺手的,原因有三,一是设计反人类,二是不开源根本无法突破框架限制,三是即使开源也是阉割版&#xff…

C语言常见问题(3):Although the value stored to ‘ret‘ is used in the enclosing expression

就是这个ret返回值是在if里面表达式里赋值的,其他地方没有调用这个ret,相当于这个ret是个多余的!

DVWA靶场XSS(DOM/Reflected/Stored)/XSS+CSRF

目录 一、XSS (DOM) 1.Low 2.Medium 3.High 4.Impossible 二、XSS (Reflected) 1.Low 2.Medium 3.High 4.Impossible 三、XSS (Stored) 1.Low 2.Medium 3.High 4.Impossible 四、XSS(Stored)CSRF组合实验 1.直接访问修改密码URL 2.使用链接访问构造网页修改密码…

DVWA靶机-存储型XSS漏洞(Stored)

DVWA靶机-存储型XSS漏洞(Stored) 前章: DVWA靶机-暴力破解(Brute Force) && DVWA靶机的四个安全等级 DVWA靶机-命令注入漏洞(Command Injection) DVWA靶机-文件包含漏洞(File Inclusion) DVWA靶机-文件上传漏洞(File uploads) DVWA靶机-跨站请求伪造(…

DVWA-XSS(Stored)注入-Low-Medium-Hight

Low 1、进来这里可以看到&#xff0c;好像是有两个入口&#xff0c;先随便填个数据试试水&#xff0c;勒特 payload: <script>alert(1)</script> 2、直接提交&#xff0c;简单拿下。 Medium 1、继续尝试刚才的入口&#xff0c;勒特。 payload: <script>ale…

Solr---string类型的docValues属性、stored属性

描述&#xff1a; 使用solr6.0的默认配置后&#xff0c;多数的字段使用string类型&#xff0c;通过stored设置为false来减少存储大小&#xff0c;然而却没有效果&#xff0c;还是会存储并在查询时返回。 问题&#xff1a; 在managed-schema文件内发现&#xff0c;fieldType为s…

@available 修饰类成员变量报错Stored properties cannot be marked potentially unavailable

在不方便升级插件的情况下&#xff0c;可以手动修改这个问题

mysql routines是什么_MySQL入门:Stored Routines 的变数与流程 - Break易站

1 宣告与使用变数 在Stored routines中,除了可以宣告需要的参数外,如果需要处理比较复杂的资料,你也可以宣告「区域变数、local variables」。下列是宣告区域变数的语法与位置: 下列是几种宣告区域变数的范例: 宣告需要的区域变数后,你就可以在stored routines中使用它们…

Dvwa_XSS (Stored)

&#xff08;实验基础&#xff1a;有php语言和html语言基础&#xff09; 1、low 在Name里构造恶意脚本&#xff0c;写完10个字符后发现在输输不进去&#xff0c;此时按ctrlu&#xff08;火狐&#xff0c;Microsoft Edge&#xff0c;谷歌这三款浏览器都可用此快捷方式打开网页源…