stm32使用SPI对W25Q64--8M字节FLASH的读写

时间:2021-03-16 04:55:44


先W25Q64介绍:

板上有个带SPI的FLASH产品,W25Q64,华邦公司,大容量64Mb的,也就是8M字节,

(W25Q64把这个8M的容量分为128块-Block,每块64K字节,分出16个扇区,每个扇区4K字节)

即就是:W25Q64--8M  一个块--64K   一个扇区4K

最小擦除单位为一个扇区

 

关键点---这样我们需要给W25Q64开辟一个至少4K的缓存区,这样对SRAM要求比较高,要求芯片必须有4K以上SRAM才能很好的操作。(嗯,要开辟缓存区)

 

至于W25Q64的擦写周期10W次、数据保存期限20年,随便用就是了。

支持电压2.7~3.6V,直接用给stm32供电的3.3V即可,不多说。

 

W25Q64还有一点参数:支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可以到80Mhz(双输出时相当于160Mhz,四输出时相当于320M),更多的W25Q64的介绍,请参考W25Q64DATASHEET

 

嗯,我们的stm32可以用,先用着。

 

stm32对W25Q64

读FLASH的时候,按地址,及要读的长度,读出来放在数据存储区即可

写FLASH的时候,要考虑扇区剩余大小,写的数据长度控制

if(NumByteToWrite<=secremain)secremain=NumByteToWrite;//

并且,里面已经有数的话,要先擦除这个扇区再写,

 

实际代码,参考stm32战舰例程