标题: ESP32-S2驱动4.3寸屏幕显示littleVGL例程 [打印本页]

作者: 没有你    时间: 2021-8-29 17:55
标题: ESP32-S2驱动4.3寸屏幕显示littleVGL例程
本帖最后由 没有你 于 2021-9-5 23:07 编辑

  ESP32-S2带有LCD接口,可以驱动8080并口的屏幕,手头刚好有一块4.3寸屏幕,买了一个ESP32-S2最小系统,就可以开整了。一、搭建ESP32-S2开发环境
  开发ESP32-S2需要搭建开发环境,从乐鑫官网可以找到教程,地址:https://docs.espressif.com/proje ... /windows-setup.html,打开网站找https://dl.espressif.com/dl/esp-idf-tools-setup-2.4.exe下载安装即可,如果安装过程中出现问题,需要看一下官网的教程,另外有一个好的网络环境也是很重要的。

二、下载ESP32官方的例程
  这里参考官方一款开发板esp32-s2-hmi-devkit-1,github地址如下:https://github.com/espressif/esp ... p32-s2-hmi-devkit-1,打开后,发现components\lvgl\lv_examples和components\lvgl\lvgl都是空白的,所以需要从littleVGL官网下载源码的例程,再把源码和例程复制进来即可
三、下载littleVGL源码和例程
  目前littleVGL已经更新到8.02,不过考虑到稳定性,我使用7.11版本。littleVGL例程网址:https://github.com/lvgl/lv_demos/releases/tag/v7.11.0
littleVGL源码网址:https://github.com/lvgl/lvgl/releases/tag/v7.11.0
四、填充esp32-s2-hmi-devkit-1空白文件
    由于esp32-s2-hmi-devkit-1的工程下的components\lvgl目录下的lv_examples和lvgl是空白的,所以需要把下载lvgl-7.11.0文件夹下的所有文件复制到components\lvgl\lv_examples下,把lv_demos-7.11.0文件夹下的所有文件复制到components\lvgl\lvgl下。进入components\lvgl\lv_examples下复制lv_ex_conf_template.h到components\lvgl,名字改成lv_ex_conf.h。打开lv_ex_conf.h,修改三个地方:第一行的#if 1,使能宏#define LV_EX_PRINTF ,使能宏#define LV_USE_DEMO_PRINTER。这样就可以使用DEMO_PRINTER演示了。esp32构建工程用到Cmake开发工具,所有添加的源文件和头文件需要添加到CMakeLists.txt下添加,在原有的基础上添加lv_examples的源文件和头文件路径即可,完整文件如下所示:
  1. idf_component_register(
  2.     SRC_DIRS
  3.         # LVGL Main SRC
  4.         "lvgl/src/lv_core"
  5.         "lvgl/src/lv_draw"
  6.         "lvgl/src/lv_font"
  7.         "lvgl/src/lv_gpu"
  8.         "lvgl/src/lv_hal"
  9.         "lvgl/src/lv_misc"
  10.         "lvgl/src/lv_themes"
  11.         "lvgl/src/lv_widgets"
  12.         # LVGL porting
  13.         "lv_port"
  14.         # LVGL Examples
  15.         "lv_examples/src/assets"
  16.         "lv_examples/src/lv_demo_benchmark"
  17.         "lv_examples/src/lv_demo_music"
  18.         "lv_examples/src/lv_demo_music/assets"
  19.         "lv_examples/src/lv_demo_printer"
  20.         "lv_examples/src/lv_demo_printer/images"
  21.         "lv_fonts"
  22.     INCLUDE_DIRS
  23.         # Config and defination at current path
  24.         "."
  25.         #LVGL main repo
  26.         "lvgl"
  27.         "lvgl/src/lv_core"
  28.         "lvgl/src/lv_draw"
  29.         "lvgl/src/lv_font"
  30.         "lvgl/src/lv_gpu"
  31.         "lvgl/src/lv_hal"
  32.         "lvgl/src/lv_misc"
  33.         "lvgl/src/lv_themes"
  34.         "lvgl/src/lv_widgets"
  35.         # LVGL porting
  36.         "lv_port/include"
  37.         #LVGL examples
  38.         "lv_examples"
  39.         "lv_examples/src/assets"
  40.         "lv_examples/src/lv_demo_music"
  41.         "lv_examples/src/lv_demo_music/assets"
  42.         "lv_examples/src/lv_demo_benchmark"
  43.         "lv_examples/src/lv_demo_printer"
  44.     REQUIRES
  45.         bsp
  46.         i2c_devices)

  47. # LVGL might have warnings. Just ignore them
  48. target_compile_options(${COMPONENT_LIB} PRIVATE
  49.     -w)
复制代码



五、修改屏幕驱动  手头的4.3寸屏幕驱动IC型号是NT35510,工程默认的RM68120,需要做修改。我使用的是helloworld工程,打开ESP-IDF PowerShell,切换到\examples\get-started\hello_world下,输入idf.py menuconfig,选择HMI_Board_Config选择LCD_Driver选择NT35510。

在lvgl_port.c中,修改屏幕驱动为NT35510,scr_find_driver(SCREEN_CONTROLLER_NT35510, &lcd);
六、添加触摸驱动
  手头的4.3寸屏幕触摸驱动IC型号是gt9147,工程中没有这个IC的驱动,需要自己添加,下面是我自己的一个驱动,可以作为参考,源码如下
[code]#include "gt9147.h"

#define TAG "GT9147"

#define gt9147_rst    42
#define gt9147_int    41
#define gt9147_OUTPUT_PIN_SEL  ((1ULL<<gt9147_rst) | (1ULL<<gt9147_int))

const uint16_t GT9147_TPX_TBL[5]={GT_TP1_REG,GT_TP2_REG,GT_TP3_REG,GT_TP4_REG,GT_TP5_REG};


//GT9147配置参数

编译结果.PNG (108.38 KB, 下载次数: 210)

编译结果.PNG

烧录结果.PNG (56.7 KB, 下载次数: 223)

烧录结果.PNG

实物.jpg (99.47 KB, 下载次数: 239)

实物.jpg

esp32s2.7z

17.39 MB, 下载次数: 108, 下载积分: 黑币 -5


作者: 青青子钦    时间: 2021-9-2 08:44
请问,问什么我不能生成HMI_Board_Config的界面?
作者: 没有你    时间: 2021-9-2 11:39
青青子钦 发表于 2021-9-2 08:44
请问,问什么我不能生成HMI_Board_Config的界面?

用idf.py build指令可以编译通过吗?
作者: 青青子钦    时间: 2021-9-3 10:07
没有你 发表于 2021-9-2 11:39
用idf.py build指令可以编译通过吗?

我移植的是lvgl8.0,D:\QT\屏幕截图 2021-09-03 095904.jpg可以build
作者: haiyang00    时间: 2021-9-6 17:05
这个操作,怎么不能调出LVGL本身的 配置UI呢
作者: 没有你    时间: 2021-9-6 21:40
haiyang00 发表于 2021-9-6 17:05
这个操作,怎么不能调出LVGL本身的 配置UI呢

ESP32-S2的8080屏幕用的是驱动不是littleVGL官网的标准驱动,所以没有用littleVGL自带的kconfig。你可以把littleVGL源码的kconfig文件复制到上一级目录,即components\lvgl目录,然后输入idf.py menuconfig,可以进入Component config → LVGL configuration
作者: omrcard    时间: 2021-9-8 18:56
感谢楼主分享,正需要这个!给楼主点赞!!!
作者: MilkPower    时间: 2021-9-9 17:28
非常棒!!没有esp32s2,请问一下用ESP32可以么?
作者: 没有你    时间: 2021-9-11 16:12
MilkPower 发表于 2021-9-9 17:28
非常棒!!没有esp32s2,请问一下用ESP32可以么?

应该也是支持的,可以试试
作者: MilkPower    时间: 2021-9-16 15:46
我这里也用了正点原子的4.3电容屏,然后踩了个大坑。gt9147触摸IC停产,现在的已经换成GT1151Q,读触摸的产品ID是1158。弄了几天,差点否定自我。。。等我换好触摸驱动再来支持~
作者: 乔峰gao    时间: 2021-10-22 10:18
你好 如果用其他屏幕驱动改怎么添加 比例我用的是ILI9488
作者: Letitia    时间: 2022-4-20 13:08
乔峰gao 发表于 2021-10-22 10:18
你好 如果用其他屏幕驱动改怎么添加 比例我用的是ILI9488

我也想问这个




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1