乐鑫技术交流
直播中

刘玉兰

7年用户 964经验值
私信 关注
[问答]

使用ESP32的NVS-BLOB存储12000个字节数据报错的原因?

使用ESP32的NVS-BLOB存储12000个字节数据,每次完全擦除flash后编程写第一次都没问题,但之后再写就报错误ESP_ERR_NVS_NOT_ENOUGH_SPACE (0x1105): There is not enough space in the underlying storage to save the value
但每次读出都问题,数量也对,重新上电也不行,请问这是什么原因呢?使用的是IDF4.3稳定版本
                       

回帖(1)

刘丰标

2024-6-21 16:50:53
根据您提供的信息,您在使用ESP32的NVS-BLOB存储12000个字节数据时遇到了问题。错误代码为ESP_ERR_NVS_NOT_ENOUGH_SPACE (0x1105),表示底层存储空间不足。以下是一些可能的原因和解决方案:

1. **NVS分区大小不足**:请检查您的NVS分区大小是否足够存储12000字节的数据。如果分区大小不足,您需要增加分区大小。在`menuconfig`中,您可以找到`Partition Table`设置,然后调整NVS分区的大小。

2. **数据碎片**:在多次写入和删除操作后,NVS存储可能会出现数据碎片,导致实际可用空间减少。您可以尝试以下方法来解决这个问题:
   - 使用`nvs_flash_erase()`函数完全擦除NVS存储,然后重新写入数据。
   - 使用`nvs_flash_init()`函数初始化NVS存储,它会自动清理无效的键。

3. **写入操作未成功完成**:请确保每次写入操作都成功完成。您可以在写入操作后检查返回值,如果返回值不是ESP_OK,则表示写入失败。此时,您需要找出写入失败的原因并解决。

4. **ESP-IDF版本问题**:您提到使用的是ESP-IDF 4.3稳定版本。尽管这是一个稳定版本,但可能仍然存在一些已知或未知的问题。您可以尝试升级到最新版本的ESP-IDF,看看问题是否得到解决。

5. **代码问题**:请检查您的代码,确保在使用NVS-BLOB存储时遵循了正确的步骤和API调用。例如,确保在写入数据之前正确地打开了NVS处理程序,使用正确的键名,以及在写入完成后正确地关闭了NVS处理程序。

综上所述,您可以尝试调整NVS分区大小、清理数据碎片、确保写入操作成功、升级ESP-IDF版本以及检查代码。希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分