W25Q16_Flash手册总结

news2024/11/24 1:55:00

文章目录

  • 前言
  • 一、概述&特点
    • 1、概述W25Q16BV
      • 1、特点
      • 2、引脚说明
      • 3、内部结构示意图
      • 4、操作指令
      • 5、操作示例时序图
        • 1、写入启用指令:Write Enable(06h)
        • 2、读取状态寄存器指令:Read Status Register-1(05h)
        • 3、写数据指令:Page Program(02h)
        • 4、区块擦除指令:Sector Erase-4KB(20h)
        • 5、全擦除指令:Chip Erase(c7h)
        • 6、读取数据指令:Read Data(03h)
      • 6、交流特性表
        • 1、擦除时间要求
        • 2、/CS有效与时钟有效的时间要求
        • 3、两个指令操作的时间/CS需要保持的高电平时间
  • 二、总结
  • 三、参考资料


前言

前面学习了我们的spi协议,下面我们需要对Flash芯片手册进行简单的学习总结,后面通过spi协议对flash进行读写。


一、概述&特点

1、概述W25Q16BV

FLASH 存储器又称闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)存储器,一般用来保存一些重要的设置信息或者程序等等。通常采用 SPI 协议跟 FLASH 芯片进行数据交互。W25Q16BV是串行闪存为空间,引脚和功耗有限的系统提供存储解决方案。25Q 系列提供的灵活性和性能远远超过普通串行闪存设备。

  • 需要注意的是对于一些概念我们需要清楚:扇区、页、块等:
    对于我们的flash我们可以理解为有两种划分方式(当然可能不止),我的W25Q16型号的flash有2MB即16Mb。

1、我们可以根据页来进行划分,可以分为8192个可编程页,每页可写256字节,(256*8192)1024 = 2MB。一次最多编程256字节,写超的话会对当前页的前面数据进行覆盖。页面可以有16组扇区擦除(4KB)、128组(32KB)、256组(64KB)或整个芯片进行擦除。那么来了,这里的几KB怎么算的呢,组是多大?实际上:4KB = (256 * 16)/1024 、32KB = (256 * 128)/1024
2、根据块进行划分,我们分成了32块,每块64kB,每块又化成了16个扇区,每个扇区4KB,相当于每个扇区有16页,有16个扇区,那么每块有256页。

1、特点

1、低功耗
2、具有 4KB 扇区的灵活架构
3、高效的连续读取模式
4、最高性能串行闪存
5、16Mbit(2MB)

2、引脚说明

在这里插入图片描述
在这里插入图片描述

1号引脚:这是我们的片选信号,并且是低电平有效,一般引脚名前加/表示低电平有效。
2、5号引脚:FLASH芯片的数据输入输出引脚((Standard and Dual SPI 模式下)
3号引脚:写保护引脚(Quad SPI 模式下被用作数据输出引脚,低电平有效,用来防止状态寄存器被写入。
4、8号引脚:GND和电源
6号引脚:FLASH的时钟驱动时钟
7号引脚:HOLD引脚,也是低电平有效,在 Standard and Dual SPI 模式下相当于 FLASH 暂停信号,当 HOLD 引脚和 CS引脚同时拉低时,虽然此时 FLASH 芯片是被选中的,但是 DO 引脚会处于高阻抗状态,DI 和 CLK 这两个引脚会忽略输入的数据和时钟,相当于 DI 和 CLK 处于无效状态。(在多从机的情况下有用)

3、内部结构示意图

在这里插入图片描述

4、操作指令

  1. 表1

在这里插入图片描述

  1. 表2

在这里插入图片描述

  1. 表3

在这里插入图片描述

5、操作示例时序图

1、写入启用指令:Write Enable(06h)

Write Enable(06h):使能指令,Write Enable 指令将状态寄存器中的 Write Enable Latch (WEL)位设置为高电平,在执行页编辑、扇区擦除、块擦除、芯片擦除和写状态寄存器指令前必须先执行 Write Enable指令

在这里插入图片描述

2、读取状态寄存器指令:Read Status Register-1(05h)

Read Status Register-1(05h):读取状态寄存器 1 指令,这条指令的作用就是读取状态寄存器 1 的值。在 W25Q16BV 中存在两个状态寄存器可以用来指示 FLASH 芯片的可用性状态或者配置 SPI 的相关设置。后面我们主要是读取状态寄存器 1 的值,并且检测它的第零位也就是 BUSY 位是零还是一。当FLASH 处于擦除或者写入数据时,状态寄存器 1 的 BUSY 位会拉高,当 BUSY 位重新恢复成低电平时代表 FLASH 擦除或者写入数据完成。

在这里插入图片描述

3、写数据指令:Page Program(02h)

页编辑指令,可以理解成写数据指令,在上文中我们已经介绍过 W25Q16BV 的
存储空间是分为扇区和页的,每一页又有 256 个字节的存储空间。当执行页编辑指令时就可以往对应的扇区对应的页中写入数据,一次性最多写入 256 个字节数据。这里尤其要注意一点,当整页写数据时你可以不必写满 256 个字节,小于 256 个字节也是可以正常写入的,但是千万不能超过 256 个字节数据,因为一旦超过 256 个字节,多余的数据就会返回这一页的开头重新写入,这样就会覆盖之前已经写入的数据。举个例子我们一次性写入 260 个数据,这样就多了 4 个数据出来,那么这 4 个数据就会回到这一页的开头把第 0、1、2 和 3 这四个数据覆盖掉。

在这里插入图片描述

4、区块擦除指令:Sector Erase-4KB(20h)

在上文中我们已经提到过芯片内部的存储空间是被划分成一个一个小块的,我们可以直接对这些小块执行擦除指令。Sector Erase 指令就是对 4KB 的小块执行擦除操作。除此之外还有 Block Erase -32KB(52h)和 Block Erase -64KB(D8h)指令,用于擦除更大的存储块。

在这里插入图片描述

5、全擦除指令:Chip Erase(c7h)

有的时候我们想直接将 FLASH 芯片进行格式化那怎么办呢?这个时候我们就可以执行全擦除指令了。全擦除指令会擦除整个 FLASH 芯片的所有存储数据。需要注意的是全擦除指令执行的比较慢,通常需要几秒钟才能完成全擦除。在芯片处于全擦除期间我们只能对它执行访问状态寄存器指令操作,不能执行其他例如读写等操作。在擦除期间,状态寄存器1 的最低位(BUSY 位)始终处于高电平(不仅仅是全擦除指令,区块擦除指令、写数据指令执行时BUSY 位也会拉高),当完成全擦除后 BUSY 位拉低,此时可以执行其他指令了

在这里插入图片描述

6、读取数据指令:Read Data(03h)

读取数据指令,当 FLASH 中被写入数据后我们可以使用 Read Data 指令将数据读取出来。

在这里插入图片描述

还要很多的指令,这里只对我们后面使用得到的指令进行了介绍,具体可以看结尾的手册资料。

6、交流特性表

1、擦除时间要求

在这里插入图片描述

2、/CS有效与时钟有效的时间要求

在这里插入图片描述

  • 也就是我们下面这两个前后时间各需要5ns:
    在这里插入图片描述

3、两个指令操作的时间/CS需要保持的高电平时间

我们可以看到这里的串行通信这里/CS的英文为tSHSL:

在这里插入图片描述

  • 查找发现其要求我们的时间为7/40ns,我们可以设置100ns稳妥一点:

在这里插入图片描述

这里就介绍到这里,还有更多的要求,请自行查阅手册。还有一个点就是我们在页编程的情况下之后我们并不能马上写入,需要一个时间,手册给出的是3s,但是我们我们可以通过轮询的方式,读我们的状态寄存器 1 的最低位(BUSY 位)在 FLASH 处于写数据或者擦除数据期间是拉高的,当它拉低代表 FLASH 写入数据或者擦除数据完成。


二、总结

这里我根据手册以及原子哥的资料进行了一个大致的整理,大家仅供参考,英文版的手册看着可能理解错误,大家评论区斧正。

三、参考资料

1、Flash页、扇区、块的区别
2、W25Q16BV手册:提取码:hzwj

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

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

相关文章

【PowerShell代码】清除掉文件中的非英文字母

如果你尝试从网上下载一些带有非ASCII的文件时候,你在这台机器上会发现没有问题,但是将文件传递到其他的地方或者其他电脑你会发现存在比较大的问题,我如何才能将这些文件中的非英文字母去掉呢? 如何才能将文件中的这些非英文字母…

无涯教程-JavaScript - IMLOG2函数

描述 IMLOG2函数以x yi或x yj文本格式返回复数的以2为底的对数。可以从自然对数计算复数的以2为底的对数,如下所示- $$\log_2(x yi)(log_2e)\ln(x yi)$$ 语法 IMLOG2 (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the bas…

为什么零基础选择语言首选python

在众多编程语言中,似乎已经没有什么能够阻挡Python的步伐。本月Python又是第一名,市场份额达到了13.42%,在2023年,Python已经连续7个月蝉联榜首,遥遥领先于其他对手。 每个月榜单发布后,都有小伙伴会好奇&…

Blender中的高级边缘控制和纹理映射

推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 步骤 1 首先,您需要创建一组无阴影材质,每种材质具有不同的颜色,确保您有足够的材质来覆盖模型,而不会有相同的颜色相互重叠。然后,切换到“着色”&#xff…

即拼七人拼团系统开发模式是怎么盈利赚钱的?

即拼七人拼团是市场上最近比较火爆的一款商业模式,它结合了二二复制和拼团两种模式玩法,不仅能让消费者从中获利,还能让平台快速获流裂变,对平台起盘初期和发展中期具有很强的推广能力。那么这个模式是怎么盈利赚钱的呢&#xff1…

使用内网负载机(Linux)执行Jmeter性能测试

一、背景 ​ 在我们工作中有时候会需要使用客户提供的内网负载机进行性能测试,一般在什么情况下我们需要要求客户提供内网负载机进行性能测试呢? 遇到公网环境下性能测试达到了带宽瓶颈。那么这时,我们就需要考虑在内网环境负载机下来执行我们…

Mac brew -v 报错 fatal: detected dubious ownership in repository

Mac 电脑查询 brew版本时报错,如下错误: Last login: Fri Sep 8 14:56:21 on ttys021 sunshiyusunshiyudeMacBook-Pro-2 ~ % brew -v Homebrew 4.0.3-30-g7ac31f7 fatal: detected dubious ownership in repository at /usr/local/Homebrew/Library/Ta…

《人生苦短,我学Python》——列表(List)

昨天,我们学习了一种数据结构——元组。今天我们将学习另一种数据结构——列表。 列表又叫List,与元组的结构类似,也可以用于存储多个类型的数据。接下来,我们一起学习列表的用法–> 文章目录 一、要点先知:二、基…

喊山(数据结构习题)

喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先…

DeU-Net: 用于三维心脏mri视频分割的可变形(Deformable)U-Net

论文链接:https://arxiv.org/abs/2007.06341 代码链接:文章都看完了实在找不到代码!好崩溃!好崩溃!已经发邮件联系作者! 摘要 心脏磁共振成像(MRI)的自动分割促进了临床应用中高效、准确的体积测量。然而…

企业密码安全:ADSelfService Plus 提升密码管理的千里之行

在当今数字化时代,企业的密码安全变得至关重要。密码是保护企业敏感信息和数据的第一道防线,而有效的密码管理对于确保网络安全至关重要。ADSelfService Plus是一款强大的密码管理和自助服务解决方案,它在提供密码安全方面走在了前沿。 ADSel…

动态表单设计

动态表单设计 背景方案讨论基于上面分析,对比调研,自定义动态表单数据模型表单详解(一) 表单模板:jim_dynamic_form(二)表单数据类型:jim_form_data_type(三)…

前端面试经典题--页面布局

题目 假设高度已知&#xff0c;请写出三栏布局&#xff0c;其中左、右栏宽度各为300px&#xff0c;中间自适应。 五种解决方式代码 浮动解决方式 绝对定位解决方式 flexbox解决方式 表格布局 网格布局 源代码 <!DOCTYPE html> <html lang"en"> <…

vue优化首屏加载时间优化-gzip压缩

前言 为什么要进行首屏加载优化&#xff0c;因为随着我们静态资源和第三方包和代码增加&#xff0c;压缩之后包会越来越大 随着网络的影响&#xff0c;在我们第一输入url请求资源时候&#xff0c;网络阻塞&#xff0c;加载时间长&#xff0c;用户体验不好 仔细观察后就会发现…

解锁在线教育新机遇|V-More在线教育行业沙龙圆满落幕!

AIGC技术的渗透&#xff0c;也将为在线教育领域带来新的模式创新。面对以上增长机遇与潜在挑战&#xff0c;在线教育企业想要做好用户增长和技术降本并不简单。 9月1日&#xff0c;由火山引擎、AMD与msup联合举办的在线教育行业私享会成功举办&#xff0c;40余位在线教育行业的…

如何利用ProcessOn 做资产管理流程图

资产管理 是一家公司最重要的管理活动。好的资产管理可以让资源最优化利用&#xff0c;实现资产价值的最大化。可以帮助组织管理和降低风险。同时当需要决策的时候&#xff0c;对资产数据进行分析和评估&#xff0c;也可以帮助做出更明智的决策&#xff0c;如优化资产配置、更新…

YOLOV7改进-添加P2和P6检测层(以YOLOV7-Tiny为例)

下载三个配置文件地址 1、加p6 1、配置文件添加 2、让它自己利用k-means算法进行聚类 3、如果从8或9出来&#xff0c;在这里改 完整

NoUniqueBeanDefinitionException: expected single matching bean but found 2

文章目录 前言一、错误现象二、原因分析三、解决办法总结 前言 看到这个错误,大致也能猜出错误的原因,就是spring中注入的bean重复了,本来应该是单利的bean,但是现在却找到了两个,那么导致这个问题的原因是什么?如何解决呢? 一、错误现象 运行项目或者运行junit测试,直接报…

修改Docker镜像默认下载地址

1、安装完docker desktop后&#xff0c;先不要打开 2、新建目录 D:\ProgramData\Docker 3、在C:\Users\你的用户名\AppData\Local下&#xff0c;打开cmd或者powershell执行以下命令&#xff0c;命令语法略有不同。 powershell命令&#xff1a; cmd /c mklink /J Docker D:\Pro…

知识图谱实战应用27-基于多模态数据的洪涝灾害知识图谱构建与实际应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用27-基于多模态数据的洪涝灾害知识图谱构建与实际应用。今年以来,很多省份都经历了暴雨肆虐,并造成了洪涝灾害,洪涝灾害是一种常见而严重的自然灾害,对人类社会和环境造成了巨大的影响。为了有效地应对洪涝灾害,构建…