LZY825597017 发表于 2024-1-24 17:47:55

SPI FLASH - W25Qxx扩展

1、硬件描述
W25Qxx 系列 Flash 存储器可以为用户提供存储解决方案。擦写周期多达10W次,可将数据保存达20年之久,支持2.7~3.6V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80Mhz。
W25Qxx 系列 Flash 存储器是为系统提供一个最小空间、最少引脚,最低功耗的串行Flash存储器,比普通的串行Flash存储器更灵活,性能更优越。
(1)存储结构1块 = 16扇区 = 64k字节,1扇区 = 16页 = 4k字节,1页 = 256字节。只有三种擦除方式:扇区擦除 、 块擦除 和 全片擦除。
W25Qxx容量和内存空间地址不同,具体如下表所示:
(2)引脚接口-标准SPI接口片选引脚:/CS数据输出引脚:DO(IO1)   标准SPI模式: CLK上升沿捕获地址和命令,下降沿输出数据。写保护引脚:/WP(IO2)地:GND数据输入引脚:DI(IO0)    标准SPI模式,CLK引脚的上升沿捕获。串行时钟引脚:CLK保持引脚:/HOLD(IO3)电源:VCC
(3)型号ID-本扩展库仅支持W25Q80~W25Q128三字节地址,W25Q256及W25Q512请自行修改库注:如果想要实现4字节地址,需要启用4字节地址模式。
(4)指令
2、图形块描述(1)初始化W25Qxx - 使用模拟SPI
(2)初始化W25Qxx - 使用硬件SPI(注意:ASRPRO没有使用硬件SPI)TW32F003默认硬件SPI引脚PA2(SPI1_SCK)]CH32V103默认硬件SPI引脚PA5(SCK)            PA7(MOSI)         PA6(MISO)
TWEN32默认硬件SPI引脚   PB3(SCK)            PB5(MOSI)          PB4(MISO)
(3)W25Qxx读取芯片ID//0XEF13,表示芯片型号为W25Q80
//0XEF14,表示芯片型号为W25Q16   
//0XEF15,表示芯片型号为W25Q32
//0XEF16,表示芯片型号为W25Q64
//0XEF17,表示芯片型号为W25Q128


(4)W25Qxx芯片ID(用于判断当前设备容量)
(5)W25Qxx写数据(SPIFLASH只能将“1”写“0”并且一次擦除最少4K,底层开辟使用4K缓存,注意自己程序较多时,需要注意RAM空间是否会溢出)地址、长度可查看列表:buf:数据存储区地址(一般传入数组名,用数组存储)
(6)W25Qxx读数据地址、长度和上相同;buf:数据存储区地址
(7)W25Qxx全片擦除(注意:这个函数会非常耗时,擦除完成才会退出这个函数)
(8)W25Qxx擦除指定块(例:W25Q80 共16块填入范围0~15)
(9)W25Qxx擦除指定扇区(例:W25Q80 共256扇区填入范围0~255)
(10)W25Qxx进入掉电模式(掉电状态下电流消耗1uA)
(11)唤醒W25Qxx(进入掉电模式可唤醒)
3、图形块范例

4、注意事项1、连接线!!!这里最好不要使用杜邦线直接用使用烙铁用导线连接,或者使用质量好的杜邦线连接,否则可能读写的数据会有异常,确保硬件正常非常重要!2、W25Q256及W25Q512使用4字节地址,本扩展仅支持3字节地址,如有需要,请在初始化写0XB7启用4字节地址模式并修改页写入函数。3、W25Q128使用全片擦除函数可能会占用几百秒时间。4、写函数底层会开辟4K字节缓存用于扇区写入,值得注意的是,写入地数据位于两个扇区之间将花费更多时间用于擦除扇区。另外,需要注意RAM空间大小,防止溢出,若写入数据地址自己会算,可以注释写入函数及缓存,保留无检验写函数(请确保写入地址数据为0XFF)。







页: [1]
查看完整版本: SPI FLASH - W25Qxx扩展