W25Q64简介

2024-06-10 22:44
文章标签 简介 w25q64

本文主要是介绍W25Q64简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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。

这篇关于W25Q64简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049482

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供

LIBSVM简介

LIBSVM简介 支持向量机所涉及到的数学知识对一般的化学研究者来说是比较难的,自己编程实现该算法难度就更大了。但是现在的网络资源非常发达,而且国际上的科学研究者把他们的研究成果已经放在网络上,免费提供给用于研究目的,这样方便大多数的研究者,不必要花费大量的时间理解SVM算法的深奥数学原理和计算机程序设计。目前有关SVM计算的相关软件有很多,如LIBSVM、mySVM、SVMLight等,这些

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工