13-ESP32 NVS BLOB类型存储

本文详细介绍了ESP32-S3的NVS库中BLOB数据类型的使用,包括BLOB的概念、存储过程(nvs_set_blob)、检索方法(nvs_get_blob),以及与FAT文件系统的比较。适合初学者了解NVS在处理大容量二进制数据的应用。
摘要由CSDN通过智能技术生成

ESP32-S3的非易失性存储(NVS)BLOB类型存储 📚

在ESP32-S3的非易失性存储(NVS)库中,BLOB(Binary Large OBject,二进制大对象)是一种特殊的数据类型,用于存储可变长度的二进制数据。💾

什么是BLOB? 🤔

BLOB是一种用于存储二进制数据的数据类型。与其他数据类型(如整数和字符串)不同,BLOB可以存储💾可变长度的数据,这使得它非常适合存储诸如图像、音频或任何其他类型的大型数据。🎵🖼️

在ESP32-S3的NVS库中,BLOB值的上限为508,000字节或分区大小的97.6%减去4000字节,以较小的值为准。虽然NVS最适合存储许多小值,但是如果需要存储大的BLOB或字符串,可以考虑使用基于磨损均衡库的FAT文件系统。

如何在NVS中存储BLOB? 📝

在NVS中存储BLOB的过程与存储其他数据类型的过程类似。✨首先,你需要打开一个NVS句柄,然后使用nvs_set_blob()函数将数据写入NVS。最后,🔮别忘了调用nvs_commit()函数来确保更改被写入闪存。💫

// 定义BLOB数据
int count = 0;
const int max_ip=2;
typedef struct{
    char ssid[50];
    char password[50];
}  ap_t;

ap_t aps_set[max_ip];	//存储数据的容器

// 初始化BLOB数据
for(int i=0;i<max_ip;i++){
     strcpy(aps_set[i].ssid,"bilibili");
     strcpy(aps_set[i].password,"1234567");
 }
 
// 存储BLOB数据
nvs_handle_t WIFI_ID_handle;
esp_err_t err = nvs_open("WIFI_ID", NVS_READWRITE, &WIFI_ID_handle);
if (err == ESP_OK) {
    err = nvs_set_blob(WIFI_ID_handle,"aps",aps_set,sizeof aps_set);
    if (err == ESP_OK) {
        err = nvs_commit(WIFI_ID_handle);
    }
    nvs_close(WIFI_ID_handle);
}

如何从NVS中检索BLOB? 🔍

从NVS中检索BLOB的过程也与检索其他数据类型的过程类似。首先,你需要打开一个NVS句柄,然后使用nvs_get_blob()函数从NVS中读取数据。最后,别忘了关闭NVS句柄。🔐

// 检索BLOB数据
nvs_handle_t WIFI_ID_handle;
esp_err_t err = nvs_open("WIFI_ID", NVS_READWRITE, &WIFI_ID_handle);
if (err == ESP_OK) {
    ap_t aps_get[max_ip];
    size_t length=sizeof aps_get;
    err = nvs_get_blob(WIFI_ID_handle, "aps", aps_get, &required_size);
    if(err == ESP_OK){
    	//处理数据
    	for(int i=0;i<max_ip;i++){
        	ESP_LOGE("nvs","ssid:password %s:%s",aps_set[i].ssid,aps_set[i].password);
   	 	}
	}
	
    nvs_close(WIFI_ID_handle);	//关闭当前名称空间
    nvs_flash_deinit();	//关闭NVS
}

总结😉

这篇博客讲解了很多关于ESP32-S3的NVS和BLOB的知识。希望你觉得这个旅程既有趣又有益!🎉

有关更多的内容,推荐你看看乐鑫官方的文档,我也是通过阅读文档来学习的,乐鑫的官方文档提供了大量有关ESP32-S3和NVS等主题的详细信息,我相信这对其他正在学习你也会很有帮助的!😊

✨乐鑫的官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁子希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值