You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32 WROVER闪存空间不足,无法拍摄高分辨率照片如何解决?

解决ESP32 WROVER拍摄高分辨率照片内存不足问题

首先要明确一个关键误解:你看到的Flash(闪存)占用情况和相机拍摄时的内存不足无关。相机的帧缓存(用来临时存储拍摄的照片)使用的是芯片的SRAM或PSRAM,不是Flash闪存。ESP32 WROVER模块自带8MB的PSRAM(伪静态随机存储器),这正是解决你问题的核心,只是你的代码和开发环境没启用它。

以下是具体解决步骤,无需更换开发板:

1. 在Arduino IDE中启用PSRAM支持

  • 确保你的开发板选择的是ESP32 WROVER Module(不要选普通的ESP32 Dev Module)
  • 打开顶部菜单「工具」→「PSRAM」,选择「Enabled」
  • 同时检查「Flash Size」选项,选择「4MB (32Mb)」以匹配硬件标称参数

2. 修改相机配置代码,指定使用PSRAM存储帧缓存

在相机配置代码中添加强制帧缓存使用PSRAM的配置,保留原有高分辨率参数即可:

camera_config_t config;

// 保留你原来的所有引脚、时钟、格式配置

config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = FRAMESIZE_UXGA; // 保留高分辨率需求
config.jpeg_quality = 10; // 可按需调整,数值越低压缩率越高、文件越小
config.fb_count = 2; // 双帧缓存提升拍摄响应速度
config.fb_location = CAMERA_FB_IN_PSRAM; // 关键:将帧缓存放到PSRAM中

esp_err_t cameraInitError = esp_camera_init(&config);

3. 可选:优化Flash分区(针对后续文件存储需求)

你当前看到的Flash可用空间仅1.3MB,是因为默认分区方案给APP分配的空间较小。如果后续需要将照片存储到Flash的SPIFFS/LittleFS分区:

  • 打开「工具」→「Partition Scheme」,选择「4MB Flash (3MB APP/1MB SPIFFS)」
  • 重新上传固件后,就能获得1MB的可读写存储分区,用于保存照片或配置文件

验证效果

修改完成并重新上传固件后,ESP32会将高分辨率照片的帧缓存放到8MB的PSRAM中,完全满足1MB左右的照片存储需求,不会再出现内存不足的报错。

内容的提问来源于stack exchange,提问作者Micheli Barcello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:07:08