找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8597|回复: 11
打印 上一主题 下一主题
收起左侧

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, 下载次数: 208)

编译结果.PNG

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

烧录结果.PNG

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

实物.jpg

esp32s2.7z

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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:963450 发表于 2021-9-2 08:44 | 只看该作者
请问,问什么我不能生成HMI_Board_Config的界面?
回复

使用道具 举报

板凳
ID:351097 发表于 2021-9-2 11:39 | 只看该作者
青青子钦 发表于 2021-9-2 08:44
请问,问什么我不能生成HMI_Board_Config的界面?

用idf.py build指令可以编译通过吗?
回复

使用道具 举报

地板
ID:963450 发表于 2021-9-3 10:07 | 只看该作者
没有你 发表于 2021-9-2 11:39
用idf.py build指令可以编译通过吗?

我移植的是lvgl8.0,D:\QT\屏幕截图 2021-09-03 095904.jpg可以build
回复

使用道具 举报

5#
ID:964411 发表于 2021-9-6 17:05 | 只看该作者
这个操作,怎么不能调出LVGL本身的 配置UI呢
回复

使用道具 举报

6#
ID:351097 发表于 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
回复

使用道具 举报

7#
ID:232306 发表于 2021-9-8 18:56 | 只看该作者
感谢楼主分享,正需要这个!给楼主点赞!!!
回复

使用道具 举报

8#
ID:583419 发表于 2021-9-9 17:28 | 只看该作者
非常棒!!没有esp32s2,请问一下用ESP32可以么?
回复

使用道具 举报

9#
ID:351097 发表于 2021-9-11 16:12 | 只看该作者
MilkPower 发表于 2021-9-9 17:28
非常棒!!没有esp32s2,请问一下用ESP32可以么?

应该也是支持的,可以试试
回复

使用道具 举报

10#
ID:583419 发表于 2021-9-16 15:46 | 只看该作者
我这里也用了正点原子的4.3电容屏,然后踩了个大坑。gt9147触摸IC停产,现在的已经换成GT1151Q,读触摸的产品ID是1158。弄了几天,差点否定自我。。。等我换好触摸驱动再来支持~
回复

使用道具 举报

11#
ID:382555 发表于 2021-10-22 10:18 | 只看该作者
你好 如果用其他屏幕驱动改怎么添加 比例我用的是ILI9488
回复

使用道具 举报

12#
ID:849376 发表于 2022-4-20 13:08 | 只看该作者
乔峰gao 发表于 2021-10-22 10:18
你好 如果用其他屏幕驱动改怎么添加 比例我用的是ILI9488

我也想问这个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表