一、基本介绍
本着arduino框架下库多好用的有点,我选择用esp32s3来学习LVGL。移植过程碰了不少壁,还好一路上有大佬帮助,最后是移植成功了这个环境,所以打算以此片博客来感谢大佬们的帮助,同时希望能够帮助到其他朋友。接下来我将从零开始一步步移植LVGL环境,并且成功实现屏幕触摸功能。
硬件配置方面:
触摸屏:屏幕驱动ST7796,触摸驱动:FT6X36。
二、LVGL移植与测试
2.1 移植TFT_eSPI库
编程环境使用的是VSCode+PlatformIO(一下简述pio),网上的安装教程很多这里就不再赘述。
图2.1 PlatformIO IDE
利用pio安装好并成功创建工程后,在pio home的libraries中搜索tft_espi,这是用来调用显示屏的驱动库,也是在esp32s3上使用lvgl的前提。
图2.2 tft_espi库
点进去后在这个界面选择版本2.5.43,并点击“Add to Project”,选择一个自己创建好的工程并添加
图2.3 添加tft_espi库
接下来准备修改库文件来驱动自己的SPI屏幕,通过pio安装的依赖库会在文件夹.pio\libdeps\esp32-s3-devkitc-1(后面这个是创建工程是选择的芯片型号)。接下来找到TFT_eSPI库文件,找到User_Setup.h文件,更改自己的驱动、分辨率和引脚分配
图2.4 更改驱动芯片型号
图2.5 修改分辨率
图2.6 分配引脚
接下来,有个非常关键的点,这个是我初用pio踩过最大最深的坑!使用tft_espi驱动屏幕时,esp32s3一直在重启(通过串口监视器可以查看),但是,非常神奇的是,在arduino ide上安装tft_espi库并驱动时,是正常的,这个问题从9月份开始困扰到国庆后,这段时间就只能用arduino ide来学习lvgl,用过的朋友就知道arduino感人的编译时间。到网上找了好多资料但是没用之后,我向AI求助,没想到真的解决了!解决方法见下图
图2.7 tft_espi库与esp32-s3不兼容的解决方法
找到工程文件夹下面的platformio.ini文件,将platform = espressif32修改成platform = espressif32 @ 6.5.0
[env:esp32-s3-devkitc-1]
platform = espressif32 @ 6.5.0
board = esp32-s3-devkitc-1
framework = arduino
lib_deps = bodmer/TFT_eSPI@^2.5.43
找到文件夹中的例程,复制粘贴到main.cpp中
图2.8 例程
看到success就代表编译成功了,然后连接上esp32s3点击编译右边的上传(Upload)即可
图2.9 编译例程
椭圆显示出来了就代表驱动成功了(可喜可贺可喜可贺),那么接下来正式开始移植LVGL
图2.10 运行例程