问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ESP32 TFT液晶屏配置与屏幕旋转问题处理

创作时间:
作者:
@小白创作中心

ESP32 TFT液晶屏配置与屏幕旋转问题处理

引用
CSDN
1.
https://blog.csdn.net/HuangBJ200/article/details/136839216

本文主要介绍如何在ESP32上配置TFT液晶屏,包括硬件连接、软件配置以及屏幕旋转问题的解决方案。通过本文,读者可以了解如何使用TFT_eSPI库来驱动2.8寸TFT液晶屏,并解决显示颜色不正常和屏幕旋转不对齐的问题。

平台说明

硬件部分

  • 2.8寸TFT液晶屏,驱动为ST7789
  • 触摸屏,驱动为GT911
  • 主控:ESP32-S3-WROOM-1U

软件部分

  • 开发环境:VS code + platformIO + arduino
  • 图形库:LVGL
  • 驱动库:TFT_eSPI

相关配置

配置文件路径:.pio\libdeps\esp32-s3-devkitm-1\TFT_eSPI\User_Setup.h

1. 选择驱动型号:ST7789

#define ST7789_DRIVER

2. 选择屏幕尺寸大小:240*320

#define TFT_WIDTH  240
#define TFT_HEIGHT 320

3. 反色关闭,不关闭可能会出现显示颜色不正常

#define TFT_RGB_ORDER TFT_BGR
#define TFT_INVERSION_OFF

4. 配置硬件引脚IO,#define TOUCH_CS -1:关闭touch,不会调用touch函数

#define TFT_MISO 13
#define TFT_MOSI 11
#define TFT_SCLK 12
#define TFT_CS   10
#define TFT_DC    9
#define TFT_RST   8
#define TFT_BL   7
#define TOUCH_CS -1

5. #define TOUCH_CS -1,所以注释SPI_TOUCH_FREQUENCY

// #define SPI_TOUCH_FREQUENCY  2500000

屏幕旋转问题

现象

调用tft.setRotation(3);时显示出现未对齐(原因未知)。

解决方法

有以下两种方法:

方法一:在lv_hal_disp.c中的lv_disp_drv_init函数中添加

driver->sw_rotate = 1;
driver->rotated = LV_DISP_ROT_180;

方法二:在LVGL初始化代码中添加

lv_disp_drv_init(&disp_drv);
disp_drv.hor_res = TFT_WIDTH;
disp_drv.ver_res = TFT_HEIGHT;
disp_drv.flush_cb = my_disp_flush;
disp_drv.draw_buf = &draw_buf;
disp_drv.sw_rotate = 1;
disp_drv.rotated = LV_DISP_ROT_90;

总结

  1. 在测试TFT屏显示时,如果出现显示颜色与设置颜色不匹配,需要检查User_Setup.h中的TFT_INVERSION_OFFTFT_RGB_ORDER TFT_BGR是否正确设置。
  2. 调用tft.setRotation(3);设置旋转时,如果显示错误,可以尝试上述两种屏幕旋转解决方案。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号