SPI的学习

news2024/10/23 17:38:55

工作原理

SPI的工作原理基于主从架构。主设备通过四条主要信号线与一个或多个从设备进行通信:

  1. MOSI(主输出,从输入)DI(Master Output Slave Input):主设备发送数据到从设备。
  2. MISO(主输入,从输出)DO(Master Input Slave Output):从设备发送数据到主设备。
  3. SCLK(时钟信号):由主设备生成的时钟信号,用于同步数据传输。
  4. SS(从选择)(Slave Select):选择特定的从设备进行通信。

同步,全双工
支持总线挂载多设备(一主多从) 

在数据传输时,主设备首先激活从设备的SS线,然后通过SCLK发送时钟脉冲,数据在每个时钟脉冲的上升或下降沿被发送和接收。这样,主从设备可以实现高效的全双工通信。

硬件电路

所有SPI设备的SCK、MOSI、MISO分别连在一起
主机另外引出多条SS控制线,分别接到各从机的SS引脚
输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入

SPI时序基本单元 

起始条件:SS从高电平切换到低电平
终止条件:SS从低电平切换到高电平

交换一个字节(模式0
CPOL=0:空闲状态时,SCK为低电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据

SPI时序

发送指令

向SS指定的设备,发送指令(0x06)

SCK下降沿,将数据移出,主机将数据移出到MOSI,MOSI变化电平,要在上升沿前完成变化,SCL上升沿数据采样输入(SCK低电平是变化的时期,高电平是读取时期) 
主机用0x06换来了从机的0xFF

注意:下降沿变化电平,上升沿收集变化的电平

指定地址写

向SS指定的设备,发送写指令(0x02) 
随后在指定地址(Address[23:0])下,写入指定数据(Data)

 

指定地址读

向SS指定的设备,发送读指令(0x03),      随后在指定地址(Address[23:0])下,读取从机数据(Data)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 回收表碎片实践教程

前言: 在 MySQL 数据库中,随着数据的增删改操作,表空间可能会出现碎片化,这不仅会占用额外的存储空间,还可能降低表的扫描效率,特别是一些大表,在进行数据清理后会产生大量的碎片。本篇文章我们…

MAC电脑的JDK、MAVEN配置及IDEA激活

1、JDK配置环境 vim ~/.bash_profile # 添加 Java 目录,类路径和指令路径的配置,若已存在则用目标值覆盖 export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/…

Oracle单实例静默安装

oracle 11g单实例静默安装 在CentOS上静默安装Oracle数据库 引言 在企业环境中,自动化和标准化是提高效率的关键。静默安装(也称为无人值守安装)是一种无需人工干预的安装方法,适用于大规模部署或需要重复安装的场景。本文将介…

【KEIL那些事 4】CMSIS缺失!!!!导致不能编译!!!!软件自带芯片下载缓慢!!!!!!快速下载芯片包!!!!!

安装了keli发现emmm,CMSIS缺失!!!!不能编译,,,自带下载芯片缓慢,,,官网下载emmm,竟然不带动的!!!&…

MySQL根据.idb数据恢复脚本,做成了EXE可执行文件

文章目录 1.代码2.Main方法打包3.Jar包打成exe可执行文件4.使用(1.)准备一个表结构一样得数据库(2.)打开软件(3.)输入路径 5.恢复成功 本文档只是为了留档方便以后工作运维,或者给同事分享文档内…

查看Chrome安装路

谷歌Google浏览器查看安装路径,浏览器Google Chrome浏览器查看安装路径 chrome://version/ 来源:笔记云

(数据结构)单链表——C语言

目录 1 概念与结构 1.1 结点 1.2 链表的性质 2 实现单链表 2.1打印SLPrint 2.2申请一个结点SLBuyNode 2.3尾插SLPushBack 2.4头插SLPushfront 2.5尾删SLPopBack 2.6头删SLPopfront 2.7查找结点位置SLFindNode 2.8在pos位置插入SLInsert 2.9在pos节点之后插入SLInse…

2024HarmonyOS应用开发者高级认证 最新题库第二部分

单选题 1.以下哪个装饰器用来表示并发共享对象。(D) AShared BState CStyle DSendable 2.hiAppEvent提供的Watcher接口,需要订阅到OS的崩溃事件,正确的实现方式(选下面这个) hiAppEvent.addWatcher({ name:"watcher&…

探索网页组件化:原生JavaScript动态加载HTML与iframe的使用与比较

在网页设计中,将内容作为组件动态加载到页面上是一种提高用户体验和页面性能的有效手段。本文将详细介绍两种实现动态内容加载的方法:使用原生JavaScript动态加载HTML和使用iframe,并对比它们的使用方式和优缺点。 原生JavaScript动态加载HTM…

[论文笔记]HERMES 3 TECHNICAL REPORT

引言 今天带来论文HERMES 3 TECHNICAL REPORT,这篇论文提出了一个强大的工具调用模型,包含了训练方案介绍。同时提出了一个函数调用标准。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 聊天模…

RISC-V笔记——内存模型总结

1 前言 Memory consistency model定义了使用Shared memory(共享内存)执行多线程(Multithread)程序所允许的行为规范。RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering),RVWMO内存模型是根据全局内存顺序(global memory order)定义的,全局内存…

简单有效修复d3d9.dll错误,11种d3d9.dll错误详细解决办法教程

当你遇到d3d9.dll文件丢失的问题时,可以通过今天的这篇文章详细的步骤来尝试修复这个问题,今天将教大家十一种d3d9.dll丢失修复的方法。 1. 重新安装DirectX以恢复d3d9.dll d3d9.dll是DirectX的一部分,因此重新安装DirectX通常可以解决d3d9.…

proguard对java代码进行混淆加密。并进行反编译测试,后续可配合classfinal进行使用

文章目录 1.插件混淆(1.)pom配置(2.)混淆配置(3.)打包 2.反编译查看效果(1.)工具下载(2.)反编译对比 3.启动测试4.功能测试5.二次加密 本文档只是为了留档方便…

【ChatGPT插件漏洞三连发之一】未授权恶意插件安装

漏洞 要了解第一个漏洞,我们必须首先向您展示 OAuth 身份验证的工作原理: 假设您是 Dan,并且您想使用您的 Facebook 帐户连接到 Example.com。当您点击“使用Facebook登录”时会发生什么? 在步骤 2-3 中: 在 Dan 单…

2024成为自动化测试的7种技能!

随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型,测试需求在业界不断增长。测试人员现在正在与开发人员一起工作,自动化测试在许多方面极大地取代了手动测试。如果您是自动化测试领域的新手,刚雇用您的组织将期望您快速&#xff0…

java线程的几种状态

线程的所有状态 NEW: 安排了工作, 还未开始行动RUNNABLE: 可工作的. 又可以分成正在工作中和即将开始工作. BLOCKED: 这几个都表示排队等着其他事情 WAITING: 这几个都表示排队等着其他事情TIMED_WAITING: 这几个都表示排队等着其他事情TERMINATED: 工作完成了. 线程状态和状…

《黑神话悟空》各章节boss顺序汇总

第一章BOSS顺序: 1、牯护院:犀牛精,位于苍狼岭娟,击败后能获得定身术。 2、广智:火刀狼, 位于观音禅院,击败后获得广智变身,记得敲钟。 3、蓝皮幽魂:蓝皮大头&#xff0…

大模型入门到精通!大模型应用开发极简入门(含PDF)

大模型的出现正悄然改变人们的生活与工作方式,比如ChatGPT-4、文心一言、通义千问等语言大模型。它们已帮助很多办公室“白领”们在解决日常工作问题,如制定计划、撰写实施方案,甚至制作美化PPT等(笔者及身边的同事在工作中还经常…

Star Tower:智能合约的安全基石与未来引领者

在区块链技术的快速发展中,智能合约作为新兴的应用形式,正逐渐成为区块链领域的重要组成部分。然而,智能合约的可靠性问题一直是用户最为关心的焦点之一。为此,Star Tower以其强大的技术实力和全面的安全保障措施,为智…

pytest中@pytest.fixture常用顺序function

ytest中pytest.fixture用法讲解 1、测试函数开始之前2、执行测试函数:3、测试函数结束后: 备注:内容来自chatGPT 在 pytest 中,pytest.fixture 是一个非常强大的功能,用于设置测试所需的环境和状态。它可以通过 scope…