W25Q64简介

news2024/7/6 20:47:43

W25Q64介绍

在这里插入图片描述
本节使用的是:W25Q64: 64Mbit / 8MByte。存储器分为易失性存储器和非易失性存储器,易失性存储器一般是SRAM,DRAM。非易失性存储器一般是E2PROM,Flash等。非易失性存储器,掉电不丢失。

字库存储,可以应用到显示屏上,在屏幕上显示汉字,就得把汉字的点阵数据存起来,把字库直接存在stm32内部,这样适合少量汉字显示的情况,如果汉字非常多, 就不合适了,所以我们可以用这个芯片来存储汉字。

固件程序存储,这个就相当于直接把程序文件下载到外挂芯片里,需要执行程序的时候,直接读取外挂芯片的程序文件来执行,这就是XIP就地执行,比如我们电脑里的bios固件,就可以存储在这个系列的芯片里。

存储介质:Nor Flash(闪存):flash就是闪存存储器,闪存分为Nor Flash和Nand Flash,两者各有优势和劣势,适用领域不同,stm32的程序存储器、u盘、电脑里的固态硬盘等使用的都是flash闪存。

时钟频率:80MHz / 160MHz (Dual SPI)双重SPI模式等效的频率 / 320MHz (Quad SPI)四重SPI模式等效的频率。

160MHz (Dual SPI):MOSI和MISO同时兼具发送和接收的功能,一个SCK时钟我同时发送或接收两位数据,就是双重SPI模式,等效的时钟频率就是80MHz的二倍就是16MHz,但实际上这个频率最大还是80MHz,只是我一个时钟发两位而已。

320MHz (Quad SPI):就是一个时钟发送或接收四位。

24位的地址最大能分配多少个字节呢,是2^24=16MB,所以24位地址的最大寻址空间是16MB。
但是这个W25Q256型号比较特殊,24位地址对于32MB来说是不够的,根据手册里描述W25Q256分为3字节地址模式和4字节地址模式,在字节地址模式下,只能读写前16MB的数据,要想读写到所有存储单元,可以进入4字节地址的模式。

硬件电路

在这里插入图片描述

1号脚CS,这个CS左边画了个斜杠代表是低电平有效,或者这边CS上面画了个横线也是低电平有效,那这里CS对应SS的片选引脚。

3号引脚WP,意思是写保护配合内部的寄存器器配置,可以实现硬件的写保护,写保护低电平有效,WP接低电平,保护住,不让写;WP接高电平,不保护,可以写。

7号引脚,HOLD是数据保持,低电平有效,如果你在进行正常读写时突然产生中断,然后想用SPI通信线去操控其他器件,这时如果把CS置回高电平,那时序就终止,但如果你又不想终止总线,又想操作其他器件,这就可以HOLD引脚置低电平,这样芯片释放总线,但是芯片时序也不会终止,它会记住当前的状态,当你操作完其他器件时,可以回过来,HOLD置回高电平,然后继续HOLD之前的时序,相当于SPI总线进来一次中断,并且在中断里还可以用SPI干别的事情,这就是HOLD的功能。

DI、DO、WP、和HOLD,旁边都有括号,写了lO0、lO1、lO2、lO3 ,这个就是双重SPI和四重spi,如果是普通的SPI模式,那括号里的都不用看。
如果是双重SPI,那di和do就变成lO0和lO1,也就是数据同时收和同时发的两个数据位。
如果是四重SPI,那就再加上WP当做lO2 ,HOLD当做lO3 ,这四个引脚都作为数据收发引脚,一个时钟四个数据位。
电路原理图中,HOLD的和WP这两个都是直接接到的VCC,低电平有效,那都接到VCC,就这两个功能我们都不用。

W25Q64框图

在这里插入图片描述

在这里插入图片描述

可以看到左下角第一个字节,它的地址是00 00 00h,之后的空间地址依次自增,直到最后一个字节,地址是7FFFFFh,那最后一个字节为啥是7f开头,不是f f开头呢,因为24位地址最大寻址范围是16MB,我们这个芯片只有8MB,所以地址空间我们只用了一半,8MB排到最后一个字节,就是7 FFFFFh,那这是整个地址空间,从000000~7F FF FF。

在这整个空间里,我们以64KB为一个基本单元,把它划分为若干的块block,从前往后依次是块0块1块2等等,一直分到最后一块,那整块蛋糕是8MB,以64kb为一块进行划分,最后分得的快数就是8MB/64kB=128,这里可以分得128块,那块序号就是块0一直到最后一个是块127。

左边这个示意图,我们还要再对每一块进行更细的划分,分为多个扇区sector,这里的虚线指向了右边的各个块,告诉你每一块里面都是这个样子的,那在每个块里,它的起始地址是XX0000,结束地址是XXf f f f。在一块里我们再以4kb为一个单元进行切分,一个块是64kb,64/4=16,所以在每一块里都可以分为扇区0一直到扇区15。

在这里插入图片描述

页是对整个存储空间划分的,当然你也可以把它看作在扇区里再进行划分都一样,那页的大小是256个字节,一个扇区是4kb,4KB*1024/256=16页,所以一个扇区里可以分为16页。
页的地址规律,,在这里每一行就是一页,左边这里指了个箭头,写的是页地址的开始,右边这里也指了个箭头,写的是页地址的结束,在一页中,地址变化范围是XXXX00到XXXXFF,一页内的地址变化,仅限于地址的最低一个字节,这就是页的划分。

这个一整个存储空间,首先划分为若干块,对于每一块又划分为若干扇区,然后对于整个空间会划分为很多很多页,每页256字节。

状态寄存器器,这个状态寄存器器是比较重要的,比如芯片是否处于忙状态,是否写使能,是否写保护,都可以在这个状态寄存器器里体现。

写控制逻辑,和外部的wp引脚相连,显然这个是配合wp引脚实现硬件写保护的。

高电压生成器,这个是配合flash进行编程的,因为flash是掉电不丢失的,我们要让它产生即使断电也不会消失的状态,一般都需要一个比较高的电压去刺激它,所以这种掉电不丢失的存储器,一般都需要一个高压源,那这里芯片内部集成了高电压发生器,所以就不需要我们在外接高电压了。

页地址/锁存计数器,然后下面还有一个,字节地址锁存/计数器,这两个地址锁存和记数器就是用来指定地址的。我们通过SPI总共发过来三个字节的地址,因为一页是256字节,所以一页内的字节地址就取决于最低一个字节,而高位的两个字节就对应的是页地址,所以在这里我们发的三个字节地址,前两个字节会进到这个页地址锁存计数器里,最后一个字节会进到这个字节地址锁存计数器里。

256字节的页缓存区,它其实是一个256字节的ram存储器,要数据读写,就是通过这个ram缓冲区域来进行的,我们写入数据会先放到缓存区里,然后在时序结束后,芯片再将缓冲区的数据复制到对应的flash里,进行永久保存。

Flash操作注意事项

在这里插入图片描述

  • 写入操作前必须先进行写使能,这个是一种保护措施,防止你误操作的。
  • 每个数据位只能由1改写为0,不能由0改写为1,这个意思就是说,flash并没有像ram那样的直接完全覆盖改写的能力,比如在某一个字节的存储单元里面,存储了0xAA这个数据,对应的二进制位就是10101010,如果我直接再次在这个存储单元写入一个新的数据,比如我再次写入一个0x55,因为0x55的二进制是01010101,当这个01010101要覆盖原来的10101010时,就会受到这里第二条规定的限制,每个数据位只能由1改写为0,不能由0改写为1。所以为了弥补这个只能1改0,不能0改1的缺陷,我们就引出了第三条规定。
  • 写入数据前必须先擦除,擦除后所有数据位变为1,擦除会有专门的擦除电路进行,只要给他发送擦除的指令就行了,那通过擦除电路擦除之后,所有的数据位都变成1。

总结:就是flash中数据位为1的数据,拥有单项改成0的权利,一旦改写为0之后,就不能反悔再改写成1了,要想反悔就必须得先擦除,所有的位先统一都变成一,然后再重新来过,这是flash改写的特性。那擦除之后所有的位变1,就是16进制的ff,所以有时候你读取flash会发现数据全是f f,那就说明这一段有可能是擦除之后,还没有写入数据的空白空间,在flash中ff代表空白,那这个改写和擦除的注意事项。

  • 擦除必须按最小拆除单元进行,不能指定某一个直接去擦除,要擦就得一大片一起擦,那在我们这个芯片里,你可以选择整个芯片擦除,也可选择按块擦除,按扇区擦除,所以最小的擦除单元就是一个扇区,刚才我们看了一个扇区是4KB就是4096个字节,所以你擦除最少就得4096个字节一起擦。只擦除某一个字节,只能把那个字节所在扇区的4096个字节全都擦掉。

  • 连续写入多字节时,最多写入一页的数据,超过页尾位置的数据会回到页首覆盖写入。一个写入时序最多只能写一页的数据也就是256字节,每个时序最多写入一页的数据,你再写多缓冲区存不下了,如果你非要写,那超过页尾位置的数据会回到页首覆盖写入,另外我们这个页缓存区是和flash的页对应的,你必须得从页起始位置开始写,才能最大写入256字节,如果你从页中间的地址开始写,那写到页尾时,这个地址就会跳回到页首,这会导致地址错乱哈,所以我们在进行多字节写入时,一定要注意这个地址范围不能跨越页的边缘,否则会地址错乱。

  • 写入操作结束后,芯片进入忙状态,不响应新的读写操作。写入操作后,都有一段时间的忙状态,在这个状态下不要进行新的读写操作,否则芯片是不会响应我们的,要想知道芯片什么时候结束忙状态,我们可以使用读状态寄存器器的指令,看一下状态寄存器的BUSY位是否为1,为0时芯片就不忙了,我们再进行操作,另外注意这个写入操作,包括上面的擦除,在发出擦除指令后,芯片也会进入忙状态,我们也得等忙状态结束后才能进行后续操作。

芯片手册

在这里插入图片描述
状态寄存器有2个:状态寄存器1和状态寄存器2。
状态寄存器1:BUSY,写使能锁存位WEL。

BUSY:当设备正在执行页编程,然后扇区擦除,块擦除,整片擦除或者写状态寄存器指令时,BUSY位置1,在这期间,设备将会忽略进一步指令,除了读状态寄存器和擦除挂起指令。当编程,擦除,写状态寄存器指令后,BUSY清0,表示设备准备好了。

写使能锁存位WEL:在执行写使能指令后,WEL置1,代表芯片写入操作。当设备写失能时,WEL位清0。设备写失能:一是上电后,芯片默认写使能。在执行发送写失能指令,页编程,扇区擦除,这些写入操作后,WEL位为0。

设备ID号
在这里插入图片描述
SPI指令集
在这里插入图片描述
在这里插入图片描述
时序图
在这里插入图片描述
芯片供电电压范围
在这里插入图片描述
执行编程和擦除的时间
在这里插入图片描述
页编程的时间:典型时间是0.7ms,最大时间是3ms。

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

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

相关文章

单片机嵌入式计算器(带程序EXE)

单片机嵌入式计算器 主要功能:完成PWM占空比计算,T溢出时间(延时); [!NOTE] 两个程序EXE; [!CAUTION] 百度网盘链接:链接:https://pan.baidu.com/s/1VJ0G7W5AEQw8_MiagM7g8A?pwdg8…

java线程生命周期介绍

Java线程的生命周期包含以下几个状态: 1.新建(New):线程对象被创建,但是还没有调用start()方法。 1.运行(Runnable):线程正在运行或者是就绪状态,等待CPU时间片。 1.阻塞(Blocked):线程暂时停止执行&…

Nginx 精解:正则表达式、location 匹配与 rewrite 重写

一、常见的 Nginx 正则表达式 在 Nginx 配置中,正则表达式用于匹配和重写 URL 请求。以下是一些常见的 Nginx 正则表达式示例: 当涉及正则表达式时,理解各个特殊字符的含义是非常重要的。以下是每个特殊字符的例子: ^&#xff1…

修复损坏的Excel文件比你想象的要简单,这里提供几种常见的修复方法

打开重要的Excel文件时遇到问题吗?Microsoft Excel是否要求你验证文件是否已损坏?Excel文件可能由于各种原因而损坏,从而无法打开。但不要失去希望;你可以轻松修复损坏的Excel文件。 更改Excel信任中心设置 Microsoft Excel有一个内置的安全功能,可以在受限模式下打开有…

Failed to start gdm.servide - GNOME Display manager

启动虚拟机时,卡在Failed to start gdm.servide - GNOME Display manager不动。 解决方法: 1.重新启动Ubuntu,在进度条未结束之前,长按shift直到界面跳转到选项菜单。 2.选择第二个,按enter进入 3.选择最新版本(后面…

MySQL时间和日期类型详解(零基础入门篇)

目录 1. DATE 2. DATETIME 3. TIMESTAMP 4. TIME 5. YEAR 6. 日期和时间的使用示例 以下SQL语句的测试可以使用命令行,或是使用SQL工具比如MySQL Workbench或SQLynx等。 在 MySQL 中,时间和日期数据类型用于存储与时间相关的数据,如何…

摄影软件使用小技巧

记录摄影过程中使用一些软件的技巧,方便后续查阅。 摄影软件使用小技巧 Pr制作延时视频用PS批量转换RAW照片Lightroom批量处理照片月亮后期堆栈——RegiStax6 Pr制作延时视频 新建序列 选择需要的格式 用PS批量转换RAW照片 Lightroom批量处理照片 按 Shfit&#xf…

解决Spark流处理产生的小文件问题

做流批一体,湖仓一体的大数据架构,常见的做法就是: 数据源->spark Streaming->ODS(数据湖)->spark streaming->DWD(数据湖)->... 那么数据源->spark Streaming->ODS&…

档案数字化管理的工具有哪些

档案数字化管理的工具可以包括以下几种: 1. 扫描仪/数字拍摄仪:用于将纸质文件数字化为电子文件的工具。 2. OCR(光学字符识别)软件:用于将扫描或拍摄的图像文件转换为可编辑的文本文件。 3. 文件管理系统/专久智能电子…

英语国际音标 - DJ 音标 - KK 音标

英语国际音标 - DJ 音标 - KK 音标 1. 国际音标 (International Phonetic Alphabet,IPA)1.1. 记音类型1.2. 48 个国际音标发音表1.2.1. 元音 (vowel)1.2.1.1. 单元音 (monophthong)1.2.1.2. 双元音 (diphthong) 1.2.2. 辅音 (consonant)1.2.2.1. 清音 (voiceless so…

企业内网安全软件分享,有什么内网安全软件

内网安全? 其实就是网络安全的一种。 什么是内网安全软件? 内网安全软件是企业保障内网安全的一种重要工具。 它主要帮助企业实现对网络设备、应用程序、用户行为等方面的监控和管理,以预防和应对各种网络攻击。 这类软件主要用于对内网中…

入侵报警系统的智慧核心——ARMxy工控机深度应用

智能安防领域高清视频监控、人脸识别门禁系统以及入侵报警系统的智能化升级,正以前所未有的速度推动着行业的变革。在这场变革中,ARMxy工业计算机以其卓越的性能、高度的灵活性及强大的集成能力,成为了众多安防解决方案中的核心组件。 高清视…

CorelDRAW2024破解激活码序列号一步到位

亲们,今天给大家种草一个神奇的软件——CorelDRAW破解2024最新版!🎨这是一款专业级的矢量图形设计软件,无论你是平面设计师、插画师还是设计师,都能在这个软件中找到你需要的工具和功能。✨ 让我来给大家介绍一下这款软…

MySQL事务,视图,用户管理学习笔记【事务概念 | 事务隔离级别 | 设置级别 | 视图 | 用户管理】

博客主页:花果山~程序猿-CSDN博客 文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,事务初…

现代x86汇编-环境安装

今天端午节,独自在家,翻阅了张银奎老师编写的《现代x86汇编语言程序设计》一书,前言部分说明书中示例代码都是用微软visual C工具编写并使用微软宏汇编(著名的MASM)编译的,好久没有用微软vc了,假…

48岁冻龄女神性感现身。

千禧台湾性感女神林熙蕾,昔日凭《赌侠大战拉斯维加斯》、《千王之王2000》等作品成名,成为港产片一代女神,今年林熙蕾惊喜参演王家卫执导剧集《繁花》,再度于华语影视坛受注目。6月6日于台湾现身品牌活动,以一袭银色超…

大数据解决方案案例:电商平台日志分析

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

Android 蓝牙profile的配置

在做BQB认证之前,我们需要确认那些profile之前,我们需要查看profile的配置情况 Android13版本前蓝牙profile的配置 MTK的项目代码如下 vendor\mediatek\proprietary\packages\modules\Bluetooth\android\app\res\values\config.xml 高通的项目代码如…

【漏洞复现】宏景eHR openFile.jsp 任意文件读取漏洞

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR openFile.jsp 接口处存在任意文件读取漏洞,未经身份验证攻击者可通过该漏洞读取系统重要文件(如…

53.ReentrantLock原理

ReentrantLock使用 ReentrantLock 实现了Lock接口, 内置了Sync同步器继承了AbstractQueuedSynchronizer。 Sync是抽象类,有两个实现NonfairSync非公平,FairSync公平。 所以ReentrantLock有公平锁和非公平锁。默认是非公平锁。 public sta…