参考数据手册;
W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景(非易失性存储器(E2PROM ,FLASH),数据掉电不丢失,在掉电后,数据保持不变(XIP就地执行))
存储介质:Nor Flash(闪存)(存储介质:Nor Flash和(Nand Flash);)
时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)((双重SPI和四重SPI,MOSI用于发送,MISO用于与接收,MOSI和MISO同时兼具发送和接收的功能,一个时钟下同时发送俩位数据,四重SPI即一个时钟同时发送四位,WP和HOLD不需要时,可以充当数据传输引脚,四个数据同时收发,类似并行模式(串行为一位一位的发送))
存储容量(24位地址):
W25Q40: 4Mbit / 512KByte;
W25Q80: 8Mbit / 1MByte ;
W25Q16: 16Mbit / 2MByte;
W25Q32: 32Mbit / 4MByte;
W25Q64: 64Mbit / 8MByte ;
W25Q128: 128Mbit / 16MByte
W25Q256: 256Mbit / 32MByte;
使用的SPI串行通信;
使用的是24位地址(2*24/1024/1024最大寻址空间是16MB),三个字节;
引脚定义: cs,片选,CLK时钟线,DI(MOSI),DO(MISO),VCC供电,HOLD就是当需要中断去操作其他设备时候,CS需要会高电平,那么时序就终止了,此时将HOLD置低电平,但是此时CS虽然终止了,但是芯片的时序不会终止,会保持在该状态,当中断结束后,从当前时序继续执行;WP为写保护,GND接地;
*引脚上加横向——,表示低电平有效;
IO1,IO2,IO3,IO4当作为双重SPI(主从同时输出输入)和四重SPI(将写保护和HOLD中断不使用时,可以当作输出引脚复用)时;
UI是芯片,J1是六口排针;
VCC经过排针标号接到排针6号脚,GND通过标号接到排针3号脚,4个通信线通过排针引出即可;
WP和HOLD直接接电源正极默认高电平,表示不使用(低电平有效);(需要用接到GPIO即可)
C1接在VCC和GND为滤波电容;
D1和R1接在VCC和GND为电源指示器;
24位地址对应2*24(次方)*1024*1024=16M的寻址空间;
一个地址由三个字节组成;
将16M的寻址空间划分为128块Block,每块是64kb(可以参考STM32基础知识的-存储器映像),这里实际只有8M的空间原因是该型号是8M的;又将每一块分为16个扇区Sector,每个扇区是4kb;之后又将每个扇区划分为16给页page,每页是256Byte;
控制逻辑芯片自动实现,主控芯片把
数据通过SPI协议发送给控制逻辑,控制逻辑自动操作内部电路实现我们需要的功能;
状态寄存器,获取当前状态;
重要的两位,
BUSY:设备正在执行页编程,页擦除,块擦除,扇区擦除,整个擦除,或者写状态寄存器置1的时候,BUSY位置1,设备忙,会忽略其他指令(除了挂起和读);
WEL:写使能锁存位,执行位写使能后,WEL置1,即在任何时候要写入的时候,都要进行写使能;
配合WP实现硬件写保护;
高电压发生器:配合FLash进行编程,因为Flash的掉电不丢失;
页地址锁存/计数器
行字节锁存/计数器
过程分析:通过SPI发送3个字节地址,一页是256字节,一页内的地址取决于最低的一个字节,其他俩个高字节,对应的是页地址;
前俩个进入的字节会进入到地址锁存计数器,最后一个会进入地址锁存计数器;
前俩个字节通过行解码和写保护确定对哪一页进行操作,最后一个字节通过列解码和256字节页缓存(RAM缓存区),通过指定字节进行对相应地址读写;
RAM缓存器,写入数据时,先将数据放在缓存区中,在时序结束后,芯片将缓存区的数据放在FLASH中永久保存;(因为SPI写入速度很快,Flash写入太慢,而RAM存放速率也很快,但是同一时间写入不能超过256kb,所以缓存区有一条写通过状态寄存器中,给状态寄存器BUSY位置1,表示芯片忙,芯片不会响应新的时序;读取也从缓存区经过)
四、FLASH读写规则;
写操作时:
每次写入操作前,都要进行写使能;
数据只能由1改成0,不能由0改成1;
每次写入数据前,需要先擦除,擦除后,所有数据变为1;
擦除必须按照最小单元进行擦除;
连续写入多个字节时,一次写入最多不能超过一页的最大值256个字节,否则超出的部分就会从页首进行覆盖;
写入操作结束后,芯片会进入忙状态,不响应新的读写操作;
读取时;直接调用读取时序,无需使能,无需额外操作,没有页限制,读取操作结束后,芯片不会处于忙状态,但是芯片处于忙状态时,不能读取;
五、总结:
1.什么是W25QXX芯片;
2.W25Q64重要参数是(存储介质,时钟频率,存储容量);
3.常见非易失性的存储器有哪些;
4.常见的存储介质有哪些;
5.存储的寻址空间和地址是多少;
6.W25Q64的硬件电路各个引脚的定义;
7.可以理解W25Q64电路图,各部分作用;
8.W25Q64结构图,如何进行地址分配的,如何划分的,每一块有多大;
9.W25Q64结构体各部分都是什么作用;
10.如何实现对FLASH的读写的;
11.FLASH操作注意事项;