江科大笔记—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,意思是写保护配合内部的寄存器器配置,可以实现硬件的写保护,写保护低电平有效&#

### 关于科大 STM32 和 W25Q64 的资料、项目及示例代码 #### 使用STM32操作W25Q64闪存芯片的方法 对于STM32平台而言,无论是采用软件SPI还是硬件SPI接口与W25Q64通信,都能发挥各自特点[^1]。具体来说: - **硬件SPI方式**:利用STM32内置的SPI模块可以更高效地完成数据传输任务,减少CPU占用率并提高整体性能。 - **软件SPI方式**:通过编程控制GPIO引脚模拟SPI协议,在灵活性方面表现突出。 为了更好地理解如何基于STM32开发板连接和驱动W25Q64存储器,下面给出一段简单的初始化配置以及读写测试程序作为参考实例。 ```c #include "stm32f1xx_hal.h" // 定义 SPI 接口使用的 GPIO 引脚 #define SPI_CS_PIN GPIO_PIN_4 #define SPI_CS_PORT GPIOA void W25Q64_Init(void){ // 初始化 CS 引脚为输出模式 __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = SPI_CS_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(SPI_CS_PORT, &GPIO_InitStruct); } uint8_t W25Q64_ReadStatusRegister(void){ uint8_t status_register_value; // 设置片选信号有效 (低电平) HAL_GPIO_WritePin(SPI_CS_PORT,SPI_CS_PIN,GPIO_PIN_RESET); // 发送命令字节给设备... // 这里省略实际发送过程... // 获取状态寄存器返回值... // ... // 取消片选信号 (高电平) HAL_GPIO_WritePin(SPI_CS_PORT,SPI_CS_PIN,GPIO_PIN_SET); return status_register_value; } ``` 上述代码片段展示了基本框架下的初始化函数`W25Q64_Init()`用于设置CS线;另一个辅助功能`W25Q64_ReadStatusRegister()`则示范了怎样向W25Q64发出指令获取其当前工作状态的信息。需要注意的是,真正的SPI通讯细节已被简化处理以便聚焦核心逻辑。 此外,针对想要深入了解该主题的学习者,建议查阅由苏科技大学提供的《STM32自学笔记》系列文档[^2],其中包含了更多关于嵌入式系统的理论基础和技术实践指导材料。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值