1、平台基础

1、软件:esp-idf-v3.1.3
2、硬件:ESP32
3、官方链接:
3.1 :链接1
3.2 :下载2 链接3

2、如何使用

2.1 csv flash分区表,分区情况

esp32flash相当于一张表,可以官方定好的格式,去定义自己想要的nvs的大小
格式:# Name, Type, SubType, Offset, Size, Flags
两个ota可以设置一样大小总共 大小为4M

# Name,   Type, SubType, Offset,   Size, Flags
# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild
nvs,      data, nvs,     ,        0x4000,
otadata,  data, ota,     ,        0x2000,
phy_init, data, phy,     ,        0x1000,
factory,  app,  factory, ,        0x140000,
ota_0,    app,  ota_0,   ,        0x140000,
ota_1,    app,  ota_1,   ,        0x140000,
user_save,data,nvs,     ,         8k,  // 用户用数据

2.2 .h文件

用户需要保存的数据放在自己定义好的 结构体中,需要保存的就放在里面进行保存

#define in_flash_data_h_#include <stdio.h>
#include <string.h>typedef struct
{uint8_t ble_adv_name[30];uint8_t compay_name[30];  // s
} STU_USER;extern STU_USER user_para;void user_read_flash(void);
void delay_ms(uint32_t set_ms);void task_write_user_data(void);
#endif

2.3 .c文件

主要函数有 读函数、写函数,


#include <assert.h>
#include "esp_partition.h"
#include "esp_log.h"#include "in_flash_data.h"#include "esp_system.h"#include "freertos/FreeRTOS.h"
#include "freertos/task.h"static const char *TAG = "user_flash";// 用户数据------------------------
STU_USER user_para;
static uint8_t save_user_data_enbale =0;// 读取flash 数据----------
void user_read_flash(void)
{// Find the partition map in the partition tableconst esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "user_save");assert(partition != NULL);static uint8_t read_data[sizeof(STU_USER)+2]; memset(read_data, 0xFF, sizeof(read_data));uint8_t  err =0xff;// 1: read 读函数err=esp_partition_read(partition, 0, read_data, sizeof(read_data));if(err!=0){ESP_LOGI(TAG, "user  flash read ----1111%d",err);}// 2:读取存入数据头部----为了判断是否曾写过flashif((read_data[0]==0xAA)&&(read_data[1]==0xAA)){      esp_log_buffer_hex(TAG, read_data,sizeof(read_data));memcpy(user_para.ble_adv_name,read_data+2,sizeof(read_data)-2);}else{// save_user_data_enbale =1;memcpy(user_para.ble_adv_name,"MK113",strlen("Snifx"));memcpy(user_para.compay_name,"MOKO TECHNOLOGY LTD.",strlen("MOKO TECHNOLOGY LTD."));}}/*********************************/
// 写函数 可以直接放在任务中
void task_write_user_data(void)
{uint8_t save_head[2]={0xAA,0XAA};uint8_t buf[sizeof(STU_USER)];uint8_t err=0xff;if(save_user_data_enbale==0) return;save_user_data_enbale =0;//  step 1: 寻找用户flash idconst esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA,        ESP_PARTITION_SUBTYPE_ANY, "user_save");// assert(partition != NULL);// step 2: 擦除flasherr=esp_partition_erase_range(partition, 0, partition->size);if(err!=0){ESP_LOGI(TAG, "user  flash erase range ----%d",err);}// step 3:获得需要保存的用户数据memcpy(buf,user_para.ble_adv_name,sizeof(STU_USER));// step 4:write save head  写flash函数,先写入头部,为了表明曾写过flasherr = esp_partition_write(partition, 0,save_head,sizeof(save_head));if(err!=0){ESP_LOGI(TAG, "user  flash write header ----1111%d",err);}err = esp_partition_write(partition, 2,buf,sizeof(STU_USER));if(err!=0){ESP_LOGI(TAG, "user  flash write datas ----2222%d",err);}ESP_LOGI(TAG, "user  flash write");}void delay_ms(uint32_t set_ms)
{vTaskDelay(set_ms / portTICK_PERIOD_MS);
}

可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步

ESP32笔记(2) flash使用相关推荐

  1. esp32使用内部flash创建文件系统

    文章目录 ESP32使用内部flash创建文件系统 声明 简介 参考资料 环境 硬件 步骤 修改flash大小 查看硬件flash大小 复制工程 修改flash大小 添加分区表 复制分区表 修改分区表 ...

  2. STM32学习笔记:FLASH读写之二

    因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分 1.RAM和ROM的一些基本概念 -- STM32学习笔记:FLASH读写之一 2.STM32的Flash寄存器 ...

  3. STM32学习笔记:FLASH读写之一

    因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分 1.RAM和ROM的一些基本概念 -- STM32学习笔记:FLASH读写之一 2.STM32的Flash寄存器 ...

  4. 如何给 ESP32 选择外接 Flash 以及如何使能 QIO 模式

    [前言] 许多用户在使用 ESP32 做开发的时候,都会碰到如何选择外接 Flash 的难题,因为不同厂商的 Flash 存在很多差异,Flash 支持的工作模式也不同. [如何给 ESP32 选择外 ...

  5. [006] [ESP32开发笔记] 使用Flash下载工具烧录固件步骤

    Flash下载工具链接 最终配置如下图所示,下面开始分步说明. 选择开发型号 SPI配置与Menuconfig中配置一致: 分区表(partition-table)地址查看: bootloader与p ...

  6. Arduino方式开发ESP32笔记:使用Preferences保存数据

    本文大部分参考使用Arduino开发ESP32(18):使用Preferences保存数据 引出 在其他单片机上我们可以使用单片机自带Flash来保存一些数据,在ESP32上也可以这样,在ESP32的 ...

  7. qcc300x笔记之flash分区(二)

    qcc300x默认是使用32M flash(bits)的,但是根据实际的项目需求,考虑成本的问题,会使用较小的flash,所以默认的分区将不适合,所以我们需要重新分区,默认分区如下图 如果分区不匹配, ...

  8. [Flash开发笔记] 关于Flash中的ASO文件

    今天发生这样一件"奇怪"的事情: 因为某种原因,我将系统日期改早了一个月时间,之后我编译过一次Flash程序(Flash程序中有很多的as2.0的类). 后来我将系统时间改回正常时 ...

  9. esp32 s3 外部flash和外部psram配置

    1. 标准spi 主从都在自己的数据线上发送/接收数据,主机如果需要接收数据,则需要单独发一段数据才能触发从机应答,从而接收从机数据 CPOL 时钟极性 CPOL =0 表示时钟空闲为低电平,下降沿采 ...

  10. SOPC教学笔记04——Flash固化

    FLASH固化 学习Flash固化的方法,掌握NiosII应用程序固化到开发板上EPCS配置芯片中的方法.Flash固化可以实现开发板掉电后可以从EPCS配置芯片启动应用程序. 一.为什么要学习Fla ...

最新文章

  1. DeepMind新语言模型SUNDAE:教自动编码器学会「自我纠正」,WMT14英德互译任务获SOTA...
  2. 手机zip模拟器_车祸现场模拟器简体中文免安装版 6.4G
  3. 【开发工具】SCALA
  4. 深度学习用于图片的分类和检测总结
  5. Java入门超简单程序Song List
  6. matlab 获取系统时间now,date
  7. 报表性能优化方案之多数据集实现层式报表
  8. 旺旺怎么去服务器接收文件夹,xp系统下找到阿里旺旺安装路径文件夹的方法
  9. Electron桌面下雪特效实战文字版(附视频链接)
  10. 学5G网络优化,就业前景好?薪资高?
  11. Linux编辑器-gcc/g++使用
  12. 笑破肚皮!考驾照现场的爆笑故事!
  13. LNMP架构的搭建——源码编译(PHP,nginx,Mysql)
  14. HDFS原理 | 一文读懂HDFS架构与设计
  15. 5G NR - RACH学习笔记1 - Overview
  16. 专利申请人挂名的有用吗
  17. 在github开源代码添加MIT
  18. pacemaker浅析
  19. 以机器人为核心的无人仓库解决方案和技术探讨
  20. 开学后的认识与计划,目标

热门文章

  1. 2012年8月至今读书列表 --- 持续更新
  2. Air720x(3229)系列4G模块设计手册
  3. web简单静态页面设计【HTML+CSS】
  4. H264三种码率控制方法(CBR, VBR, CVBR)
  5. 【复杂网络】最清晰最准确理解什么是“结构洞(Structural Hole)”?
  6. matlab已知上三角实现对角矩阵,MATLAB及其应用考试卷B卷2010-2011
  7. centos7 thinkpad trackpoint 中键滚动 关闭粘贴 配置
  8. CAN报错BUSLIGHT,BUSHEVAY,BUSOFF什么意思
  9. python实现分层随机抽样算法_python分层随机抽样
  10. Aria2 YAAW 使用说明