当前位置: 首页 > news >正文

SPI协议详解(Standard SPI、Dual SPI和Queued SPI)

1、标准SPI

1.1、SPI接口的引脚

在这里插入图片描述

(1)SCLK:时钟线;
(2)MOSI(master output slave input):主设备输出,从设备输入,单向传输;
(3)MISO(master input slave output):主设备输入,从设备输出,单向传输;
(4)CS(chip select):片选信号,用于主片选中从片;

1.2、SPI通信协议

在这里插入图片描述

(1)SPI(serial peripheral interface)是串行外设接口的缩写;
(2)SPI是一种高速的、全双工、同步的串行通信总线; 全双工体现在主从设备间通信时发送数据和接收数据是单独的数据线,能够同时接收和发送数据;同步体现在主从设备间有时钟线,主设备提供时钟信号;
(3)SPI可以实现采用主从方式工作,实现一对多,其中主设备通过多个CS片选引脚来控制和从设备的通信;
(4)SPI总线在传输数据时,先传送高位,后传送地位;数据线为高电平表示逻辑1,低电平表示逻辑0;一个字节传送完成后,无须应答即可开始下一个字节的传送;
(5)主设备/从设备在时钟线的上升沿或者下降沿往数据线上发送数据,在下降沿或者上升沿从数据线上读取数据;

1.3、SPI的四种模式:相位和极性

CPOL=0CPOL=1
CPHA=0时钟线在空闲时为低电平;在每个周期的第一个时钟沿采样时钟线在空闲时为高电平;在每个周期的第一个时钟沿采样
CPHA=1时钟线在空闲时为低电平;在每个周期的第二个时钟沿采样时钟线在空闲时为高电平;在每个周期的第二个时钟沿采样

(1)相位(CPOL):表示时钟线空闲时的状态;
(2)极性(CPHA):表示设备从数据线采样的时刻;

1.4、时序分析

在这里插入图片描述

(1)上面的时序图是CPOL=1 ,CPHA=1的情况;
(2)MSB代表字节数据的高位,LSB代表字节数据的地位,所以SPI协议是先发高位再发低位;
(3)在每个时钟周期发送一个bit的数据,数据在数据线上的发送和接收是在一个时钟周期里完成的,前半个周期A设备往数据线上发数据,后半个周期B设备从数据线上读数据;
(4)分析MOSI线上发送MSB位的时序:空闲时时钟线是高位,在时钟线的下降沿主设备开始往MOSI线发数据,在上升沿时从设备从MOSI线上读数据,这样一个bit就传输完成;
(5)空闲时时钟线是高电平,所以CPOL=1;每个时钟周期都是先有下降沿再有上升沿,设备是在上升沿采样,而上升沿是时钟周期的第二个时钟沿,所以CPHA=1;

1.5、四种模式的选择

(1)实际的电路中,SPI协议中的主设备就是主控,从设备是外设;
(2)主控的SPI控制中,模式是可以配置的,但是从设备的模式是在出厂的时候就定死了;
总结:查阅外设的数据手册,知道外设的SPI模式,主设备去适配从设备的模式;

1.6、SPI协议的优缺点

优点:
(1)没有像I2C这样复杂的从设备寻址系统;
(2)分离的MISO和MOSI信号线,因此可以同时发送和接收数据,支持全双工;
(3)极其灵活的数据传输,不限于8位,它可以是任意大小的字;
(4)数据传输速率比I2C更高(几乎快两倍);
缺点:
(1)使用四根信号线(I2C和UART使用两根信号线);
(2)虽然没有负责的从设备寻址系统,但是要为每个从设备预留一根CS片选线;
(3)没有应答机制,无法确认是否已成功接收数据;
(4)与RS-232和CAN总线相比,只能支持非常短的距离;

2、Dual SPI和QSPI

2.1、使用场景介绍

(1)通常我们说的SPI就是Standard SPI,有4根信号线,分别为CLK、CS、MOSI和MISO,也就是上面介绍的SPI协议;
(2)Dual SPI:只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flash,全双工并不常用,因此扩展了mosi和miso的用法,让它们工作在半双工,用以加倍数据传输。也就是对于Dual SPI Flash,可以发送一个命令字节进入dual mode,这样MOSI变成SIO0(serial io 0),MISO变成SIO1(serial io 1),这样一个时钟周期内就能传输2个bit数据,加倍了数据传输;
(3)Queued SPI Flash:在Dual SPI的基础上增加了两根I/O线(SIO2,SIO3),目的是一个时钟内传输4个bit,而QSPI就是Queued SPI的简写;
总结:Dual SPI和Queued SPI是针对flash的接口,根据flash工作的特性,将全双工改为半双工,提高通信的速率;

2.2、QSPI接口分析

在这里插入图片描述
在这里插入图片描述>(1)CS:片选线;
(2)WP(IO2):复用引脚,WP(write protect):当做写保护引脚;IO2就是当做数据传输引脚;
(3)HOLD(IO3):复用引脚,做HOLD功能时是暂停QSPI Flash的操作,IO3就是当做数据传输引脚;
总结:QSPI的引脚是功能复用的,具体时序不去分析,最终要达到的效果是能时序同时4根数据线去传输数据;

2.3、QSPI的电路原理图

在这里插入图片描述

(1)上面是SPI flash的电路原理图;
(2)连接的线:时钟线、复位线、片选线、4根数据传输线;

3、三种SPI协议的总结

(1)标准SPI是通用的,Dual SPI和QSPI只适用于flash;
(2)标准SPI:标准4线连接,全双工,同时收和发;
(3)Dual SPI:标准4线连接,半双工,2根数据线,并线发和收,双方向切换;
(4)QSPI:标准4线连接,半双工,4根数据线,并线发和收,双方向切换;

推荐

给大家推荐一个学校嵌入式知识的网站,博主在大学时候学习嵌入式知识、找工作的时候都在用这个网站,网站里有C语言、Linux等等的笔试题、面试常问问题等等知识,无论是学习基础知识、面试刷题、交流工作经验都是不错的选择。大家一起进步,欢迎留言交流。
链接:学习神器跳转
在这里插入图片描述
在这里插入图片描述

相关文章:

SPI协议详解(Standard SPI、Dual SPI和Queued SPI)

1、标准SPI 1.1、SPI接口的引脚 (1)SCLK:时钟线; (2)MOSI(master output slave input):主设备输出,从设备输入,单向传输; (3)MISO(master input slave output):主设备输入,从设备输…...

【代码随想录二刷】Day15-二叉树-C++

代码随想录二刷Day15 今日任务 层序遍历 226.翻转二叉树 101.对称二叉树 语言&#xff1a;C 层序遍历 102.二叉树的层序遍历 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> res;if(root NULL) …...

C++为什么能重夺年度语言?

目录一、爷青回1、年初依旧很多大新闻&#xff0c;其中一条就是TIOBE把年度编程语言颁给了C。2、这是什么概念&#xff1f;那一年Java的流行指数是14%。二、C为什么衰落三、C为什么重新流行1、C为什么重新流行起来了呢&#xff1f;2、C究竟做对了什么呢&#xff1f;3、根本原因…...

视频监控实时接入——以海康威视为例(2023.2.16)

海康威视实时视频监控接入学习 2023.2.16引言1、视频协议简介1.1 RTSP——Real Time Streaming Protocol&#xff08;实时流传输协议&#xff09;1.2 RTMP——Real Time Messaging Protocol&#xff08;实时消息传输协议&#xff09;1.3 HLS——HTTP Live Streaming&#xff08…...

推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统是什么。

1. 推荐算法的初步理解 如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。 1.1 推荐系统主要解决问题 任务一:挖掘长尾:帮助用户找到想要的物品(音乐、商品、新闻),…...

新手小白入门必看!如何批量注册Twitter账号?

Twitter是目前海外比较流行的社媒营销平台&#xff0c;所以很多从事跨境电商行业的朋友都需要利用多个Twitter账号来推广营销&#xff0c;但是注册和管理多个Twitter账号其实并不是简单的事情。龙哥将会在这里详细讲讲该如何批量注册并且让这些账号不会因为关联被封号&#xff…...

虚拟环境的创建以及labelme的使用教程

本来打算是将这两部分分开的&#xff0c;但写完虚拟环境的创建似乎字数太少了&#xff0c;不过二者有关联&#xff0c;所以就放一起了。简单介绍一下&#xff0c;虚拟环境的创建有win11系统已经Ubuntu系统&#xff0c;labelme教程包括了下载及其使用的全部流程&#xff0c;以及…...

CSS中的BFC详细讲解(易懂)

带你用最简单的方式理解最全面的BFC~~~1.先了解最常见定位方案普通流元素按照其在 HTML 中的先后位置至上而下布局行内元素水平排列&#xff0c;直到当行被占满然后换行&#xff0c;块级元素则会被渲染为完整的一个新行所有元素默认都是普通流定位浮动元素首先按照普通流的位置…...

华为3面,官网显示面试通过了...开始泡池子,进入漫长等待期

背景&#xff1a; 现在双非本科&#xff0c;非计算机科班&#xff0c;有算法方面的奖&#xff0c;有嵌入式开发经历&#xff0c;官网显示面试通过&#xff0c;短信说录用情况在十个工作日内告知&#xff0c;看别人的说法应该是泡池子了。 全程视频面试&#xff0c;一天面完三…...

【新2023】华为OD机试 - 构成的正方形数量(Python)

构成的正方形数量 题目 输入 N 个互不相同的二维整数坐标, 求这 N 个坐标可以构成的正方形数量。(内积为零的两个向量垂直) 输入 第一行输入为 N,N 代表坐标数量,N为正整数。N <= 100 之后的 K 行输入为坐标 x y以空格分隔,x, y 为整数, -10 <= x, y <= 10 输…...

ElasticSearch之RestClient操作索引库和文档

前言&#xff1a;上文介绍了使用DSL语言操作索引库和文档&#xff0c;本篇文章将介绍使用Java中的RestClient来对索引库和文档进行操作。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们&#x1f609;&#x1f609;。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x…...

Lp正则化

一、L1 和 L2范数&#xff08;norm&#xff09;A norm is a mathematical thing that is applied to a vector. The norm of a vector maps vector values to values in [0,∞). In machine learning, norms are useful because they are used to express distances: this vect…...

云原生 -- Docker进阶(Docker-compose,Docker网络简单介绍)

Dockerfile的构建过程 每条保留字段必须为大写字母。Dockerfile每行只支持一条指令&#xff0c;但是每条指令可以带多个参数&#xff0c;并且每条保留字指令后面至少要带有一个参数。从上到下依次执行。每条指令都会创建一个新的镜像层&#xff0c;并提交新的镜像。 大致流程…...

taskset命令:让进程运行在指定CPU上

1. 操作场景 taskset命令&#xff0c;可用于进程的CPU调优&#xff0c;可以把云服务器上运行的某个进程&#xff0c;指定在某个CPU上工作。 本节操作指导用户使用taskset命令让进程运行在指定CPU上。 2. 操作步骤 2.1. 执行如下命令&#xff0c;查看云服务器CPU核数。 cat …...

Pod基本概念与Pod应用生命周期

Pod是一个逻辑抽象概念&#xff0c;kubernetes创建和管理的最小单元&#xff0c;一个Pod由一个容器或多个容器组成。特点&#xff1a;一个Pod可以理解为是一个应用实例&#xff0c;提供服务Pod中容器始终部署在一个Node上Pod中容器共享网络、存储资源Pod主要用法&#xff1a;运…...

DDL 数据定义语言

DDL 数据定义语言 目录概述一、库的管理1、库的创建2、库的修改【一般不修改&#xff0c;容易出现错误】3、库的删除二、表的管理【重要】1、表的创建2、表的修改3、表的删除4、表的复制 【可以跨库复制】练习题概述 数据定义语言 库和表的管理 一、库的管理 创建、修改、删除…...

设计模式概述

1. 概念 设计模式概念的提出&#xff1a;   设计模式最早于1977年在建筑设计行业中被 克里斯托夫亚历山大&#xff08;Christopher Alexander&#xff09; 在他的著作 《建筑模式语言&#xff1a;城镇、建筑、构造》 中提出。   软件工程界在1990年开始了设计模式话题的研…...

华为OD机试 - 箱子之形摆放(Python)| 真题+思路+考点+代码+岗位

箱子之形摆放 题目 有一批箱子(形式为字符串,设为str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。 例如:箱子ABCDEFG,空地宽度为3,摆放结果如图: 则输出结果为: AFG BE CD 输入 输入一行字符串,通过空格分隔,前面部…...

第九章:创建用户和用户权限

Windows&#xff1a;创建用户&#xff1a;第一种方法创建用户&#xff1a;先点右上角的工具&#xff0c;然后点击AD用户和计算机双击skills.com打开目录&#xff0c;再双击Users&#xff0c;进入文件夹中在右框中右击空白处&#xff0c;新建用户填充好用户信息后点击下一步然后…...

如何制定人生目标

一、如何分解目标 人生终极目标并不一定要多详细精确&#xff0c;但一定要被分解&#xff0c;要分成长期目标、中期目标和一系列的短期目标&#xff0c;其中短期目标又可以分解为你能够马上操作的一个个的小目标。 二、目标制定的原则 目标制定遵循 SMART-W 原则&#xff1a; …...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...