STM32硬件篇:W25Q64
W25Q64简介
W25Qxx系列是一种低成本、小型化、使用简单(使用SPI通信协议)的非易失性(掉电不丢失)存储器,常用于数据存储、字库存储、固件程序存储等场景。
【注意】W25Qxx芯片只支持SPI的模式0和模式3。
存储介质:Nor Flash(闪存)
时钟频率:80MHz/160MHz(Dual SPI)/320MHz(Quad SPI)
----------拓展----------
上述Dual SPI指双重SPI,当SPI通信只发送或只接收时有点浪费资源,但W25Qxx芯片的厂商不忍心浪费,对SPI做出了一些改进:在只发送时,可以同时用MOSI和MISO发送;在接收时,也可以同时用MOSI和MISO发送。即MOSI和MISO既可以发送又可以接收,一个SCK时钟同时发送或接收两位数据。
Quad SPI指四重SPI,对于W25Qxx芯片,除了SPI通信引脚,还有两个引脚:一个是WP写保护、一个是HOLD。这两个引脚,如果不需要的话也可以充当数据传输引脚。(加上MISO和MOSI,一共4个数据传输引脚)
有点并行传输的意思。
对于W25Qxx芯片,共有以下这些型号:
| W25Q40 | 4Mbit | 512KByte |
| W25Q80 | 8Mbit | 1MByte |
| W25Q16 | 16Mbit | 2MByte |
| W25Q32 | 32Mbit | 4MByte |
| W25Q64 | 64Mbit | 8MByte |
| W25Q128 | 128Mbit | 16MByte |
| W25Q256 | 256Mbit | 32MByte |
【注意】其存储容量的地址为24位地址(最大分配16MB),因为每个字节都要分配一个地址,这样才能找到它们。但对于W25Q256芯片,24位地址是不够的。根据数据手册,其分为3字节地址模式和4字节地址模式,在3字节地址模式下,只能读写前16MB的数据;
模块硬件电路

如上为W25Q64模块的原理图,其各引脚功能如下:
| 引脚 | 功能 |
| VCC、GND | 电源(2.7~3.6V) |
| CS(SS) | SPI从机选择 |
| CLK(SCK) | SPI时钟 |
| DI(MOSI) | 主机输出从机输入 |
| DO(MISO) | 主机输入从机输出 |
| WP | 写保护(数据能否被写入) |
| HOLD | 数据保持 |
可以看出,此模块不使用WP和HOLD引脚(均为高电平) 。
【注意】关于HOLD,当你正常读写时突然产生中断,然后要用SPI去操控其他器件。这时如果把CS置回高电平,那时序就终止了。但如果你不想终止时序,又想操控其他器件,可以将HOLD引脚置低电平,这样芯片就hold住了:芯片释放总线,但芯片时序不会终止,而是会记住当前状态。HOLD置回高电平后,又会继续之前的时序。
W25Qxx内部结构

存储器划分:①对于一整个存储空间(以8MB为例),分为128块(一个块64KB)。对于每个块,又划分为16个扇区(一个扇区4KB);②对于整个空间,又可以划分成很多页,每页256字节(一个页包括:xxxx00~xxxxFF)。
| 块 | xx0000~xxFFFF |
| 扇区 | xxx000~xxxFFF |
| 页 | xxxxx0~xxxxxF |
SPI控制逻辑:芯片内部进行地址锁存、数据读写等操作都可以由控制逻辑来自动完成,控制逻辑就相当于整个芯片的管理员。
状态寄存器:芯片是否忙碌、是否写使能、是否写保护都可以在状态寄存器里体现。
写控制逻辑:配合WP引脚实现硬件写保护。
高电压生成器:用于实现掉电不丢失。
页地址锁存/计数器:用于指定页地址,3位地址的前两位进入页地址锁存/计数器里
字节地址锁存/计数器:用于指定字节地址,3位地址的最后一位进入字节地址锁存/计数器里
页地址通过写保护和行解码来选择操作哪一页,字节地址通过列解码和256字节页缓存来进行指定地址的读写操作。又因为地址锁存都有计数器,地址指针在读写之后,自动加1。
对于256字节页缓存区,实际是一个256字节的RAM存储器。数据读写就是通过这个RAM缓存器来进行的。我们写数据,先将数据放到缓存区里,等时序结束,芯片再将缓存区的数据复制到对应的Flash里面(放入具体某一页里面),进行永久保存。
为什么要有缓存区呢,而不进行直接读写?这是因为SPI的写入频率是非常高的,而Flash的写入是比较慢的(而RAM的速度非常快),所以先放RAM里面存着。但由于RAM缓存区只有256个字节,因此连续的写入量不能超过256个字节。因此当时序结束后,芯片又要将RAM里的数据移入Flash里,这需要一定的时间,所以芯片会进入一段忙的状态。
Flash操作注意事项
因为Flash作为一种掉电不丢失的存储器,为了保证掉电不丢失这个特性,同时还要保证存储容量足够大、成本足够低,所以Flash存储器会在其他地方(如操作便携性等)作出一些妥协和让步。
写操作时:
1、写入操作时,必须先进行写使能。用SPI发生一个写使能指令即可。通过查询状态寄存器的WEL位来确定能否进行写入操作(1代表写使能)。
2、每个数据位只能由1改写为0,不能由0改写为1(成本原因或技术原因)。
3、写入数据前必须先擦除,擦除后,所有数据位变为1。发出擦除指令后,芯片也会进入忙状态。
4、擦除必须按最小擦除单元(整个存储区/按块擦除/按扇区擦除)进行,若只想擦除某一个字节,只能将其所在的最小擦除单元全部擦除。
5、连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首覆盖写入。
6、写操作结束后,芯片会进入忙状态,不响应新的读写操作。通过读取状态寄存器的BUSY位来判断芯片是否忙碌(BUSY为0代表不忙)。
读操作时:
1、直接调用读取时序,无需使能,没有页的限制。
2、读取操作后不会进入忙状态,但不能在忙状态时读取。
一些SPI指令集
写使能:指令码---0x06;
写失能:指令码---0x04;
读取状态寄存器:指令码---0x05;数据位---S7~S0(寄存器8位中的某一位);
页编程(数据写入):指令码---0x02;数据位---3字节地址码、数据...
扇区擦除:指令码---0x20;数据位---3字节地址码;(此地址对应某个字节,芯片会直接对应到该字节所在扇区,并对该扇区进行擦除)
读取数据:指令码---0x03;数据位---3字节地址、数据...
相关文章:
STM32硬件篇:W25Q64
W25Q64简介 W25Qxx系列是一种低成本、小型化、使用简单(使用SPI通信协议)的非易失性(掉电不丢失)存储器,常用于数据存储、字库存储、固件程序存储等场景。 【注意】W25Qxx芯片只支持SPI的模式0和模式3。 存储介质&am…...
uni-app 获取当前位置的经纬度以及地址信息
文章目录 uni.getLocation(objc)获取经纬度和地址调试结果问题 uni-app 获取当前位置的经纬度以及地址信息 uni.getLocation(objc) uni-app官方文档定位API: uni.getLocation(OBJECT) uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度&…...
【CSS】尺寸单位
在 CSS 中,常见的尺寸单位有以下几种: 像素(px): 这是最常用的绝对单位。例如 width: 200px; 表示宽度为 200 像素。像素是固定的尺寸,不会随着屏幕分辨率或设备的不同而变化。 备注: 在不同的…...
Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码
前面 2 篇文章,我们使用文生文、文生图和文生音频三个大模型共同实现了图文并茂的儿童绘本故事和绘本故事音频需求: 第一篇 根据主题生成儿童绘本故事:GLM-4-Flash 大模型 API 免费了,手把手构建“儿童绘本”应用实战(…...
[数据结构] 哈希结构的哈希冲突解决哈希冲突
标题:[C] 哈希结构的哈希冲突 && 解决哈希冲突 水墨不写bug 目录 一、引言 1.哈希 2.哈希冲突 3.哈希函数 二、解决哈希冲突 1.闭散列 I,线性探测 II,二次探测 2.开散列 正文开始: 一、引言 哈希表是一种非常实用而…...
Wimdows使用Appium IOS自动化
启动appium服务器: appium -a 127.0.0.1 -p 4724 配置 { "platformName": "iOS", "appium:platformVersion": "16.5.1", "appium:deviceName": "(★StatTrak™) |午夜黑(崭新出厂&#…...
C语言深度剖析--不定期更新的第四弹
哈哈哈哈哈哈,今天一天两更! void关键字 void关键字不能用来定义变量,原因是void本身就被编译器解释为空类型,编译器强制地不允许定义变量 定义变量的本质是:开辟空间 而void 作为空类型,理论上不应该开…...
【手撕数据结构】八大排序神功(上)
目录 冒泡排序【有点拉胯】动图演示:思路解析单趟算法图解代码详解性能优化复杂度分析 直接插入排序【还阔以】动图演示思路解析代码分析与讲解复杂度分析 希尔排序【有点强】动图演示思路讲解排序过程总览代码分析讲解复杂度分析 堆排序【太有石粒啦】动图演示堆的概念与结构向…...
【2024高教社杯全国大学生数学建模竞赛】B题模型建立求解
目录 1问题重述1.1问题背景1.2研究意义1.3具体问题 2总体分析3模型假设4符号说明(等四问全部更新完再写)5模型的建立与求解5.1问题一模型的建立与求解5.1.1问题的具体分析5.1.2模型的准备 目前B题第一问的详细求解过程以及对应论文部分已经完成ÿ…...
OpenHarmony鸿蒙开发( Beta5.0)智能手表应用开发实践
样例简介 本项目是基于BearPi套件开发的智能儿童手表系统,该系统通过与GSM模块(型号:SIM808)的通信来实现通话和定位功能。 智能儿童手表系统可以通过云和手机建立连接,同步时间和获取天气信息,通过手机下…...
共享单车轨迹数据分析:以厦门市共享单车数据为例(一)
共享单车数据作为交通大数据的一个重要组成部分,在现代城市交通管理和规划中发挥着越来越重要的作用。通过对共享单车的数据进行深入分析,城市管理者和规划者能够获得大量有价值的洞察,这些洞察不仅有助于了解城市居民的日常出行模式…...
SprinBoot+Vue在线商城微信小程序的设计与实现
目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…...
4--SpringBootWeb-请求响应
目录 postman 1.简单参数 请求参数名与形参变量名一致时 请求参数名与形参变量名不一致时 2.实体参数 简单实体对象 复杂实体对象 3.数组集合参数 数组 集合 4.日期参数 5.JSON参数 6.路径参数 1 2 postman Postman值一款功能强大的网页调试与发送网页HTTP请求的…...
电脑点击关机之后,又自动重启开机了。根本就关不了?
前言 有个小姐姐说,她家的电脑好生奇怪:点击【关机】按钮之后,电脑提示【正在关机】,过了几秒,电脑又自动开机了…… 好家伙!也就是说关机和重启根本就没区别,电脑完全无法断电。 最后忍无可…...
强化网络安全:通过802.1X协议保障远程接入设备安全认证
随着远程办公和移动设备的普及,企业网络面临着前所未有的安全挑战。为了确保网络的安全性,同时提供无缝的用户体验,我们的 ASP 身份认证平台引入了先进的 802.1X 认证协议,确保只有经过认证的设备才能接入您的网络。本文档将详细介…...
链动2+1模式AI智能名片S2B2C商城小程序源码在社群商业价值构建中的应用探索
摘要:在数字经济浪潮的推动下,社群作为商业生态的核心组成部分,其商业价值正以前所未有的速度增长。本文深入探讨了如何通过“链动21模式AI智能名片S2B2C商城小程序源码”这一前沿技术工具,深度挖掘并优化社群的商业价值。通过详细…...
基于SpringBoot+Vue+MySQL的校园周边美食探索及分享平台
系统背景 在当今数字化时代,校园生活正日益融入信息技术的浪潮之中,学生们对于便捷、高效且富有趣味性的生活方式有着越来越高的追求。特别是在饮食文化方面,随着校园周边餐饮业态的日益丰富,学生们渴望一个能够集美食探索、分享与…...
“设计模式双剑合璧:工厂模式与策略模式在支付系统中的完美结合”
工厂模式(Factory Pattern)和策略模式(Strategy Pattern)都是常见的设计模式,但它们解决的问题和应用场景不同。下面是它们的区别: 1. 目的不同: 工厂模式(Factory Pattern…...
第二百一十九节 JPA 教程 - JPA 字段映射示例
JPA 教程 - JPA 字段映射示例 当将 Java bean 字段映射到数据库列时,我们可以选择标记字段,标记 getter 方法并标记两者。 标记字段 以下代码来自 Professor.java。 它显示如何将主键列标记为 Java bean 字段标识。 package cn.w3cschool.common; im…...
目标检测-YOLOv6
YOLOv6 YOLOv6 是 YOLO 系列的一个新版本,相比 YOLOv5 进行了大量的优化与改进。YOLOv6 的设计目标是在提高模型检测精度的同时,进一步优化速度和效率,特别是在推理速度和部署便捷性方面。它采用了更先进的网络架构和优化技巧,在…...
NXOpen 遍历部件并对每个部件加属性
NXOpen 遍历部件并对每个部件加属性 // Mandatory UF Includes #include <uf.h> #include <uf_object_types.h> // Internal Includes #include <NXOpen/ListingWindow.hxx> #include <NXOpen/NXMessageBox.hxx> #include <NXOpen/UI.hxx> //…...
3个核心技巧:快速掌握Blender 3MF插件的完整工作流
3个核心技巧:快速掌握Blender 3MF插件的完整工作流 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否在为3D打印工作流中的文件格式转换烦恼?…...
如何利用 SEO 标题和关键词提高网站可发现性_如何利用 SEO 标题和关键词进行分析和优化
如何利用 SEO 标题和关键词提高网站可发现性 在当今的数字化时代,网站的可发现性直接关系到其流量和成功。在这个竞争激烈的环境中,搜索引擎优化(SEO)成为了提高网站可发现性的关键。其中,SEO标题和关键词的运用尤为重…...
长尾关键词SEO优化费用如何计算_企业自营SEO关键词优化成本是多少
长尾关键词SEO优化费用如何计算_企业自营SEO关键词优化成本是多少 在当今数字化时代,SEO(搜索引擎优化)已经成为企业提升网站流量、增加品牌曝光度的重要手段。其中,长尾关键词SEO优化因其较低的竞争度和高转化率,备受…...
OpenClaw技能组合:用Qwen2.5-VL-7B+OCR实现全自动发票报销
OpenClaw技能组合:用Qwen2.5-VL-7BOCR实现全自动发票报销 1. 为什么需要自动化发票报销 每次月底整理发票都让我头疼——需要手动截图、识别金额、填写报销单、发送邮件。直到我发现OpenClaw可以通过组合多个技能模块,实现从截图识别到财务审核的全流程…...
忍者像素绘卷惊艳作品集:16-Bit复古美学+火之意志主题像素艺术展
忍者像素绘卷惊艳作品集:16-Bit复古美学火之意志主题像素艺术展 1. 像素艺术的革命性突破 忍者像素绘卷代表了当前像素艺术生成技术的巅峰之作。这款基于Z-Image-Turbo深度优化的图像生成工作站,成功将传统忍者文化与现代AI技术完美融合,创…...
魔兽争霸3现代化修复指南:三步让经典游戏在Windows 10/11完美运行
魔兽争霸3现代化修复指南:三步让经典游戏在Windows 10/11完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代电…...
日志配置陷阱:Telegraf Windows版本兼容性问题深度解析
日志配置陷阱:Telegraf Windows版本兼容性问题深度解析 Windows系统管理员常面临日志采集配置升级后服务无法启动的困境。Telegraf作为InfluxData开源的指标收集代理(Agent),其Windows版本在日志配置变更时可能引发兼容性问题。本…...
从电商推荐到NLP:多任务学习中Loss平衡的行业应用案例解析
从电商推荐到NLP:多任务学习中Loss平衡的行业应用案例解析 在人工智能技术快速渗透各行业的今天,多任务学习(MTL)正成为提升模型效率的关键策略。想象一下,电商平台需要同时预测用户点击率和购买转化率,智能…...
Phi-3-mini-4k-instruct-gguf惊艳效果:中文长难句拆解+逻辑关系标注+通俗转述三重能力展示
Phi-3-mini-4k-instruct-gguf惊艳效果:中文长难句拆解逻辑关系标注通俗转述三重能力展示 1. 模型能力概览 Phi-3-mini-4k-instruct-gguf作为微软Phi-3系列的轻量级文本生成模型,在中文处理方面展现出令人惊喜的能力。这个开箱即用的模型特别擅长处理三…...
