mirror of
https://git.beihong.wang/wangbeihong/iot-bedroom-environment-controller.git
synced 2026-04-23 17:43:04 +08:00
lvgl_st7789_use 组件说明
lvgl_st7789_use 是项目中的 LCD 显示组件,基于 esp_lcd + esp_lvgl_port,用于快速驱动 ST7789 SPI 屏并显示 LVGL 界面。
功能概览
- 初始化 SPI LCD(含背光、面板、显示偏移)
- 初始化 LVGL 端口并注册显示设备
- 默认创建一个居中标签用于快速验证显示链路
- 提供运行时更新中心文本接口
- 支持可配置方向、镜像与偏移
- 支持可选三色测试图(调试用)
对外 API
头文件:include/lvgl_st7789_use.h
-
esp_err_t start_lvgl_demo(void);- 完成 LCD + LVGL 初始化并创建默认界面
-
esp_err_t lvgl_st7789_set_center_text(const char *text);- 运行时更新中心标签文字(线程安全,内部已加锁)
关键配置项(可直接改宏)
在 include/lvgl_st7789_use.h 中:
1) 屏幕与 SPI
EXAMPLE_LCD_H_RES/EXAMPLE_LCD_V_RESEXAMPLE_LCD_PIXEL_CLK_HZEXAMPLE_LCD_SPI_NUMEXAMPLE_LCD_CMD_BITS/EXAMPLE_LCD_PARAM_BITS
建议:ST7789 默认可先用 20MHz,如出现花屏或不稳定再降到 10MHz 复测。
2) 颜色校准(重点)
EXAMPLE_LCD_COLOR_ORDER_BGREXAMPLE_LCD_INVERT_COLOREXAMPLE_LCD_SWAP_BYTES
说明:
- 出现“黑色发灰、红绿蓝偏紫/互串”时,优先调整这三项。
- 建议从
RGB + 不反色 + 不交换字节起步,再逐项切换。
3) 方向与偏移(重点)
EXAMPLE_LCD_GAP_XEXAMPLE_LCD_GAP_YEXAMPLE_LCD_ROT_SWAP_XYEXAMPLE_LCD_ROT_MIRROR_XEXAMPLE_LCD_ROT_MIRROR_Y
说明:
- 若出现“文字偏移/边缘花屏/方向反了”,优先微调上述宏,不要同时在多层重复旋转。
4) 调试项
EXAMPLE_LCD_ENABLE_COLOR_TEST1:上电先画 RGB 三色测试图(便于确认硬件链路)0:跳过测试,直接进入 LVGL
在主程序中调用
#include "esp_check.h"
#include "lvgl_st7789_use.h"
void app_main(void)
{
ESP_ERROR_CHECK(start_lvgl_demo());
ESP_ERROR_CHECK(lvgl_st7789_set_center_text("BotanicalBuddy"));
}
常见问题
1) 背光亮但没有内容
优先排查:
- 面板型号与驱动是否匹配(当前应为 ST7789)
- SPI 模式、时钟是否过高
- 方向/偏移参数是否正确
2) 文字方向反了或显示偏移
优先调整:
EXAMPLE_LCD_ROT_*EXAMPLE_LCD_GAP_X / EXAMPLE_LCD_GAP_Y
3) 想快速确认硬件链路是否通
把 EXAMPLE_LCD_ENABLE_COLOR_TEST 设为 1,观察是否能显示三色图。
依赖
由组件 CMakeLists.txt 声明:
driveresp_lcdesp_lvgl_port