STM32——SPI

news2024/11/27 14:40:27

STM32——SPI

1.SPI介绍

SPI是什么?

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如 AT91RM9200 。

SPI 物理架构
在这里插入图片描述

SPI 包含 4 条总线,SPI 总线包含 4 条总线,分别为SS、SCK、MOSI、MISO。它们的作用介绍如下 :

(1) MISO – Master Input Slave Output,主设备数据输入,从设备数据输出

(2) MOSI – Master Output Slave Input,主设备数据输出,从设备数据输入

(3) SCK – Serial Clock,时钟信号,由主设备产生

(4) CS – Chip Select,片选信号,由主设备控制

SPI 工作原理
在这里插入图片描述

SPI 工作模式

时钟极性(CPOL):

没有数据传输时时钟线的空闲状态电平

0:SCK在空闲状态保持低电平

1:SCK在空闲状态保持高电平

时钟相位(CPHA)

时钟线在第几个时钟边沿采样数据

0:SCK的第一(奇数)边沿进行数据位采样,数据在第一个时钟边沿被锁存

1:SCK的第二(偶数)边沿进行数据位采样,数据在第二个时钟边沿被锁存
在这里插入图片描述

模式 0 和模式 3 最常用。

模式 0 时序图:
在这里插入图片描述

模式 3 时序图:
在这里插入图片描述

2.W25Q128 介绍

什么是 W25Q128

W25Q128 是华邦公司推出的一款 SPI 接口的 NOR Flash 芯片,其存储空间为 128 Mbit,相当于 16M 字节。

Flash 是常用的用于储存数据的半导体器件,它具有容量大,可重复擦写、按“扇区/块”擦除、掉电后数据可继续保存的特性。

Flash 是有一个物理特性:只能写 0 ,不能写 1 ,写 1 靠擦除。

W25Q128 存储架构
在这里插入图片描述

一般按扇区(4k)进行擦除。

可以按 章 – 节 – 页 – 字 进行理解。

W25Q128 常用指令

在这里插入图片描述

写使能 (06H)

执行页写,扇区擦除,块擦除,片擦除,写状态寄存器等指令前,需要写使能。

拉低CS片选 → 发送06H → 拉高CS片选

读状态寄存器(05H)

拉低CS片选 → 发送05H→ 返回SR1的值 → 拉高CS片选

读时序(03H)

拉低CS片选 → 发送03H→ 发送24位地址 → 读取数据(1~n) → 拉高CS片选

页写时序 (02H)

页写命令最多可以向FLASH传输256个字节的数据。

拉低CS片选 → 发送02H→ 发送24位地址 → 发送数据(1~n) → 拉高CS片选

扇区擦除时序(20H)

写入数据前,检查内存空间是否全部都是 0XFF ,不满足需擦除。

拉低CS片选 → 发送20H→ 发送24位地址 → 拉高CS片选

W25Q128 状态寄存器

W25Q128 一共有 3 个状态寄存器,它们的作用是跟踪芯片的状态。

其中,状态寄存器 1 较为常用。
在这里插入图片描述

BUSY:指示当前的状态,0 表示空闲,1 表示忙碌

WEL:写使能锁定,为 1 时,可以操作页/扇区/块。为 0 时,写禁止。

W25Q128 常见操作流程

以下流程省略了拉低/拉高片选信号CS。

读操作:
在这里插入图片描述

擦除扇区:
在这里插入图片描述

写操作
在这里插入图片描述

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

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

相关文章

关于系统报错找不到X3DAudio1_7.dll怎么修复?总共有五个常见方案供你选择

通常情况下,当电脑尝试运行某些应用程序或游戏时,可能会遭遇“找不到x3daudio1_7.dll无法继续执行”的错误信息,这通常表明系统中缺少某个重要文件。为了理解这一问题,并寻找有效的解决方案,让我们先探讨为什么会发生这…

C++类和对象之进击篇

目录 1.类的6个默认成员函数2.构造函数2.1概念2.2特性 3.析构函数3.1概念3.2特性 4.拷贝构造函数4.1 概念4.2特征 5.赋值运算符重载5.1运算符重载5.2赋值运算符重载5.3前置和后置重载 6.日期类的实现7.const成员8.取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一…

Versal Adaptive SoC Boards, Kits, and Modules

Versal™ AI Edge Series VEK280 Evaluation Kit https://www.xilinx.com/products/boards-and-kits/vek280.html#whatsInside The VEK280 Evaluation Kit, equipped with the AMD Versal™ AI Edge VE2802 adaptive SoC, offers AIE-ML and DSP hardware acceleration engin…

【HarmonyOS 4.0 应用开发实战】TypeScript入门之元组详讲

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

UE5.1_常用节点说明(经常忘记怎么用?)(常改)

UE5.1_常用节点说明(经常忘记怎么用?)(常改) 1. Gate——门节点。只有当门是Open状态才会执行Exit后面的代码。 Open开门;Close关门;Toggle开门和关门交替。 2. 关于控制ArmLength即控制相机前…

AD24-层叠的定义与添加(正片层与负片层)

一、叠层添加 1、设计-层叠管理器,进入层叠界面 2、一般添加红色框这两个 3、左侧绿色框勾上,表示每次添加两个层,去掉即添加一个层 4、名称修改 5、完成查看 二、正片层与负片层 1、定义 2、正片层(所见即所得,看到…

美睫师睫毛嫁接零基础学习,日式美睫与开花嫁接实战教学

一、教程描述 大家都说女人的钱好挣,这是因为每个女人在每年,都要花很多钱来打扮自己。本套教程是关于日式美睫和开花嫁接的,从零基础学习到店铺经营都有涉及,就做美睫和睫毛嫁接这两项业务,月收入万元以上应该问题不…

51单片机编程应用(C语言):独立按键

目录 1.独立按键介绍 2.独立按键控制LED亮灭 1.1按下时LED亮,松手LED灭(按一次执行亮灭) 1.2首先按下时无操作,松手时LED亮(再按下无操作,所以LED亮),松手LED灭(松手时…

win10系统安装gradle

最近在搭建spring的源码时,需要gradle来进行来进行包的管理,这里顺便说一下gradle的配置。说明一下,这里使用的gradle的版本是7.5.1。 1.下载gradle 从https://gradle.org/releases/ 选择的版本7.5.1下载。 2.解压安装gradle 在本机上某…

医疗设备产品维修维护服务培训模式

医疗器械产业的发展一方面带动了经济的发展,但同时也带来了一些社会问题。这是由于医疗器械产品与患者的健康息息相关,不良事件的发生会带来负面的社会影响,如曾经发生的婴儿恒温箱变成“烤箱”伤害婴儿,置换的膝关节在体内腐蚀释放重金属损伤神经等。将医疗器械的风险降至最低…

Mac 上终端配置

Mac 上终端配置 初始化了一下自己的 mac 笔记本,所以重新记一下终端配置,最终的完成版的需求是这样的: 存在的指令需要显示绿色进行提示: 不存在的指令则是显示红色进行提示: 同时具备对指令进行提示 一个看起来…

vue前端html导出pdf

package.json中添加依赖 调用方: import htmlToPdf from ../../../utils/file/htmlToPdf.js// 下载方法,pdfDownloadDpi为onClickDownLoad() {htmlToPdf.getPdf(标题1, jsfgyzcpgxmShow, this.pdfDownloadDpi)}htmlToPdf.js // 页面导出为pdf格式 imp…

Python tkinter (10) ——Combobox控件

本文主要是Python tkinter Combobox下拉控件介绍及使用示例。 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkinte…

【算法与数据结构】300、LeetCode最长递增子序列

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;   程序如下&#xff1a; class Solution { public:int lengthOfLIS(vector<int>& nums)…

phpMyAdmin 未授权Getshell

前言 做渗透测试的时候偶然发现&#xff0c;phpmyadmin少见的打法&#xff0c;以下就用靶场进行演示了。 0x01漏洞发现 环境搭建使用metasploitable2,可在网上搜索下载&#xff0c;搭建很简单这里不多说了。 发现phpmyadmin&#xff0c;如果这个时候无法登陆&#xff0c;且也…

Spring Boot 整合 Redis 使用教程

作为开发者&#xff0c;相信大家都知道 Redis 的重要性。Redis 是使用 C 语言开发的一个高性能键值对数据库&#xff0c;是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。 Redis 以超…

【AI视野·今日Sound 声学论文速览 第四十八期】Mon, 15 Jan 2024

AI视野今日CS.Sound 声学论文速览 Mon, 15 Jan 2024 Totally 5 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers LCB-net: Long-Context Biasing for Audio-Visual Speech Recognition Authors Fan Yu, Haoxu Wang, Xian Shi, Shiliang Zhang在线会议和…

VUE PC端可拖动悬浮按钮

一、实现效果&#xff1a; 二、FloatButton.vue <template><div><div class"sssss"><div class"callback float" mousedown"down" touchstart"down" mousemove"move" touchmove"move" mous…

Python爬虫学习之解析_jsonpath

一、jsonpath的基本使用 import json import jsonpath obj json.load(open(json文件,r,encodingutf-8)) ret jsonpath.jsonpath(obj,jsonpath语法) 二、jsonpath语法 e.g. import json import jsonpathobj json.load(open(jsonpath.json,r,encodingutf-8))#书店所有的书的作…

HashCat 恢复Excel、Word、PPT密码保姆教程

HashCat 恢复Excel、Word、PPT密码 一、流程 整体需要两个步骤 先用office2john.py获取下文件的hash值 python office2john.py 1.xlsx > hash这个命令需要你电脑有python环境&#xff0c;然后在cmd命令窗口中执行此命令就行 文件链接&#xff1a;https://github.com/magnu…