本文参考自:ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译。有额外修改。

下载源码

LVGL 官方对 ESP32 系列有对应的驱动支持:源码地址

注意,不能简单 clone 或者下载源码压缩包,需要递归 clone,命令如下:

git clone --recurse-submodules https://github.com/lvgl/lv_port_esp32.git

这里如果 clone 不了,可能是 git 的代理问题。

如果使用了科学上网,可执行以下代码,设置后代理端口即可(端口号换成工具对应端口号)

git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

软硬件列表

硬件
ESP32-S3
320*240 TFT 无触摸屏(ILI9341 驱动)
杜邦线*8
软件
ESP-IDF v4.4.1(例程库要求至少 v4.2,v4.4 实测可用)
LVGL v7.9

引脚连接

ESP32-S3 有 4 组 SPI 接口,其中 SPI0 和 SPI1 用于访问 flash/PSRAM,SPI2 和 SPI3 可用于驱动屏幕(ESP32-S3 引脚参考大全 – 凌顺实验室)。这里我用的是 SPI3。

使用 SPI3 时不需要指定引脚,任意引脚皆可。

ESP32-S3 屏幕 含义
IO7 CS 片选
IO15 RESET 重启
IO16 DC 数据/命令
IO17 MOSI 主机输出/从机输入
IO18 SCK 时钟信号
IO8 LED (BL) 背光控制

创建项目,添加组件

进行下一步之前需要先创建一个空项目,参考:在CLion中配置ESP-IDF

将源码中的 components 复制到项目中。

将源码的 mainmain.c 复制并代替空项目的 main.c

在 CLion 中点击 Tool-Cmake-Reload Cmake Project,重载一下项目。

配置驱动参数

  • 打开 ESP-IDF CMD
  • cd 命令移动到项目目录
  • 执行命令:idf.py menuconfig,打开图形化配置工具

配置驱动

  • 依次进入 Component config -> LVGL TFT Display controller,按下图配置

配置驱动参数

  • 进一步进入 Display Pin Assignments,按照引脚连接表,配置引脚,如下图所示。

配置引脚

配置 LVGL

  • 按两次 ESC,进入 LVGL configuration,按下图进行配置

配置 LVGL

选择例程

  • 按一次 ESC,进入 lv_examples configuration,可以选择运行哪个例程,这里就默认了,不用更改

保存退出

按 S 保存配置,按多次 ESC 退出 menuconfig

修改驱动文件

源码对 ESP32 和 ESP32-S2 进行了适配,而没有对 ESP32-S3 进行适配,因此需要进行少量修改(esp32-s3芯片esp-idf-v4.4-dev编译带LVGL工程出错 - ESP32 Forum)。

  • 进入 components/hal/include/hal/spi_types.h,将第 66 行修改为
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
  • 进入 components/lvgl_esp32_drivers/lvgl_helpers.c,将第 212 行修改为
#elif defined (CONFIG_IDF_TARGET_ESP32S2) || defined (CONFIG_IDF_TARGET_ESP32S3)
  • 在第二步的同一个文件中,在第 235 行添加以下代码
dma_channel = SPI_DMA_CH_AUTO;

编译,下载

在 ESP-IDF CMD 窗口中执行以下命令:

  • 编译
idf.py build
  • 下载,把 COMx 改成 ESP32-S3 在自己电脑上对应的端口号,可在设备管理器中查看到
idf.py -p COM7 flash
最后修改:2023 年 10 月 05 日
如果觉得我的文章对你有用,请随意赞赏