news 2026/3/29 11:04:40

5.7W25Q64 实验(上)-嵌入式铁头山羊STM32笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5.7W25Q64 实验(上)-嵌入式铁头山羊STM32笔记

目录

实验目标

实验目标:

通过 MCU 的 SPI 总线, 控制 W25Q64 存储一字节数据;

然后将存储的数据通过 SPI 读出来

上期纠错

问题 1:PA15 需要重映射,不能当做普通 IO 直接作为 CS 引脚

问题 2:PA15 初始化时默认要给高电平,不能浮空(CS 拉低开始通信)

问题 3:W25Q64 不支持 SPI 的模式 3,所以 SPI 的配置需要改为模式 1

纠正问题 1:PA15 比较特殊,上电是作为 JTDI,JTAG 调试使用的一个管脚,需要重映射才能使用。

上图为实际 PA15 重映射操作

纠正问题 2:上图为 PA15 默认上电高电平操作

纠正问题 3:上图为改为模式 0 操作

1.W25Q64的存储结构

上图为需要编写的 API 函数,一个往里写,一个从 W25Q64 里面读

W25Q64 为 FLASH 模块,掉电不丢失

从上图可以看出这个存储器的存储容量:8M 字节(64 为 64Mbit,1 字节为 8bit)

2.使用W25Q64存储数据

https://www.bilibili.com/video/BV11X4y1j7si?t=643.1&p=31

FLASH 存储方式:得先擦除,再编程写入。

注意是扇区擦除(4KB),页编程(256B)。

写入要保证安全性,所以写入带锁

写使能:打开安全锁

扇区擦除:耗时 50ms 左右

等待空闲:状态寄存器 1--SR1 的 BUSY 位为 1,表示正在执行。等待标志位编程 0

页编程:耗时 10ms 左右

W25Q64_Save_byte 函数给 W25Q64 写入的六个步骤如上:

1.写使能

2.扇区擦除

3.等待空闲

4.写使能

5.页编程

6.等待空闲

给 W25Q64 写入,SPI 总线控制,需要给它发命令(详情看 datasheet)

上图为写使能命令(0x06)的波形图(左)和代码实现(右)

上图为扇区擦除的操作(0x20+地址)的波形图(左)和代码实现(右)。

24 位首地址:地址为擦除扇区的首地址, 0x00 0x00 0x00

上图为写使能扇区擦除的具体代码实现。

上图为等待空闲的波形图(左)和代码实现(右)。

等待空闲:状态寄存器 1 的 BUSY 位变为 0 ,则表示擦除完成。

上图为等待空闲操作的具体代码实现。

buffer[0] = 0xff:用来交换读取 BUSY 的字节数据,写个

if((buffer[0] & 0x01)==0) beak:BUSY 位在最低位,&与一个 0x01,可以检测此位是否变为 0.

页编程指令码为 0x02。

可从 DI 线看出:0x02(指令码)+0x00 0x00 0x00(24 位字节)+256 字节(最大 256)

上图为页编程操作具体代码

3.使用W25Q64读取数据

https://www.bilibili.com/video/BV11X4y1j7si?t=2074.8&p=31

可从 W25Q64 的 datasheet11.2.8 节中找到读指令(0x03)

上图为读指令时序图和代码操作。

第一步:发送 0x03 和 24 位地址

第二步:读取一个字节数据

API:

uint8_t App_W5Q64_loadByte(void);

上图为从

上图为测试代码。

测试代码功能:保存 0x12,然后读取出来。

注意,定义的 a 为全局变量,方便在 debug 的 watch 中看,局部变量会显示不在范围中

上图为具体测试代码。

可以右键添加到 watch,也可以鼠标悬在变量上查看

总结

简单了解了下 W25Q64 的存储结构(64Mbit,8MB),分级可分为块、扇区、页 。简单进行了 W25Q64 的一字节读写。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 17:27:23

解决phpstudy_pro 无法启动 MySQL 以及3306被占用的问题

问题说明 首先我们在启动mysql服务的时候,服务无法启动,而且一直重试。 一、是否真的是端口占用 启动 phpstudy_pro,点击 MySQL 的「启动」按钮,若弹出错误提示: MySQL 启动失败:端口 3306 被占用 或 Po…

作者头像 李华
网站建设 2026/3/27 9:35:27

【synchronized 与 ReentrantLock + Condition 的深度对比 Plus版】

Java并发编程:synchronized 与 ReentrantLock Condition 的深度对比——从Monitor队列到惊群效应与精确唤醒前言正文一、每个Java对象天生都能当锁?Monitor的底层结构形象比喻:锁对象就像一个会议室。关键区别:二、synchronized的…

作者头像 李华
网站建设 2026/3/27 17:56:24

基于单片机的智能窗帘控制系统设计与实现

一、设计背景与核心需求 随着智能家居技术的发展,传统窗帘的手动操作已无法满足现代生活对便捷性、舒适性和节能性的需求。高层住宅大尺寸窗帘拉动费力、忘记关窗导致风雨侵入、光照过强影响室内环境等问题频发。基于单片机的智能窗帘控制系统,通过环境感…

作者头像 李华
网站建设 2026/3/27 18:06:51

Java 应用提供对接第三方接口的优雅高级写法

一、真正的高手,不是“调通接口”,而是“设计边界” 对接第三方接口,看似只是发个请求、拿个 JSON,但背后其实是——系统边界的协作与防御设计。 你面对的不是自己可控的代码,而是一个随时可能“变脸”的外部世界: 对方文档写着“此字段必传”,实际却返回 null 测试环境…

作者头像 李华
网站建设 2026/3/27 10:16:01

基于S7 - 1200 PLC的工业冷库等控制系统漫谈

基于S7-1200 PLC工业冷库控制系统 基于PLC的空调控制系统设计。 基于PLC的工业空调机组设计。基于PLC的冷风机组系统设计带解释的梯形图接线图原理图图纸,io分配,组态画面在工业领域,对于温度的精准控制至关重要,无论是冷库、空调…

作者头像 李华
网站建设 2026/3/27 4:30:48

鸿蒙Electron应用商业化效果评估:数据驱动的增长闭环

基于前文对商业化落地的探讨,本次将聚焦“鸿蒙Electron应用商业化效果评估体系”,从“核心指标构建、数据采集分析、优化迭代闭环”三个维度,提供可量化、可落地的评估方案,帮助开发者精准判断商业化健康度并高效优化。 鸿蒙Elect…

作者头像 李华