|
本帖最后由 没有你 于 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的源文件和头文件路径即可,完整文件如下所示:- idf_component_register(
- SRC_DIRS
- # LVGL Main SRC
- "lvgl/src/lv_core"
- "lvgl/src/lv_draw"
- "lvgl/src/lv_font"
- "lvgl/src/lv_gpu"
- "lvgl/src/lv_hal"
- "lvgl/src/lv_misc"
- "lvgl/src/lv_themes"
- "lvgl/src/lv_widgets"
- # LVGL porting
- "lv_port"
- # LVGL Examples
- "lv_examples/src/assets"
- "lv_examples/src/lv_demo_benchmark"
- "lv_examples/src/lv_demo_music"
- "lv_examples/src/lv_demo_music/assets"
- "lv_examples/src/lv_demo_printer"
- "lv_examples/src/lv_demo_printer/images"
- "lv_fonts"
- INCLUDE_DIRS
- # Config and defination at current path
- "."
- #LVGL main repo
- "lvgl"
- "lvgl/src/lv_core"
- "lvgl/src/lv_draw"
- "lvgl/src/lv_font"
- "lvgl/src/lv_gpu"
- "lvgl/src/lv_hal"
- "lvgl/src/lv_misc"
- "lvgl/src/lv_themes"
- "lvgl/src/lv_widgets"
- # LVGL porting
- "lv_port/include"
- #LVGL examples
- "lv_examples"
- "lv_examples/src/assets"
- "lv_examples/src/lv_demo_music"
- "lv_examples/src/lv_demo_music/assets"
- "lv_examples/src/lv_demo_benchmark"
- "lv_examples/src/lv_demo_printer"
- REQUIRES
- bsp
- i2c_devices)
- # LVGL might have warnings. Just ignore them
- target_compile_options(${COMPONENT_LIB} PRIVATE
- -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配置参数 |
评分
-
查看全部评分
|