Dzbj_ESP32-C3/项目对比分析报告.md
Rdzleo 4547e9e732 适配ESP32-C3开发板成功
1、原有ESP32-S3功能基本实现,有些小Bug需要修复;
2、RAM内存不够导致Img界面图片显示画质不完整,并且当前未开启蓝牙功能,开机蓝牙功能后RAM内存压力加剧;
2026-02-12 15:45:36 +08:00

80 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

一、全尺寸图片 + BLE 同时运行需要多少 SRAM
逐项计算:
内存需求 大小 说明
JPEG 输入缓冲 ~50 KB 从 SPIFFS 读取压缩文件
JPEG 输出缓冲 253 KB 360×360×2 RGB565必须连续
JPEG 解码工作区 ~3 KB TjpgDec scratchpad
LVGL .bss 静态 ~50 KB 对象池、样式缓存等
LVGL 帧缓冲 ~21 KB 360×30×2 行缓冲
FreeRTOS 核心 ~15 KB idle + timer + main 任务栈
SPI 驱动 + DMA ~12 KB LCD SPI 传输
SPIFFS + VFS ~10 KB 文件系统缓存
I2C + 触摸驱动 ~5 KB CST816S
BLE 协议栈 ~70-80 KB Bluedroid GATTS + controller
BLE 图片接收缓冲 ~10 KB 分包接收临时缓冲
系统杂项 ~20 KB HAL/heap管理/日志/NVS等
总计 ~520-530 KB 峰值BLE接收+解码同时)
如果 BLE 和图片显示分时复用(先关 BLE 再解码):
场景 峰值 SRAM
仅显示图片(无 BLE ~440 KB
仅 BLE 接收(无图片解码) ~270 KB
推荐安全余量 +20% ≈ 530 KB
结论:需要至少 ~450KB 可用堆内存,推荐 512KB+ SRAM 或带 PSRAM 的方案。
二、ESP32 各型号对比
ESP32-C 系列RISC-V 单核,低成本低功耗路线)
型号 SRAM PSRAM 支持 能否满足需求 参考价格(模组)
ESP32-C3 (当前) 400 KB 不支持 不能 (堆249KB < 253KB输出缓冲) ~¥8-12
ESP32-C6 512 KB 支持外部 SPI RAM 勉强可以无PSRAM时堆~350KB仍紧张 ~¥12-18
ESP32-C5 320 KB 待确认 不能 尚未量产
ESP32-S 系列Xtensa 双核高性能路线
型号 SRAM PSRAM 能否满足需求 参考价格(模组)
ESP32-S3-N4 512 KB 勉强分时复用可行 ~¥15-20
ESP32-S3-N4R2 512 KB 2 MB (Quad SPI) 完全满足 ~¥18-22
ESP32-S3-N8R8 512 KB 8 MB (Octal SPI) 完全满足富裕 ~¥22-28
ESP32-S3-N16R8 512 KB 8 MB (Octal SPI) 完全满足 ~¥25-32
综合推荐
最佳性价比推荐ESP32-S3-WROOM-1-N4R2
理由
内存充裕512KB SRAM + 2MB PSRAM
JPEG 输出缓冲(253KB) PSRAM SRAM 零压力
BLE + 图片显示可同时运行不需要分时复用
heap_caps_malloc(size, MALLOC_CAP_SPIRAM) 一行代码搞定
与当前项目兼容性最高
ESP-IDF v5.4 完全支持
SPI LCD 驱动代码基本不变ST77916 驱动已适配
I2C 触摸驱动完全不变
LVGL 代码完全不变
BLE 代码完全不变Bluedroid API 通用
原项目就是从 ESP32-S3 适配来的回迁难度最低
性价比
模组单价 ~¥18-22淘宝散件
N4 只贵 ¥3-5但多了 2MB PSRAM
2MB PSRAM 对这个项目绰绰有余只需 253KB
不需要 N8R8
8MB PSRAM 对这个项目严重过剩
Octal SPI PSRAM 会多占用 GPIO虽然 S3 GPIO 充裕
价格高 ¥5-10没必要
如果必须留在 C 系列ESP32-C6 + 外部 PSRAM
ESP32-C6 支持外部 SPI RAM但需要额外的 PSRAM 芯片
增加 BOM 成本和 PCB 复杂度
生态不如 S3 成熟
不推荐总成本可能比 S3 模组还高
迁移工作量评估
迁移项 难度 说明
GPIO 引脚重映射 gpio.h 中的宏定义
SPI LCD 驱动 无需改 esp_lcd + ST77916 驱动通用
I2C 触摸 无需改 CST816S 驱动通用
LVGL 无需改 esp_lvgl_port 通用
JPEG 解码 1 去掉 JPEG_IMAGE_SCALE_1_2去掉 lv_img_set_zoom(512)
PSRAM 图片缓冲 1 malloc() heap_caps_malloc(size, MALLOC_CAP_SPIRAM)
BLE Bluedroid API 通用可能需调整 controller 配置
sdkconfig idf.py set-target esp32s3 后重新配置
总结ESP32-S3-N4R2 是当前项目升级的最优选择迁移成本极低核心代码几乎不变只需改 2-3 行代码就能实现全尺寸无损图片显示 + BLE 同时运行