• 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

系列一:ESP32系列模组基础学习系列笔记

1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。
2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。
3、 认识基本esp32的GPIO接口,开始点亮您的第一盏 LED和中断回调实现按键功能 。
4、体会esp32的强大的定时器功能, 实现定时2s闪烁一盏LED灯。
5、接触实践esp32的pwm宽度脉冲功能, 实现呼吸效果闪烁一盏LED灯。
6、smartConfig和微信airKiss在esp32的实现,一键配网轻松快捷连接路由器。
7、利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。
8、esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。
9、esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。
10、乐鑫esp32 SDK编程利用rmt驱动ws2812七彩灯,实现彩虹渐变效果。
11、入门 乐鑫esp-adf 音频框架开发,esp32造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。
12、开源一个微信公众号airkiss配网esp32以及局域网发现功能的工程,分享一个airkiss配网小工具。
13、esp32 内置 dns 服务器,无需外网访问域名返回指定网页。
14、esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录界面。
15、认识本地离线语音唤醒识别框架 esp-skainet ,实现较低成本的硬件语音本地识别控制。
16、学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
17、全网首发,乐鑫esp32 sdk直连京东微联·小京鱼 · IoT开放平台,实现叮咚音响语音智能控制。
18、入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。
19、重磅开源,如何在微信小程序上ble蓝牙配网esp32,blufi的那些事!
20、一篇好文,开发过程中编译esp32固件太大,无法正常启动?教你如何自定义分区表partitions.csv。
21、 esp32蓝牙配网blufi的高度封装,集成简单、使用简单、容易上手,提高开发效率!
22、讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等!
23、安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
25、分享在 esp32 SDK实现冷暖光色温平滑调节的封装,轻松集成到您的项目去。
26、分享下如何在window下使用CMake编译,编译速度提高传统 make 编译一个档次,支持 ESP32 和 ESP32-C3。
27、windows10平台下自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。
28、分享在 esp32 SDK实现驱动 Flash W25Q32 的封装,轻松集成到您的项目去。

系列二:ESP32-Camera 摄像头开发板系列笔记

1、安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现MQTT远程拍照传输到私有服务器。
2、安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现本地视频流监控。
3、安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,拍照图片通过有线串口传到上位机PC端。

系列三:ESP32-C3 模组系列笔记

1、【蓝牙Mesh笔记 ①】ESP32-C3 模组上实现天猫精灵蓝牙 BLE Mesh AliGenie 接入,无需WiFi 连接也可以实现天猫精灵语音控制。

系列四:ESP32-S3 模组系列笔记

1、安信可 ESP32-S3 模组上驱动摄像头 OV2640,实现远程拍照并 HTTP 传输到阿里云对象存储OSS,并显示在微信小程序上。。

系列四:ESP32模组系列笔记 LVGL LittlevGL

1、【LittlevGL ESP32 学习笔记 ①】移植最新的 LVGL 到安信可ESP32\C3模组,显示一个二维码。

文章目录

  • 一、前言
  • 二、再回顾 Flash W25QXX系列
    • Flash与EEPROM的区别
  • 三、驱动的一些常见知识
    • 3.2 获取芯片信息:
    • 3.3 华邦 Winbond flash 信息
  • 四、接线
    • 实物图:
    • 五、使用以及日志串口输出
    • 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

一、前言

最近遇到好多粉丝的感谢,我也感谢大家的支持,不管在哪工作,写博客是我一直坚持下来的习惯,把现学的、所学的,总结出来,共勉大家!

最近遇到客户需要在 ESP32-C3 模组外置驱动一个 Flash,于是乎,翻阅了下之前学的正点原子 STM32 资料,很快就适配移植了在安信可的 ESP-C3-12F、ESP32、ESP32S2系列模组,现在也分享给大家。

二、再回顾 Flash W25QXX系列

在2019年,我就写过一篇博客,很详细写明了里面的flash空间情况。

可移步到博客:渗透学习回顾下esp8266的外置spi芯片25q系列,熟悉代码块在其的分布,得心应手放置图片或其他资料:https://blog.csdn.net/xh870189248/article/details/81017735

一般情况,对于ESP类产品,我们在内置的Flash增加即可容量,即可达到需求。但是,有些应用场景,会用到大空间,像64MB这么大,就需要2个flash了。

那么,我们就需要外挂一个FLASH,那么你也需要本文拉。这里我们选择Flash,而不是EEPROM呢。因为两者之间有所区别的。

、w25q系列生产的加工的商家很多,但是里面的分布和命名规则都是一样的。比如华邦的w25q64,spi通讯接口,64就是指64Mbit也就是8M的容量。而我们平时的8266-12f的32Mbit就是4M容量。

②、w25q64为例,我分析下里面的存储分布。w25q64把8M容量分为了128块,每一块又分为16个扇区,而每个扇区占4K大小。由此可计算到,w25q64有 64Mbit / 8 * 1024 / 16 / 4 = 128 块 ,有128 * 16 = 2048 个扇区,此计算原理后面我会提到。

③、w25q64为例,我们在擦除数据时候,最少擦除单位为一个扇区,也就是每次必须擦除 4K 字节。写数据也是一样,必须一个扇区一个扇区去写,所以有我们的esp8266文档提到为什么要4的倍数去写读一个数据。

④、w25q64为例,我们在往某个地址写之前必须确保这个地址上的值是0xFF,否则说明这个地址以前被写过数据,还没有被擦除。w25q64擦除的最小单位是Sector也就是4k个字节,也就是说如果要想往某个地址写一个值,如果这个地址上的值不是0xFF,那么就要把整个扇区都擦除,然后在写。

⑤、w25q64为例,给w25q64开辟一个4k的缓存,比如定义一个4k的数组,然后在写数据之前先判断如果这个地址上的数据不是0xFF,就先把这个地址所在的Sector里的数据全部保存在4k缓存中,再擦除这个扇区,再把缓存中对应的地址上的数据更新,再把这个4k缓存区的所有数据一次性的写入到这个Sector中。因此我们在esp8266操作存储时候,要注意先擦除再写数据。

⑥、w25q64为例,一共是8M字节=810241024=8388608(Byte),分为128块(64K),每一块有分为16个扇区(4K),所以扇区的个数是:12816=2048(个),那么我们选择扇区的范围就是0-2047,假如要擦除第1000个的扇区,那么这个扇区的字节起始就是10004096=4096000,然后W25Q64就从4096000开始往下擦除4K大小的数据空间,计算地址的时候是使用字节来计算的。

下面是我用心画的一个示意图,方便大家去了解下:

这个多少块的计算公式的得来主要后面推导过来的,我们仔细发现,后面都是一个4K为一个扇区,16个扇区为一块,所以我们先将我们的64Mbit换算为64/8*1024= 8192k的容量去除于每个扇区的大小就是一共有多少块了!

Flash与EEPROM的区别

1、 FLASH按扇区操作,EEPROM则按字节操作
2、 FLASH写入时间长,EEPROM写入时间短
3、 FLASH擦写次数少(10000次),EEPROM次数多(1000000次)
4、 FLASH的电路结构简单,成本低,EEPROM工艺复杂,成本高

三、驱动的一些常见知识

这次的代码,移植来自正点原子,我也将PPT整理放给大家看看。

3.2 获取芯片信息:

Byte1 : 厂商ID(0xef=Winbond)
Byte2 : 内存信息(0x40=SPI/0x60=QPI)
Byte3 : 容量 (20x14=220=0x100000=1M Byte=8M Bit)

  • First 10Byte : ASCII 0-9
  • Next 32Byte : ASCII A-Z

3.3 华邦 Winbond flash 信息

Device Byte容量s Address range 4K-Sectors数量 32K-Blocks数量 64K-Blocks数量 JEDEC ID
W25Q80 1M 0x0FFFFF 256 32 16 EF-40-14
W25Q16 2M 0x1FFFFF 512 64 32 EF-40-15
W25Q32 4M 0x3FFFFF 1024 128 64 EF-40-16
W25Q64 8M 0x7FFFFF 2048 256 128 EF-40-17
W25Q128 16M 0xFFFFFF 4096 512 256 EF-40-18

四、接线

您可以通过 menuconfig 配置您的GPIO.

W25Q64 ESP32 ESP32-S2 ESP32-C3
1 CS GPIO5 GPIO34 GPIO9
2 MISO GPIO19 GPIO33 GPIO18
3 WP 3.3V 3.3V 3.3V
4 GND GND GND GND
5 MOSI GPIO23 GPIO35 GPIO19
6 SCK GPIO18 GPIO36 GPIO10
7 HOLD 3.3V 3.3V 3.3V
8 VCC 3.3V 3.3V 3.3V

实物图:

五、使用以及日志串口输出

#include <stdio.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "my_spi_flash.h"#define TAG "AiThinker-W25QXX::"const uint8_t TEXT_Buffer[] = {"I am aithinker xuhongv"};
#define SIZE sizeof(TEXT_Buffer)void app_main()
{SPI_FLASH_Init();uint8_t datatemp[256] = {0};uint16_t FLASH_SIZE = 8 * 1024 * 1024; //FLASH 大小为8M字节ESP_LOGI(TAG, "Write mySaveBuff length:%d", SIZE);ESP_LOGI(TAG, "Write mySaveBuff:%s\n", TEXT_Buffer);W25QXX_Write(TEXT_Buffer, FLASH_SIZE - 100, SIZE);W25QXX_Read(datatemp, FLASH_SIZE - 100, SIZE);ESP_LOGI(TAG, "Get mySaveBuff:%s \n", datatemp);
}


乐鑫官方仓库也集成了驱动文件系统:examples/storage/ext_flash_fatfs

本文章源码免费下载:https://github.com/xuhongv/StudyInEsp32/tree/master/25_esp32c3_flash_w25q32

另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • 玩转无线物联网带你飞、免费加千人群讨论,群里众多国内ESP开发者,找到你一份归属,免费白嫖。
  • QQ讨论一群,点击加群:434878850
  • QQ讨论二群,点击加群:623325168
  • 个人微信公众号:徐宏blog , 不定时推送干货文章,不推送任何广告。
  • 个人邮箱:xuhongv@yeah.net 24小时在线,有发必回复!
  • esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
  • 关注下面微信公众号二维码,干货多多,第一时间推送!

乐鑫Esp32学习之旅28 分享在 esp32 SDK实现驱动 Flash W25Q32 的封装,扩大容量存储更多的资源。(开源源码工程)。相关推荐

  1. 乐鑫Esp32学习之旅 24 分享在 esp32 SDK实现冷暖光色温RGB/HSV平滑调节的封装,轻松集成到您的项目去。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  2. 乐鑫Esp32学习之旅28 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现MQTT远程拍照传输到私有服务器。(附带源码)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  3. 乐鑫Esp32-S2学习之旅① 入门 ESP32-S2 环境搭建 ,分享如何直连苹果智能家居 HomeKit 平台,轻松语音 Siri 控制!

    本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...

  4. 乐鑫Esp32-S2学习之旅② ESP32-S2 控制 ws2812b 实现五彩斑斓的效果,代码开源!

    本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...

  5. 乐鑫esp8266学习rtos3.0笔记:分享在 esp8266 C SDK实现冷暖光色温平滑调节的封装,轻松集成到您的项目去。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于C SDK的ESP8266开发技术全系列笔记 一.N ...

  6. 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  7. 乐鑫Esp32学习之旅① 爬坑学习新旅程,虚拟机Linux环境搭建esp32环境,打印 “Hellow World”。(2021年6月已更新)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

  8. 分享网上流行的50+开源源码下载

    本文推荐分享网上流行的50+开源源码下载,在网站收集的包含各类源码下载,php源码,asp源码,本页源码内容没有经过测试,完全开源免费,大家可以自行试用,最受IT公司欢迎的30款开源软件,你也值得拥有 ...

  9. 乐鑫Esp32学习之旅 22 讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等,附带Demo;

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

最新文章

  1. Ext.Net学习笔记22:Ext.Net Tree 用法详解
  2. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】...
  3. 文科生自学python要多久_怎么自学python,大概要多久?
  4. SpringCloud Config 分布式配置
  5. 一般项目中哪里体现了数据结构_优秀程序员都应该学习的数据结构与算法项目(GitHub 开源清单)...
  6. antd 能自适应吗_我文笔不好,不太会写文章,能做好自媒体吗?
  7. FFmpeg系列(二)-Android项目引入FFmpeg库播放视频
  8. 关于2018、2019后的 MacBook 苹果电脑增加T2安全芯片造成无法U盘启动解决办法
  9. 软件工程第四章——软件设计(仅记录我所认为重要的知识点)
  10. QPainter绘图
  11. 服务器运维需要学什么,运维工程师要学什么?运维工程师是做什么的?
  12. python大气模型算法_[学习笔记][Python机器学习:预测分析核心算法][利用Python集成方法工具包构建梯度提升模型]...
  13. 如何开好项目验收会?
  14. JavaScript实战——打气球游戏
  15. java引用另一个程序图像,java – 在Android应用程序上显示图像的另一种方法
  16. windwos服务器网站504,打开网站出现504 gateway time-out的原因及解决方法
  17. 前端实现实时消息提醒消息通知
  18. OpenCV二值化图像像素操作
  19. ARM嵌入式开发板推荐
  20. mpvue实现类似通讯录锚点

热门文章

  1. Revit二次开发之技能篇(一)———轴网自动对齐
  2. disconf在windows环境下部署调试
  3. 【牛羊饲喂技术】牛羊育肥能不能喂猪料?蓉宝生物有说道
  4. Python自动化测试学习3
  5. 冒险岛启动游戏提示计算机丢失,各种无法登陆情况解决建议汇总
  6. 计算机网络协议分析 第三课 PAP,CHAP,PPPoE
  7. JSONArray转字符串数组
  8. 设置密码复杂度、密码有效期,重新制作ISO,安装后登录系统必须重新修改密码
  9. HAWQ技术解析(十一) —— 数据管理
  10. 四、html字体样式,外观属性