W25Q16_Flash手册总结

文章目录

  • 前言
  • 一、概述&特点
    • 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.hqwc.cn/news/104024.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-10--多例模式(Multition pattern)

一、什么是多例模式(Multition pattern) 多例模式(Multition pattern)是单例模式的一种扩展,它属于对象创建类型的设计模式。在多例模式中,一个类可以有多个实例,并且这些实例都是该类本身。因…

哈希的应用——布隆过滤器

文章目录 前言1. 布隆过滤器提出2. 布隆过滤器概念3. 布隆过滤器的插入多哈希函数映射减少冲突结构定义及set(插入)函数实现 4. 布隆过滤器的查找test(查找)函数实现布隆过滤器允许误判 5. 布隆过滤器的适用场景6. 如何选择布隆过…

linux系统中u-boot命令的EMMC和SD卡操作命令分析

​今天给大家详细的介绍一下u-boot命令之EMMC和SD卡操作的mmc命令使用。希望这篇文章对大家有所帮助。 uboot 支持 EMMC 和 SD 卡,因此也要提供 EMMC 和 SD 卡的操作命令。一般认为 EMMC和 SD 卡是同一个东西,所以没有特殊说明,统一使用 MMC …

windows安装向量数据库milvus

本文介绍windows下安装milvus的方法。 一.Docker安装 1.1docker下载 首先到Docker官网上下载docker:Docker中文网 官网 1.2.安装前前期准备 先使用管理员权限打开windows powershell 然后在powershell里面输入下面那命令,启用“适用于 Linux 的 Windows 子系统”…

Java反序列化漏洞复现(weblogic和s2)

文章目录 weblogic启动环境漏洞扫描漏洞复现 S2-045启动环境漏洞复现 前提条件: 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub weblogic 启动环境 到下面路径下…

AP51656 LED车灯电源驱动IC 兼容替代PT4115 PT4205 PWM和线性调光

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源 用于驱动一颗或多颗串联LED 输入电压范围从 5V 到 60V,输出电流 可达 1.5A 。根据不同的输入电压和 外部器件, 可以驱动高达数十瓦的 LED。 内置功率开关,采用高端电流采样设置 …

第64步 深度学习图像识别:多分类建模误判病例分析(Pytorch)

基于WIN10的64位系统演示 一、写在前面 上期我们基于TensorFlow环境介绍了多分类建模的误判病例分析。 本期以健康组、肺结核组、COVID-19组、细菌性(病毒性)肺炎组为数据集,基于Pytorch环境,构建SqueezeNet多分类模型&#xf…

Prometheus+Grafana 搭建应用监控系统

一、背景 完善的监控系统可以提高应用的可用性和可靠性,在提供更优质服务的前提下,降低运维的投入和工作量,为用户带来更多的商业利益和客户体验。下面就带大家彻底搞懂监控系统,使用Prometheus Grafana搭建完整的应用监控系统。 …

Pandas数据中的浅拷贝与深拷贝

pandas库主要有两种数据结构DataFrames和Series。这些数据结构在内部用索引数组和数据数组表示,索引数组标记数据,数据数组包含实际数据。现在,当我们试图复制这些数据结构(DataFrames和Series)时,我们实际…

【Github】git本地仓库建立与远程连接

文章目录 前言一、git简介二、git下载2.1下载地址 三、git安装3.1安装3.2 配置3.3 config设置(增删改查) 四.github与git连接——本地Git仓库4.1 建本地的版本库4.2 源代码放入本地仓库4.3提交仓库 五、github与git的连接——远程连接5.1 创建SSH Key5.2…

调用API接口的一些注意技巧

在实践中我们经常发现,很多同学都是直接请求调用和读取接口数据,而没有做状态码的判断,这在设计角度是非常不合理的。 另外,对于一些实时性要求不高的接口,更合理的做法应该是先把数据拉到本地缓存,再从缓存…

openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法

文章目录 openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法概述解决思路备注补充 - 新问题 - N1吸嘴到底部相机十字中心的位置差了很多END openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法 概述 自从用openpnp后, 无论版本(dev/test), 都发现一个大概…