# esp32s3_co5300 **Repository Path**: panzi/esp32s3_co5300 ## Basic Information - **Project Name**: esp32s3_co5300 - **Description**: No description available - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-09 - **Last Updated**: 2026-02-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ESP32-S3 AMOLED 2.06英寸 CO5300 触摸显示项目 ## 📋 更新日志 ### [2025-07-11] - 🚀 LVGL FPS显示与性能优化 **讨论主题**: 开启LVGL FPS显示功能,优化触摸滑动性能,解决看门狗超时问题 **主要功能**: - ✅ **FPS监控**: 启用LVGL性能监控,实时显示FPS和CPU使用率 - ✅ **40FPS目标**: 优化刷新频率到40FPS (25ms周期) - ✅ **触摸优化**: 解决触摸滑动时FPS降至4.5帧的问题 - ✅ **稳定性平衡**: 修复看门狗超时,平衡性能与稳定性 **代码修改**: - 修改: main/main.c - 启用lv_sysmon_show_performance()性能监控 - 修改: main/main.c - LVGL配置优化到40FPS (timer_period_ms = 25) - 修改: main/main.c - 调整任务优先级和缓冲区大小 - 修改: sdkconfig - 启用CONFIG_LV_USE_SYSMON和CONFIG_LV_USE_PERF_MONITOR - 修改: sdkconfig - 设置FPS显示位置为右上角 - 新增: #include "others/sysmon/lv_sysmon.h" - 系统监控头文件 **技术配置**: - **刷新频率**: 40FPS (CONFIG_LV_DEF_REFR_PERIOD=25) - **显示缓冲区**: 60行缓冲区,平衡性能和内存使用 - **任务优先级**: 适中优先级(3),避免看门狗超时 - **FPS显示**: 屏幕右上角实时显示 - **堆栈配置**: LVGL主任务10KB,演示任务12KB **性能改进**: - 从触摸滑动4.5帧提升到接近40帧 - 避免看门狗超时,系统稳定运行 - CPU使用率和FPS实时监控 - 保持AMOLED偶数对齐和防撕裂特性 **影响范围**: 大幅提升触摸交互体验,提供实时性能监控,确保系统稳定性 **相关对话**: FPS监控、性能优化、看门狗超时修复、任务优先级调整 --- ### [2025-01-07] - 🔥 CO5300 AMOLED偶数对齐优化实现 **讨论主题**: 解决CO5300 AMOLED屏幕撕裂问题,实现偶数对齐优化 **代码修改**: - 修复: main/main.c - 添加AMOLED偶数对齐rounder事件回调函数 - 修复: main/main.c - 解决ESP-IDF组件管理器依赖下载问题 - 新增: main/CMakeLists.txt - 创建缺失的main组件构建文件 - 修复: managed_components/ - 手动下载并配置所有7个必需组件 - 配置: 显示缓冲区调整为50行,确保偶数对齐优化 **技术决策**: - 选择LVGL 9.x事件系统实现rounder回调,替代已废弃的lv_disp_drv_t.rounder_cb - 使用LV_EVENT_INVALIDATE_AREA事件捕获区域刷新,实现偶数对齐逻辑 - 通过双缓冲 + 偶数对齐 + RGB565格式的组合方案解决屏幕撕裂 - 手动管理ESP-IDF组件依赖,解决组件管理器无法自动下载的问题 **影响范围**: 完全解决了CO5300 AMOLED屏幕撕裂问题,提升显示质量和用户体验。 **相关对话**: CO5300偶数对齐、屏幕撕裂、LVGL 9.x API适配、ESP-IDF组件管理 --- ## 📋 项目概述 这是一个基于ESP32-S3的AMOLED触摸显示项目,使用2.06英寸CO5300驱动的AMOLED屏幕,集成CST9217电容触摸控制器,搭载LVGL 9.2.2图形库,提供流畅的触摸交互体验。 ## 🔧 硬件配置 ### 显示屏规格 - **尺寸**: 2.06英寸 AMOLED - **分辨率**: 410×502 像素 - **驱动芯片**: CO5300 - **接口**: QSPI (4线SPI) - **颜色格式**: RGB565 (16位色深) - **背光**: AMOLED自发光,无需背光控制 ### 触摸屏规格 - **触摸控制器**: CST9217 - **接口**: I2C - **多点触控**: 支持最多5点触控 - **工作模式**: 轮询模式 - **触摸分辨率**: 340*340 ### 引脚定义 #### 显示屏引脚 (QSPI) | 功能 | ESP32-S3 引脚 | 描述 | |------|---------------|------| | CS | GPIO12 | 片选信号 | | SCL | GPIO17 | 时钟信号 | | SDA | GPIO18 | 数据信号 | | RST | GPIO13 | 复位信号 | #### 触摸屏引脚 (I2C) | 功能 | ESP32-S3 引脚 | 描述 | |------|---------------|------| | SDA | GPIO10 | I2C数据线 | | SCL | GPIO9 | I2C时钟线 | | INT | 未使用 | 中断引脚(轮询模式) | | RST | 未使用 | 复位引脚 | ## 🚀 软件特性 ### LVGL图形库 - **版本**: LVGL 9.2.2 - **演示**: lv_demo_widgets (包含多种UI控件演示) - **触摸支持**: 完整的触摸交互支持 - **动画**: 流畅的动画效果 ### 性能优化 - **双缓冲**: 避免屏幕撕裂,提升显示效果 - **PSRAM缓冲**: 使用外部PSRAM,支持更大缓冲区 - **增量刷新**: 只刷新变化区域,提升性能 - **60行缓冲区**: 平衡性能和内存使用,确保稳定性 - **优化的LVGL配置**: - 主任务优先级: 3 (平衡性能和稳定性) - 主任务堆栈: 10KB - 演示任务堆栈: 12KB - 定时器周期: 25ms (40FPS) - **FPS监控**: 实时显示CPU使用率和帧率 ### 实时监控 - **详细日志**: 完整的初始化和运行日志 - **PSRAM使用**: 优化内存分配,支持更大缓冲区 - **FPS性能监控**: - 实时显示在屏幕右上角 - 显示当前FPS和CPU使用率 - 帮助识别性能瓶颈 - 触摸滑动性能优化验证 ## 📦 依赖组件 ### ESP-IDF组件 ```yaml dependencies: espressif/esp_lvgl_port: "^2.6.0" espressif/esp_lcd_touch: "^1.1.2" kodediy/esp_lcd_co5300: "^1.0.0" waveshare/esp_lcd_touch_cst9217: "^1.0.1" lvgl/lvgl: "9.2.2" ``` ### 主要库版本 - **ESP-IDF**: v5.1+ - **LVGL**: 9.2.2 - **ESP LVGL Port**: 2.6.0 - **CO5300驱动**: 1.0.0 - **CST9217触摸驱动**: 1.0.1 ## 🛠️ 编译和烧录 ### 环境要求 1. 安装ESP-IDF v5.1或更高版本 2. 配置ESP-IDF环境变量 ### 编译步骤 ```bash # 1. 克隆项目 git clone cd Amoled_2.06in_Co5300 # 2. 设置目标芯片 idf.py set-target esp32s3 # 3. 配置项目(可选) idf.py menuconfig # 4. 编译项目 idf.py build # 5. 烧录到设备 idf.py flash monitor ``` ### 关键配置项 在 `idf.py menuconfig` 中确认以下配置: - 目标芯片: ESP32-S3 - Flash大小: 根据实际硬件配置 - PSRAM: 根据硬件情况启用 ## 📊 性能指标 ### 显示性能 - **QSPI时钟频率**: 80MHz - **显示缓冲区**: 60行 (410×60×2字节) - 平衡性能和稳定性 - **PSRAM缓冲**: 启用外部PSRAM支持 - **颜色深度**: 16位 (RGB565) - **刷新方式**: 增量刷新 - **目标FPS**: 40 FPS (25ms周期) - **FPS监控**: 实时显示在屏幕右上角 - **触摸性能**: 解决滑动时FPS降低问题 ### 触摸性能 - **轮询频率**: 由ESP-LCD-Touch驱动自动管理 - **响应延迟**: <20ms - **触摸精度**: 410×502分辨率 - **支持手势**: 点击、拖拽、多点触控 ### 内存使用 - **显示缓冲区**: ~98KB (双缓冲,60行,PSRAM) - **LVGL主任务堆栈**: 10KB (内部RAM) - **演示任务堆栈**: 12KB (内部RAM) - **PSRAM占用**: 主要用于显示缓冲区 - **内存优化**: 平衡缓冲区大小,避免过度使用导致看门狗超时 ## 🔍 调试信息 ### 日志输出 程序运行时会输出详细的初始化和状态信息: ``` CO5300 AMOLED + LVGL + 触摸演示开始 屏幕分辨率: 410x502 QSPI最大时钟: 80 MHz LVGL版本: 9.2.2 ... LVGL性能统计: CPU=25%, FPS=45, 空闲内存=234567字节 ``` ### PSRAM优化 - **大缓冲区**: 100行缓冲区,减少刷新频率 - **内存分离**: 显示缓冲使用PSRAM,系统RAM用于其他任务 - **稳定性提升**: 更大缓冲区提供更稳定的显示性能 ## 🎯 功能演示 ### LVGL Widgets演示 项目启动后会自动运行LVGL的widgets演示,包含: - 按钮、滑块、进度条 - 图表、仪表盘 - 列表、下拉菜单 - 文本输入框 - 动画效果 ### 触摸交互 - 点击按钮响应 - 滑块拖拽操作 - 列表滚动 - 多点触控支持 - **性能优化**: 触摸滑动时保持接近40FPS性能 ### FPS性能监控 - **位置**: 屏幕右上角显示 - **信息**: 实时FPS + CPU使用率 - **格式**: "FPS:40 CPU:25%" - **用途**: 验证触摸性能优化效果 ## 🔧 故障排除 ### 常见问题 1. **显示异常/彩色噪点** - 检查QSPI连线 - 确认RGB字节序配置正确 - 验证电源供应稳定 2. **触摸无响应** - 检查I2C连线 (SDA=GPIO10, SCL=GPIO9) - 确认触摸驱动正确初始化 - 查看日志中的触摸状态信息 3. **性能问题** - 检查屏幕右上角的FPS监控显示 - 触摸滑动时FPS应保持在30-40范围 - 如果出现看门狗超时,降低任务优先级 - 调整显示缓冲区大小 (当前60行) - 检查timer_period_ms配置 (当前25ms) ### 调试技巧 - 启用详细日志输出 - 观察屏幕右上角的FPS实时监控 - 使用性能监控分析瓶颈 - 触摸滑动测试FPS性能 - 检查内存使用情况 - 验证硬件连接 - 监控看门狗超时警告 ## 📝 开发历史 ### [2024-12-30] - 项目优化和完善 **讨论主题**: ESP32-S3 AMOLED触摸显示项目的性能优化和文档完善 **代码修改**: - 修改: main.c - LVGL性能优化配置 - 修改: main.c - 增加显示缓冲区到40行 - 修改: main.c - 优化LVGL任务配置 - 新增: performance_monitor_task - 性能监控功能 - 新增: README.md - 完整项目文档 **技术决策**: - 选择40行缓冲区平衡性能和内存使用 - 使用轮询模式触摸确保稳定性 - 启用性能监控便于调试和优化 - 保持RGB565格式兼容DMA传输 **影响范围**: 提升整体显示性能和用户体验,完善项目文档便于维护和使用 **相关对话**: LVGL性能优化、触摸轮询模式配置、项目文档编写 --- ## 📄 许可证 本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。 ## 🤝 贡献 欢迎提交Issue和Pull Request来改进项目。 ## 📧 联系方式 如有问题或建议,请通过以下方式联系: - 提交GitHub Issue - 发送邮件至项目维护者 --- **注意**: 请确保硬件连接正确,使用合适的电源供应,避免因接线错误造成设备损坏。