ESP32-P4 + 7" MIPI 1024×600 触摸屏虚拟宠物。
my-pet/
├── firmware/ 板子工程(ESP-IDF v5.5.x,从 02_lvgl_transplant 复制改造)
├── simulator/ PC 模拟器(CMake + SDL2 + LVGL 8.4 via submodules)
└── shared/ 平台无关业务代码(两边都用,不许 #include ESP-IDF 头)
| 主题 | 选择 | 备注 |
|---|---|---|
| GUI 库 | LVGL 8.4(不要 9.x) | 厂家例程锁的版本,9.x API 完全不兼容 |
| 屏幕分辨率 | 1024×600 | 模拟器 simulator/lv_drv_conf.h 已对齐 |
| 宠物形象动画 | PNG 序列帧 + LVGL 原生(首选) | 模拟器+板子代码一致;性能不够再升级 |
| 备选动画方案 | EAF (esp_emote_gfx) |
性能最佳但模拟器无法预览,谨慎 |
| 备选视频方案 | MJPEG/AVI | 适合长视频/cutscene,参考 25_video_player |
| 日志 | shared/pet_log.h |
PC 走 printf,板子走 ESP_LOG |
| 定时器 | lv_timer_create() |
LVGL 自带,跨平台一致,不要用 esp_timer/SDL_AddTimer |
| 外设 | 引脚 |
|---|---|
| MIPI LCD 背光 | GPIO23 |
| MIPI LCD 复位 | GPIO22 |
| 触摸 INT | GPIO15 |
| 触摸 RST | GPIO18 |
| I2C SDA / SCL(触摸用) | GPIO17 / GPIO16 |
| LED0 / LED1 | GPIO14 / GPIO13 |
| ES8311 音频 (I2S BCK/WS/DO/DI/MCK) | IO4/6/3/5/2 |
| SD 卡 SDIO (CMD/CLK/D0~D3) | IO44/43/39/40/41/42 |
详细见 firmware/components/BSP/*/ 头文件,以及 D:\Projects\esp-p4\慧勤智远 ESP32-P4 CB V1.2小系统板\2. 原理图\ESP32-P4 CB V1.2_SCH.pdf。
这些是慧勤智远厂家给的官方例程,已解压到
D:\Projects\esp-p4-work\(不在本仓库内)。当我们需要参考具体外设/特性怎么用时,按下面索引去翻:
D:\Projects\esp-p4-work\LVGL_MIPILCD\02_lvgl_transplant\← 本仓库 firmware/ 就是从它复制改造的01_lvgl_official_transplant是另一个等价工程(结构稍乱,已弃用)
D:\Projects\esp-p4-work\LVGL_MIPILCD\ 下:
06_lvgl_arc圆弧(适合做心情/饥饿值环形进度)07_lvgl_bar进度条08_lvgl_btn按钮13_lvgl_img图片显示 ← PNG 序列帧动画用这个14_lvgl_label文字17_lvgl_slider滑块18_lvgl_switch开关- 其它见目录列表,每个例程的
main/APP/lvgl_demo.c是核心 demo 代码
- PNG 序列帧(首选):LVGL 原生
lv_img_set_src+lv_timer_create切帧,无需第三方组件 - EAF 动画格式:
- 组件位置:
D:\Projects\esp-p4-work\wks_p4_xiaozhi_50inch_70inch_80inch_101inch_mipilcd\managed_components\espressif2022__esp_emote_gfx\ - README:同目录下
README.md(API 完整文档) - 示例 .eaf 文件:同组件
emoji_large/、emoji_small/ - 在线转换工具:https://esp32-gif.espressif.com/(输入 GIF)
- 在 firmware 中使用:
#include "gfx.h",调gfx_anim_create / gfx_anim_set_src / gfx_anim_set_segment / gfx_anim_start - 注意:EAF 不是 LVGL 体系,是独立的 esp_emote_gfx 框架
- 组件位置:
- MJPEG/AVI 视频:参考
D:\Projects\esp-p4-work\basic__routines\25_video_player\,含 AVI 解析 + MJPEG 解码 + 同步音频 - H.264 硬件解码:参考
17_mipicamera、22_photograph,managed_components 下有espressif__esp_h264
| 需要做的事 | 看哪里 |
|---|---|
| SD 卡读写 | basic__routines/18_sdcard |
| SPIFFS 文件系统 | basic__routines/19_spiffs |
| 中文字库显示 | basic__routines/20_chinese_display |
| 图片显示(JPEG/PNG) | basic__routines/21_picture_display |
| 音乐播放(ES8311 codec) | basic__routines/23_music |
| 录音 | basic__routines/24_recoding |
| WiFi 联网 | wifi__routines/ 整个目录 |
| 全外设综合 demo | comprehensive_routine_70inch_mipilcd/(7 寸版) |
- 用户手册:
D:\Projects\esp-p4\慧勤智远 ESP32-P4 CB V1.2小系统板\1. 用户手册\ - 原理图:
同上\2. 原理图\ - 芯片 datasheet:
同上\5. 芯片资料\ - 屏幕模块(EK79007 + GT911)资料:
D:\Projects\esp-p4\WKS70WSV114-WCT产品资料\ - CH343 USB 串口驱动:
同上\7. 软件开发工具\CH343驱动.rar(板子到了再装)
依赖:MSYS2 MinGW64 已装 gcc cmake ninja SDL2 pkgconf git
# MSYS2 MinGW x64 终端
cd /d/Projects/my-pet/simulator
cmake -G Ninja -B build # 首次或改了 CMakeLists
cmake --build build # 增量编译
./bin/main.exe # 运行修代码循环:编辑 shared/*.c → cmake --build build → ./bin/main.exe
依赖:ESP-IDF v5.5.x,已装在 C:\.espressif\v5.5.4\,从开始菜单 ESP-IDF 5.5.4 PowerShell 启动
cd D:\Projects\my-pet\firmware
idf.py set-target esp32p4 # 首次(sdkconfig 里其实已写)
idf.py build
idf.py -p COMx flash monitor # COMx 见设备管理器(需先装 CH343 驱动)注意:firmware 工程路径必须全英文无空格(IDF 工具链限制)。
shared/ 里的代码必须只依赖标准 C + LVGL。不能 #include "freertos/..."、"esp_log.h"、"esp_timer.h" 等。需要平台相关功能时新增抽象层(见 pet_log.h 模式)。
- 远程:https://github.com/SoberPizza/my-pet
- 默认分支:main
- LVGL 与 lv_drivers 是 simulator/ 下的 git submodule,clone 后
git submodule update --init --recursive