【STM32 CubeMX】SPI_Flash_W25Q64的操作方法

文章目录

  • 前言
  • 一、W25Q64操作方法
    • 基本概念
    • 1.1 读数据
    • 1.2 写使能
    • 1.3 读状态
    • 1.4 擦除扇区
    • 1.5 烧写页
  • 总结


前言

在嵌入式系统开发中,使用外部 SPI Flash 存储器可以为 STM32 微控制器提供额外的存储空间,以存储程序代码、配置数据等。W25Q64 是一款常见的 SPI Flash 存储器,具有64Mb容量和SPI接口。本文将介绍如何使用 STM32 CubeMX 结合 SPI 库与 W25Q64 SPI Flash 进行集成,以便在 STM32 微控制器上实现外部存储器的读写功能。


一、W25Q64操作方法

基本概念

对于我们的W25Q64,他有64M-bit的内存,有8M byte,他内部的存储地址将会从0~8M-1
如果我们想要去寻址任意一个地址,我们需要传输24位的地址。

如果我们要去读数据,至少要发送24位的地址
写的时候也是一样的,发送24位地址

在我们发送地址之前我们需要发送命令,表示是想要读还是写:
发出命令 0x03,接着发出 24 位的存储地址,就可以读数据了:每读到一个数据,
Flash 内部的地址就增加 1。所以,你可以一直读到存储空间的尾部。

如果我们是写,他不仅要经过读的两个操作
他还会进入内部烧写操作
然后我们还要发出命令去读状态,判断内部烧写工作有没有完成,完成了才能进行下面的操作
他为了确保这些数据不被破坏,你想去写你还要做其他操作:

  1. 写使能:允许后续的写操作
  2. 对于Flash,你要先擦除,发送命令和地址,你想擦除哪个扇区
  3. 最后就是写操作了
    在W25Q64中,每256bytes被称为一个页,擦除的最小单位为16个页,16个页就被称为一个扇区
    你可以以一个扇区来擦除,也可以以块(32kb 128个页,8个扇区)来擦除,还可以一次擦除整个芯片

1.1 读数据

时序图如下:
在这里插入图片描述
我们需要先发送第一个读命令0x03,第一个字节被称为读命令,然后发送3字节的地址,然后芯片就会从DO引脚输出数据,把数据输出给主控

1.2 写使能

时序图如下:
在这里插入图片描述
我们需要发出写使能命令0x06

1.3 读状态

时序图如下:
在这里插入图片描述
在这个芯片里面,他有三个状态寄存器,我们只关心状态1
我们可以发送一个命令0x05,0x35表示读状态2,0x15就是读状态3
然后我们就可以读到一个数据。
这个数据什么含义呢?在这里插入图片描述
S0为1时,表示内部正在擦除操作或者写操作

1.4 擦除扇区

当你设置了写使能之后,你就可以去擦除了
时序图如下:
在这里插入图片描述
先发出命令0x20,然后发送地址,然后就可以启动内部擦除了,这个擦除什么时候完成?我们可以去读状态

1.5 烧写页

时序图如下:
在这里插入图片描述
我们可以发送0x02然后发送地址,就可以进行烧写页了,前提是这个页已经被擦除了。
要注意的是,这一页是256字节,你可以发送一个地址,从page的边界开始,然后你就可以发出1~256个数据,你把整个page全部写入数据。我们也可以不从边界开始,那么你的数据就会从中填充进来,后续你每写一个数据,这个地址就会累加1.


总结

通过本文的介绍,我们了解了如何在 STM32 CubeMX 中配置并使用 SPI 接口与 W25Q64 SPI Flash 存储器进行通信。首先,我们通过 CubeMX 配置了 STM32 的 SPI 外设,包括时钟分频、数据大小、模式等参数。然后,我们编写了初始化代码,将 SPI 外设与 W25Q64 进行连接,并实现了基本的读写功能。在代码编写过程中,我们充分利用了 STM32 的 HAL 库提供的函数,简化了通信过程的实现。最后,我们在主函数中调用了相应的读写函数,并通过调试工具验证了数据的正确性。通过本文的学习,读者可以掌握在 STM32 系列微控制器上使用 CubeMX 和 SPI 库进行 SPI Flash 存储器的读写操作,为嵌入式系统的开发提供了便利。

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

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

相关文章

洛谷P8627 饮料换购 题解

#题外话(第27篇题解)(本题为普及-难度) #先看题目 题目链接https://www.luogu.com.cn/problem/P8627 #思路(用while循环,循环到山穷水尽为止,用一个计数的计量) #代码 #include …

Linux系统——防火墙Firewalld

目录 一、firewalld介绍 1.归入zone顺序 2.firewalld zone分类 3.预定义服务 二、图形化操作 1.打开firewalld图形化界面 2.以http服务为例,打开httpd服务 3.修改端口号 三、命令行配置 1.基础配置 2.查看现有firewalld设置 3.设置查看默认区 4.添加源…

软考-系统集成项目管理中级-信息系统集成与服务管理

本章重要知识点 信息系统集成是指将计算机软件、硬件、网络通信、信息安全等技术和产品集成为能够满足用户特定需求的信息系统。 信息系统的生命周期可以分为立项、开发、运维及消亡四个阶段。 系统的运行维护可分为: 1、更正性维护:更正交付后发现的错误; 2、适应性维护:使…

【第三十六节】工程与模块管理

IDEA 项目结构 层级关系: project(工程)-module(模块)-package(包)-class(类) 具体的: 一个project中可以创建多个module 一个module可以创建多个package 一个package中可以创…

Linux下HTTP隧道技术的应用场景与优势分析

亲爱的Linux侠们,今天我们来聊一聊Linux下HTTP隧道技术的应用场景与优势。在这个网络时代,HTTP隧道技术就如同一位神秘的“魔法师”,为我们解决了许多棘手的网络问题。 首先,让我们来看看HTTP隧道技术在哪些场景下能大展身手。 …

OpenGL学习——14.投光物_点光源

前情提要:本文代码源自Github上的学习文档“LearnOpenGL”,我仅在源码的基础上加上中文注释。本文章不以该学习文档做任何商业盈利活动,一切著作权归原作者所有,本文仅供学习交流,如有侵权,请联系我删除。L…

C++ 多起点的bfs(五十九)【第六篇】

今天我们来学习多起点的bfs 1.多起点的bfs 在普通的广度优先搜索问题中,为了得到从初始状态到达目标状态的最小操作数,则将初始状态放入队列中。离初始状态由近及远地不断扩展出新的状态,直到搜索到目的状态,或队列为空&#xff…

using--派生类引用基类成员

派生类中using前置声明使用基类成员 using可以用于在派生类中声明需要使用的基类的成员。 这种语法只能在有继承关系的类的派生类中使用,不能在无关的类之间使用。 因为C语法默认在一个类A中使用using引用另一个类B的成员,则A一定继承B;如果没有继承关…

向表中插入数据(单行/多行/插入否则更新/插入否则替换)

目录 插入单行数据 指定属性 省略属性列 多行插入 插入否则更新 格式 on duplicate key含义 不同行数的更改 示例 查看影响行数 语法 插入否则替换 格式 不同行数的更改 示例 插入单行数据 insert into 表名 ( (属性列名) ) values (数据) 指定属…

GAN:“左右互搏”的卷积网络,不断优化性能中

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在一个名为“卷王”的世界里,有一个传奇般的存在——生成对抗网络&#xff…

West-wild

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-04 14:45 CST Nmap scan report for 192.168.1.1 Host is up (0.00063s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report …

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(6)特征工程初步

特征工程是一个非常重要的概念,从特征工程可以领会到机器学习的真谛。 特征工程就是从原始数据转换为特征向量的过程。 特征工程的特点: 特征工程是机器学习中很重要的起始步骤,直接影响效果,需要大量的时间。 数据和特征决定了…

计算机设计大赛 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习YOLO抽烟行为检测 该项目较为新颖,适合作为竞赛课…

java面试微服务篇

目录 目录 SpringCloud Spring Cloud 的5大组件 服务注册 Eureka Nacos Eureka和Nacos的对比 负载均衡 负载均衡流程 Ribbon负载均衡策略 自定义负载均衡策略 熔断、降级 服务雪崩 服务降级 服务熔断 服务监控 为什么需要监控 服务监控的组件 skywalking 业务…

Dog - Shepherd

逼真的牧羊犬模型。 该模型有57块骨头,14700个三角形和4个LOD级别。LOD已启用并配置。 纹理贴图-反照率(阿尔法蒙版)、AO/金属/粗糙度、法线贴图(均为2048x2048)。 2900 个三角形的手机独立模型。 该资产还有一个没有阿尔法通道的狗模型。 100+动画(IP/RM): 攻击(咬、…

源码网打包,目前有3000多个资源

源码网打包,目前有3000多个资源 需要赶快下手吧,到手可以使用,搭建好和本站一样,全网唯一 优化缩略图演示:https://www.htm.ink默认缩略图演示:https://blog.htm.ink网站截图

【HarmonyOS】鸿蒙开发之Image组件——第3.1章

图片的放缩类型 Cover(默认值):保持图片宽高比进行放缩显示,使得图片完全显示在显示边界外。 Image("https://seopic.699pic.com/photo/50110/8335.jpg_wh1200.jpg").width(100).margin({right:10}).objectFit(ImageFi…

JDK8 升级至JDK19

优质博文IT-BLOG-CN 目前部分项目使用JDK8,部分项目使用JDK19因此,环境变量中还是保持JDK8,只需要下载JDK19免安装版本,通过配置IDEA就可以完成本地开发。 一、IDEA 环境设置 【1】通过快捷键CTRL SHIFT ALT S或者File->P…

优思学院|有关Cp、Cpk与缺陷率的说法哪一个正确?

有关Cp、Cpk和缺陷率,一直都是六西格玛、质量管理中一个经常使用,又经常令人困域的概念,今天,我们来讨论一条六西格玛的考试题目,看看我们对Cp、Cpk的理解是否正确。题目是这样的: 问题:对于正…