基于STM32F401RET6字库烧录(SPIW25Q64驱动)

article/2025/8/22 1:40:09

目录

一、SPI&W25Q64

1-SPI介绍

2-初始化SPI

3-SPI数据接收和发送函数

4-验证SPI是否配置正确(读W25Q64的ID)

二、W25Q64简介与API函数

1 - W25Q64芯片介绍

2- W25Q64芯片管脚说明

3- W25Q64芯片工作原理

4- W25Q64芯片操作时序

三、字库烧录

1-烧录字库准备工作

1 什么是字库

2 制作字库

2-利用串口烧录字库到Flash

总结


一、SPI&W25Q64

1-SPI介绍

     SPI(Serial Peripheral interface):是由Motorola公司开发的串行外围设备接口,是一种高速的,全双工同步的通信总线。主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器等器件。

SPI通信特征:同步串行全双工   25Mhz

FLASH:具备掉电不丢失数据  读写速度快   特征:只能写0(将1变为0)不能写1(不能将0变为1)

写之前必须要擦除要写的区域    擦除之后的区域每个位都会变成1

反正说白了就是要调通SPI,在这个例程里用IO模拟SPI的模式3,SPI模式三的时序自己去看看吧QAQ

SPI工作原理:

主机拉低片选(激活从机)

主机控制时钟线产生上升沿(下降沿)发送方发送数据

主机控制时钟线产生下降沿(上升沿)接收方采集数据

….

主机拉高片选(通信结束)

2-初始化SPI

硬件分析:

 从图上可知需要初始化4个管脚,初始化之前需要去找到相对应的GPIO口:

从图上可得对应GPIO:

FLASH_SPI1_CS --- PA4 --- 通用推挽输出
FLASH_SPI1_SCLK --- PA5 --- 通用推挽输出
FLASH_SPI1_MISO --- PA6 --- 输入模式
FLASH_SPI1_MOSI --- PA7 --- 通用推挽输出

W25Q64 SPI初始化代码如下:文件名为w25q64.c

void W25q64_Init(void)
{GPIO_InitTypeDef gpio_InitTypeDef;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);gpio_InitTypeDef.GPIO_Mode = GPIO_Mode_OUT;gpio_InitTypeDef.GPIO_OType = GPIO_OType_PP;gpio_InitTypeDef.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7;GPIO_Init(GPIOA,&gpio_InitTypeDef);gpio_InitTypeDef.GPIO_Mode = GPIO_Mode_IN;gpio_InitTypeDef.GPIO_Speed = GPIO_Speed_100MHz;gpio_InitTypeDef.GPIO_Pin = GPIO_Pin_6;GPIO_Init(GPIOA,&gpio_InitTypeDef);W25Q64_CS = 1;W25Q64_CLK = 1;}

这里用了位带宏定义了片选、时钟线和数据线,大家注意一下,最后再给大家w25q64.h的代码吧,我们继续往下

3-SPI数据接收和发送函数

根据模式三时序写数据交换函数:

u8 W25q64_DataTransfer(u8 data)
{u8 i;u8 buf = 0;W25Q64_CLK = 1;for(i=0;i<8;i++){W25Q64_CLK = 0;if(data & (0x80 >> i)){W25Q64_MOSI = 1;}else{W25Q64_MOSI = 0;}W25Q64_CLK = 1;buf <<= 1;if(W25Q64_MISO)buf |= 1;}return buf;
}

注意:SPI高位先发,数据长度为8bit

4-验证SPI是否配置正确(读W25Q64的ID)

看图

 根据W25Q64参考手册步骤编写代码:

void W25q64_ReadID(void)
{u16 id = 0;W25Q64_CS = 0;W25q64_DataTransfer(0x90);W25q64_DataTransfer(0x00);W25q64_DataTransfer(0x00);W25q64_DataTransfer(0x00);id = W25q64_DataTransfer(0xff);id = id << 8 | W25q64_DataTransfer(0xff);W25Q64_CS = 1;printf("ID:%#x\r\n",id);//	return id;
}

main.c

int main(void)
{Usart1_Init(115200);LED_Config();W25q64_Init();Dma_Init();printf("初始化成功!!!\r\n");W25q64_ReadID();while(1){}
}

读取ID效果:

 得出W25Q64ID为0XEF16,证明SPI配置正确,能正常与W25Q64通信啦,到这一步头文件自己写应该没什么问题,但也放出来吧,给大家参考一下:

w25q64.h

#ifndef _W25Q64_H
#define _W25Q64_H#include "stm32f4xx.h"
#include "io_bit.h"
#include "stdio.h"#define W25Q64_CS PAout(4)
#define W25Q64_CLK PAout(5)
#define W25Q64_MISO PAin(6)
#define W25Q64_MOSI PAout(7)void W25q64_Init(void);
void W25q64_ReadID(void);#endif

二、W25Q64简介与API函数

1 - W25Q64芯片介绍

大小:8Mbyte  =  8388608byte  =  8192kbyte

一页:256byte

标准通信速度:80Mhz

Sector Erase:扇区擦除   4K(最小的擦除单位) 给它擦除的首地址(只能是4096的倍数 0  4096  8192)

1Kbyte = 1024字节   4K = 4096byte   10  (0 ~ 4095)   5000 (4096 – 8191)

Block Erase:块擦除:32K – 64K

最多擦除:10W次  

数据保存:20年

2- W25Q64芯片管脚说明

3- W25Q64芯片工作原理

利用SPI发送指令来操作W25Q64

     EF16

读ID:可以验证芯片的真伪,检验SPI通信正常不正常

4- W25Q64芯片操作时序

  1. 写使能

  1. 读状态寄存器

  1. 页写

页写最多写256字节的数据(不会自动换页)

  1. 扇区擦除

  1. 读ID

读到0xEF16表示SPI驱动成功

  1. 读数据

大家先看上面的吧,代码晚点补,大家可以多催催我,要资料的留邮箱吧

三、字库烧录

1-烧录字库准备工作

1 什么是字库

2 制作字库

2-利用串口烧录字库到Flash

软件代码连接

链接:https://pan.baidu.com/s/1paV-HYv9ZatbRvOKMl6tRg?pwd=4cxm 
提取码:4cxm 
 



http://chatgpt.dhexx.cn/article/bcSAfR6e.shtml

相关文章

STM32CubeMx开发之路—13使用SPI读写W25Q64

!!! 本文已同步到码云 - 点击此链接获取最新 - 可进入码云提交修改 !!! 附件 源码已放到码云 ! ! ! ( 请点击文首链接进入仓库 ) 运行环境 Windows10STM32CubeMX Version 5.2.0Keil5(MDK5) Version 5.28.0.0 简介 本例程主要讲解如何使用硬件IIC读写24C02 STM32CubeMx基本配…

STM32CubeMX系列08——SPI通信(W25Q64、NRF24L01无线模块)

文章目录 1. 准备工作1.1. 所用硬件1.2. SPI 简介1.3. 生成工程1.3.1. 创建工程选择主控1.3.2. 系统配置1.3.3. 配置工程目录 2. 读写EEPROM实验&#xff08;W25Q64&#xff09;2.1. W25Q64 简介2.2. 代码实现 3. NRF24L01无线模块通信3.1. 模块简介3.2. SPI 配置3.2.1. SPI1 配…

STM32驱动W25Q64读写数据

STM32驱动W25Q64读写数据 一&#xff0e;基本参数二&#xff0e;通信协议1、时序&#xff1a;2、代码&#xff1a; 三&#xff0e;引脚定义与接线1、引脚定义2、对应接线 四&#xff0e;主要代码五&#xff0e;操作步骤与现象六&#xff0e;总结 一&#xff0e;基本参数 1.采用…

学习日记——W25Q64 FLASH—QSPI

W25Q64串行FLASH基础知识 大小&#xff1a;8M&#xff08;Byte&#xff09;&#xff08;128块&#xff08;Block&#xff09;&#xff0c;每块64K字节&#xff0c;每块16个扇区&#xff08;Sector&#xff09;&#xff0c;每个扇区4K字 节&#xff0c;每个扇区16页&#xff0c…

(STM32)W25Q64存储模块

1bit表示一个二进制位&#xff0c;1Byte表示8个二进制位。 每一个字节需要一个地址&#xff0c;所以24位地址&#xff0c;2^24次方最大寻址范围是16M。 W25Q256是特殊型号&#xff0c;切换4字节寻址模式才能使用后面的16M空间。 HOLD&#xff1a;芯片正常读写数据时&#xff…

SPIW25Q64(精华版)

1. SPI总线 1.1 W25Q64 1.1 W25Q64简介 W25Q64 是一种具有SPI接口的FlASH存储器&#xff0c;具有32768个可编程页(Page256B)&#xff0c;2048个可擦除扇区(Sector16*Page)&#xff0c;128个可擦除块(Block16*Sector)&#xff0c;容量为128*16*16*256B8MB(64bit)&#xff0c;…

W25Q64简介(译)

W25Q64是华邦公司推出的大容量SPI FLASH产品&#xff0c;其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块&#xff0c;每个块大小为64K字节&#xff0c;每个块又分为16个扇区&#xff0c;每个扇区4K个字节。W25Q…

W25Q64Flash芯片

W25Q64Flash芯片STM32操作 通讯方式&#xff1a;SPI通讯 大小&#xff1a;64是bit 换算字节是8M&#xff08;Byte&#xff09;&#xff08;128块&#xff08;Block&#xff09;&#xff0c;每块16个扇区&#xff08;Sector&#xff09;&#xff0c;每个扇区4K字节&#xff08;…

SPI通讯介绍 以及读写W25Q64(块,扇区,页的区别)

附工程百度网盘链接 链接&#xff1a;https://pan.baidu.com/s/1nCgNb5OyGpABAL657-gX0A?pwd6666 提取码&#xff1a;6666 介绍:摩托罗拉开发的一种通用数据总线, 四根通讯线SCK(串行时钟总线),MOSI(主机输出从机输入),MISO(主机输入从机输出),SS(从机选择)而且是同步全双…

W25Q64调试

简介 W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块&#xff0c;每个块大小为64K字节&#xff0c;每个块又分为16个扇区&#xff0c;每个扇区4K个字节。 引脚介绍 串行数据输入、输出和 IOs&#xff08;DI、DO 和 IO0、IO1、…

软件SPI读写W25Q64硬件SPI读写W25Q64

目录 软件SPI读写W25Q64 MySPI W25Q64 主函数 硬件SPI读写W25Q64 软件SPI读写W25Q64 程序整体框架&#xff1a; SPI模块包含通信引脚封装&#xff0c;初始化&#xff0c;SPI三个基本时序单元&#xff08;起始&#xff0c;终止&#xff0c;交换一个字节&#xff09; W2…

W25Q64Flash芯片STM32操作

1、W25Q64Flash芯片介绍 通讯方式&#xff1a;SPI通讯 大小&#xff1a;8M&#xff08;Byte&#xff09; &#xff08;128块&#xff08;Block&#xff09;&#xff0c;每块64K字节&#xff0c;每块16个扇区&#xff08;Sector&#xff09;&#xff0c;每个扇区4K字节&…

STM32学习笔记(十一)丨SPI通信(W25Q64芯片简介,使用SPI读写W25Q64存储器芯片)

本篇文章包含的内容 一、SPI的通信协议及其原理1.1 SPI简介1.2 SPI通信的硬件连接1.3 SPI的时序基本单元1.3.1 起始条件和终止条件1.3.2 交换字节&#xff08;模式0&#xff0c;先移入&#xff0c;再移出&#xff09;1.3.3 交换字节&#xff08;模式1&#xff0c;先移出&#x…

看单片机原理图-外部FLASHW25Q64

系列文章目录 看单片机原理图-最小系统 看单片机原理图-最小系统电源电路 看单片机原理图-输入输出电路LED指示、按键输入 看单片机原理图-红外遥控、EEPROM 看单片机原理图-FLASH 文章目录 系列文章目录前言一、FLASH 前言 硬件&#xff1a;百问网100ASK_STM32F103_MINI开发…

W25Q64 Flash芯片原理与应用方案(含W25Q64中文数据手册)

W25Q64是华邦公司推出的大容量SPI FLASH产品&#xff0c;其容量为64Mb&#xff08;8MB&#xff09;&#xff0c;应用较为广泛。 W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块&#xff0c;每个块大小为64K字节&#xff0c;每个…

cortex_m3_stm32嵌入式学习笔记(二十一):SPI实验(通信总线)

SPI 是英语 Serial Peripheral interface 的缩写&#xff0c;顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM&#xff0c; FLASH&#xff0c;实时时钟&#xff0c; AD 转换器&#xff0c;还有数字信号处理器和数…

STM-32:SPI通信协议/W25Q64简介—软件SPI读写W25Q64

目录 一、SPI简介1.1电路模式1.2通信原理1.3SPI时序基本单元1.3.1起始和终止1.3.2交换字节 二、W25Q642.1W25Q64简介2.2W25Q64硬件电路2.3W25Q64框图2.4Flash操作注意事项 三、软件SPI读写W25Q643.1接线图3.2程序代码 一、SPI简介 SPI是串行外设接口&#xff08;Serial Periph…

STM32CubeMx之硬件SPI驱动W25Q64

STM32CubeMx之硬件SPI驱动W25Q64 1.SPI简介 SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&a…

SPI读写串行FLASH(W25Q64)

文章目录 1、SPI协议1、硬件连接2、通讯时序3、不同的通信模式 2、W25Q64介绍3、SPI读写驱动编写4、源码 1、SPI协议 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface)&#xff0c;即串行外围设备接口&#xff0c;是一种高速全双工的通信总线。它被广泛地…

STM32入门开发: 介绍SPI总线、读写W25Q64(FLASH)(硬件+模拟时序)

一、环境介绍 编程软件: keil5 操作系统: win10 MCU型号: STM32F103ZET6 STM32编程方式: 寄存器开发 (方便程序移植到其他单片机) SPI总线: STM32本身支持SPI硬件时序&#xff0c;本文示例代码里同时采用模拟时序和硬件时序两种方式读写W25Q64。 模拟时序更加方便移植到…