深入理解SPi通讯协议

目录

SPI简介:

主设备通过选择线(SS)

主设备通过时钟线(SCLK)

主设备通过主输出线(MOSI)

主设备通过主输出线(MISO)

SPI读写数据:

SPI写入数据:

SPI读取数据:


SPI简介:

SPI(Serial Peripheral Interface)是一种常用的串行通信协议,用于在微控制器和外部设备之间进行数据传输。SPI通信使用主从架构,其中一个设备充当主设备,其他设备充当从设备。SPI通信使用时钟极性(CPOL)和时钟相位(CPHA)来控制通信模式。

主设备通过选择线(SS)

选择要与之通信的从设备:实际上SS是片选信号线,一般主机选择一个从机通信时,需要把对应从机的SS信号线拉低

主设备通过时钟线(SCLK)

提供时钟信号,从设备根据时钟信号进行数据传输,一般由主设备产生同步时钟信号

主设备通过主输出线(MOSI)

主设备通过(MOSI)发送数据,从设备通过主输入线(MOSI)接收数据

主设备通过主输出线(MISO)

从设备通过(MISO)发送数据,主设备通过主输入线(MISO)接收数据


SPI读写数据:

SPI写入数据:

要给目标存储芯片写入数据00001111首先片选信号置位选定芯片

写入地址为:

参考存储器的数据手册其写入方式为:

实际上我们发送的数据就要包含以下的内容:

但是SPI属于串行同步通信,SPI的正常工作还需要时钟同步信号:

本例中所需要的信号对应的采样时刻在时钟的上升沿:

也就是说,在片选信号使能时,每次时钟的上升沿所采集到的信号为有效信号,根据对应存储器的使用规则,在有效数据区间中,发送需要的内容即可。

SPI通信的模式由CPOL和CPHA决定,共有四种模式:

  1. 模式0:CPOL=0,CPHA=0。时钟处于空闲状态时为低电平,数据在时钟的下降沿采样。
  2. 模式1:CPOL=0,CPHA=1。时钟处于空闲状态时为低电平,数据在时钟的上升沿采样。
  3. 模式2:CPOL=1,CPHA=0。时钟处于空闲状态时为高电平,数据在时钟的上升沿采样。
  4. 模式3:CPOL=1,CPHA=1。时钟处于空闲状态时为高电平,数据在时钟的下降沿采样。

通过配置CPOL和CPHA,可以选择适合特定从设备的通信模式。例如,某些从设备可能在出厂时就被设置为模式0,因此主设备需要相应地配置为模式0才能与其通信。


SPI读取数据:

本例读取数据如下:

写入数据与读取数据类似,需要在片选信号和和时钟沿时刻采样数据,根据目标芯片的数据手册进行读取数据操作即可

最后要提醒一点:

SPI的读写操作,实际上SPI只是提供了一种在片选信号使能时,以及时钟沿来临时的读写数据的方式,在片选信号使能的时间内,你可以任意的读写任意位的数据,只要符合对应的存储器的读写方式即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超详细解释奇异值分解(SVD)【附例题和分析】

目录 一. 矩阵对角化 二. 奇异值分解 三. 对比奇异值分解与特征值分解 四. SVD分解与四大基础子空间 五. SVD分解的正交矩阵 六. 方阵与SVD分解 七. 单位特征向量与SVD分解 八. 例题分析:秩为1 九. 例题分析:秩为2 十. 计算机网络与矩阵的秩 一…

从董宇辉小作文风波,我们普通人能学到些什么?

哈喽,大家好啊,我是雷工! 最近董宇辉小作文风波动静太大了,哪哪都是。 打开公号上都在写董宇辉,打开某音,都在说董宇辉。 这种事其实本来就是立场不同,各个角度来说都有道理的事。 神仙打架&am…

利用深度学习图像识别技术实现教室人数识别

引言 在现代教育环境中,高效管理和监控教室成为了一个重要议题。随着人工智能技术的迅猛发展,特别是深度学习和图像识别领域的突破,我们现在可以通过智能系统来自动识别教室内的人数,从而实现更加智能化的教室管理。 深度学习与图…

手把手教你开发盲盒小程序

在这个数字时代,微信小程序已经成为了各大品牌和个人的主要营销渠道。而盲盒小程序,作为小程序领域中的一种独特类型,更是具有巨大的市场潜力。那么,如何创建和运营一个成功的微信盲盒小程序呢?以下是一份保姆级的教程…

SpringBoot之多环境开发配置

1 多环境开发配置 问题导入 在实际开发中,项目的开发环境、测试环境、生产环境的配置信息是否会一致?如何快速切换? 1.1 多环境启动配置 yaml文件多环境启动 不同环境使用—隔开 示例代码: spring:profiles:active: dev#生产…

Intellij IDEA 快速开发参考

快捷键 核心快捷键 IntelliJ IDEA 作为一个以快捷键为中心的 IDE,为大多数操作建议了键盘快捷键。在这个主题中,您可以找到最不可缺少的列表,使 IntelliJ IDEA 轻松实现第一步。 核心快捷键表: 操作快捷键根据名称查找操作CtrlSh…

阶段十-分布式-Redis02

第一章 Redis 事务 1.1 节 数据库事务复习 数据库事务的四大特性 A:Atomic ,原子性,将所以SQL作为原子工作单元执行,要么全部执行,要么全部不执行;C:Consistent,一致性&#xff0…

Django 分页(表单)

目录 一、手动分页二、分页器分页 一、手动分页 1、概念 页码:很容易理解,就是一本书的页码每页数量:就是一本书中某一页中的内容(数据量,比如第二页有15行内容),这 15 就是该页的数据量 每一…

【信号处理:小波包转换(WPT)/小波包分解(WPD) 】

【信号处理:小波包转换(WPT)/小波包分解(WPD) 】 小波包变换简介WPT/WPD的基础知识WPT/WPD的主要特点The Wavelet Packet Transform 小波包变换前向小波数据包变换最佳基础和成本函数数学中波纹的最佳基础其他成本函数…

【教学类-43-14】 20240103 (4宫格数独:正确版:576套) 不重复的基础模板数量:576套

作品展示::——4宫格 576套不重复模板(48页*12套题) 背景需求: 生成4宫格基础模板768套,观看64页内容时,明显看到有错误 【教学类-43-13】 20240103 (4宫格数独:错误版…

kbdnso.dll文件缺失,软件或游戏报错的快速修复方法

很多小伙伴遇到电脑报错,提示“kbdnso.dll文件缺失,程序无法启动执行”时,不知道应该怎样处理,还以为是程序出现了问题,想卸载重装。 首先,先要了解“kbdnso.dll文件”是什么? kbdnso.dll是Win…

高压功率放大器的作用或应用领域是什么

高压功率放大器是一种能够将低电压信号放大到高电压水平的设备。它在各个领域中扮演着重要的角色,并具有广泛的应用。本文将介绍高压功率放大器的作用和应用领域。 高压功率放大器可以在音频设备中发挥重要作用。音频设备中需要将低音频信号放大到足够的水平&#x…

控制台日志存入数据库后结果乱码

控制台输出 数据库返回 结论 控制台的输出在存储到数据库之后出现了ANSI颜色代码。这些颜色代码通常是由控制台日志库添加的,用于在支持ANSI颜色代码的终端中显示彩色文本。例如: [95m6 [0m | [95m0.6376 [0m | [95m0.0 [0m | [95m289.2 [0m | 在上面的…

MySQL主从复制案例实现

使用Sharding-JDBC实现读写分离&#xff1a; 1、导入maven坐标 2、 在配置文件中配置读写分离规则 3、在配置文件中配置允许bean定义覆盖配置项 1、导入maven坐标 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jd…

Java安装详细教程

文章目录 一、JDK 下载 和 安装1.1 选择 Java版本1.2 下载 JDK 二、 配置环境变量2.1 配置环境变量的原因2.2 配置环境变量2.3 验证配置是否成功 参考资料 一、JDK 下载 和 安装 1.1 选择 Java版本 访问 Oracle 官方网站的 Java 下载页面Java Archive | Oracle。 在 “Java …

机器学习常用算法模型总结

文章目录 1.基础篇&#xff1a;了解机器学习1.1 什么是机器学习1.2 机器学习的场景1.2.1 模式识别1.2.2 数据挖掘1.2.3 统计学习1.2.4 自然语言处理1.2.5 计算机视觉1.2.6 语音识别 1.3 机器学习与深度学习1.4 机器学习和人工智能1.5 机器学习的数学基础特征值和特征向量的定义…

软件测试作业‖pytest+po+csv+html报告+cookie+selenium

软件测试作业‖pytestpocsvhtml报告cookieselenium 先用本地部署的系统试了下 或者UFT自动化测试里诺图书管理系统软件测试 # &#xff0c;#测试报告# #性能测试#&#xff0c;#测试用例#&#xff0c; #自动化测试# Selenium 的 Web自动化测试基本要求和注意事项 1.请使用ch…

中国计算机学会推荐国际学术会议及时间(计算机体系结构/高性能计算/存储系统)

中国计算机学会推荐国际学术会议及时间 (计算机体系结构/高性能计算/存储系统) 参考资料 参考链接: call4papers

基于java+Springboot操作系统教学交流平台详细设计实现

基于javaSpringboot操作系统教学交流平台详细设计实现 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于javaSpringboot操作系统教学交流平台详细设计实现功能设计和技术&#xff1a;主要功能截图&#xff1a;主要代码类实现&#xff1a;设计项目总结&#xff1a;基于…

Lingo 17安装包下载及安装教程

Lingo 17下载链接&#xff1a;https://docs.qq.com/doc/DUndEVXd4WVVweGFR 1.鼠标右键解压到“Lingo 17.0” 2.双击打开【Setup】文件夹 3.选中Lingo 17.0&#xff0c;鼠标右键选择“以管理员身份运行” 4.点击“Next” 5.选中I accept the terms in the license agreement&…