ESP32 IDF 在vs code 下移植LVGL_v8.3.11(致力打造史上最详细lvgl移植教程,步骤堪称保姆级,小白上手即可实现100%成功移植!!!)

一、移植LVGL的前期准备

第一步:ESP32 S3 LVGL版本选择

            对于 ESP32-S3推荐使用 LVGL v8.3.11,因为这个版本在性能、兼容性和 bug 修复方面较为稳定,具体原因如下:

推荐使用 LVGL v8.3.11 的原因

  1. 官方稳定版本

    • LVGL v8.3.11LVGL v8.3 系列的最终修复版,修复了之前版本的一些 bug,提高了稳定性。
    • ESP32 官方文档Espressif 提供的示例工程 也是基于 LVGL v8.3.x,说明这个版本在 ESP32 上经过了较多的优化和测试。
  2. 适配 ESP32-S3 的 DMA & PSRAM

    • ESP32-S3 具备 PSRAMLVGL v8.3DMA 传输和 PSRAM 兼容性 方面已经进行了优化,能够更好地适配 S3 硬件加速。
    • 之前的 LVGL 7.x 或 8.0 版本 在 ESP32 的 DMA 传输PSRAM 支持 上可能会有 bug 或不够完善。
  3. 支持 SquareLine Studio

    • SquareLine Studio 是目前最流行的 LVGL UI 设计工具,且最高支持 LVGL v8.3.x
    • 如果你想通过 可视化界面拖拽设计 UI,使用 LVGL v8.3.11 兼容性最佳。
  4. 支持最新的 LVGL 组件和优化

    • LVGL v8.3 提供了更多的 UI 控件、动画效果,以及更好的输入设备适配(例如触摸屏驱动)。
    • 适用于 ESP32-S3 LCD、触摸屏、SPI DMA 传输 等场景。

第二步:LVGL 源码下载

1. 官方 GitHub 下载(推荐)

方式 1:GitHub 页面手动下载(我先着重使用手动下载方式,更适合小白
  1. 打开 LVGL GitHub 仓库https://github.com/lvgl/lvgl
  2. 点击选择“v8.3”版本
  3. 点击 “Code” 按钮
  4. 选择 “Download ZIP” 下载

        下载后,解压缩即可使用。

方式 2:直接克隆 GitHub 仓库

        在你的 ESP32 开发环境(VS Code、ESP-IDF 终端等)中运行:

git clone --branch v8.3.11 --depth 1 https://github.com/lvgl/lvgl.git

        如果你需要最新的 v8.3.11 版本,确保使用 --branch v8.3.11 参数。

2. 使用 ESP-IDF 下载(适用于 ESP32)

        如果你使用的是 ESP-IDF 开发环境,可以直接运行:

idf.py add-dependency "lvgl/lvgl^8.3.11"

        这将自动下载 LVGL v8.3.11 并添加到 ESP-IDF 组件中。


3. 使用 PlatformIO 下载(适用于 VS Code)

        如果你在 VS Code + PlatformIO 开发环境中:

  1. platformio.ini 文件中添加:
lib_deps = lvgl/lvgl @ ^8.3.11
  1. 保存后,PlatformIO 会自动下载并集成 LVGL 组件。

4. 在 SquareLine Studio 里下载

        如果你使用 SquareLine Studio 设计 UI,它会自动提供 LVGL v8.3.x 版本,你可以直接导出到 ESP32 项目中。


第三步:ESP32 IDF工程文件和LVGL源码准备

        我们找到IDF库的例子工程,在IDF安装路径的Espressif\frameworks\esp-idf-v5.3.1\examples\get-started路径下,将里面的hello world 工程文件复制出来。

        重命名hello world 工程文件夹为“ESP32S3N16R8_with_LVGLv8.3.11_20250211”,并解压好刚才下载好的LVGL_v8.3.11源码,如图:

         打开我们准备好的ESP32S3N16R8_with_LVGLv8.3.11_20250211工程文件,在里面新建一个“components”文件夹,用于存放ESP32组件文件(lvgl源码或者屏幕的驱动代码等等)。

第四步:显示(和触摸)驱动准备

        在 ESP32-S3 上移植 LVGL 之前,需要先准备好 显示驱动(LCD)触摸驱动(如果有触摸)

以下是主要的要点:

        (1)确保屏幕的驱动可用,并且可以实现在屏幕上 画点,矩形填充的功能

        (2)确保屏幕的触摸驱动可用(如果有触摸功能),并且可以实现获取触摸的XY坐标的功能

(注意:您可以用 lv_port_esp32 里提供的 LVGL 显示驱动,如果里面有支持您选择的屏幕驱动IC)

        为了使新手小白更深入的学会和理解LVGL如何在ESP32上移植,我先选择使用自己编写的触摸屏驱动用于lvgl移植!

        我手上的屏幕是1.69寸,240x280分辨率,16位色,RGB565,驱动IC为ST7789V,通信接口SPI,触摸IC是 CST816T,通信接口IIC。

        在“components”文件夹里面新建“BSP”文件夹,把提前准备好的屏幕驱动代码复制到BSP文件夹

        为了将复制过来的屏幕驱动代码链接到ESP32的工程里面,我们还需在BSP文件夹下新建一个CMakeLists.txt文件,里面内容为:

set(src_dirs         
            LCD_ST7789V_SPI
            TOUCH_CST816T_I2C

)

set(include_dirs            
                LCD_ST7789V_SPI
                TOUCH_CST816T_I2C

)

set(requires
            driver
            esp_timer
            esp_driver_ledc
)

idf_component_register(
                        SRC_DIRS ${src_dirs}
                        INCLUDE_DIRS ${include_dirs} 
                        REQUIRES ${requires}
)

component_compile_options(
                            -ffast-math 
                            -O3
                            -Wno-error=format=-Wno-format
                            -Werror=implicit-function-declaration
)

(注意:实际要根据你自己的驱动文件夹来模仿编写,从而把你的屏幕驱动文件链接到ESP32 IDF工程里面)

二、LVGL 源码移植

第一步:源码文件移植

        将刚才下载准备好的lvgl-release-v8.3源码解压复制到我们新建的“components”文件夹,并重命名为lvgl (这一步必须重命名为lvgl !!,后面会提到原因)

做好以上步骤后,我们使用VS CODE 打开ESP32S3N16R8_with_LVGLv8.3.11_20250211工程,可以看到工程文件列表如下:

        依次在VS CODE 上配置好ESP32对应芯片的配置:(该步骤默认小白已经掌握,我不再赘述哈!)

激动人心的时刻到来:编译!!!!

        重要的事情说三遍:如果编译成功并没有错误的话,那恭喜你可以接着下面的步骤继续移植,如果还有编译报错,请先解决报错!!!

三、LVGL 显示驱动接口移植

核心任务

  1. 初始化 LCD 硬件(SPI 或并口驱动)
  2. 实现 flush_cb(LVGL → LCD 数据传输)
  3. 配置 LVGL 的显示缓冲区
  4. 注册显示驱动

        对于LVGL显示驱动接口的移植,LVGL源码里面提供了移植示例,我们找到lvgl\examples\porting文件夹,里面有6个文件:

他们分别是 :

        显示驱动移植示例代码(lv_port_disp_template)

        文件系统移植示例代码(lv_port_fs_template)

        输入设备驱动移植示例代码(lv_port_indev_template)

       为方便调用管理,我们需要在ESP32 IDF 工程的main文件夹下新建“lv_port”文件夹,然后把这个porting文件夹里面的文件全部复制到新建的“lv_port”文件夹(没有用到的可以不用复制),并重命名

参考资源链接:[ESP32S3lvgl 8.3结合示例:基于ESP-IDF 5.1的移植指南](https://wenku.csdn.net/doc/3ocfmon6vq?utm_source=wenku_answer2doc_content) 要在ESP32S3移植并运行LVGL 8.3图形库,首先你需要对ESP-IDF框架有基本的了解,尤其是如何在其基础上创建和配置项目。《ESP32S3lvgl 8.3结合示例:基于ESP-IDF 5.1的移植指南》是一份宝贵的资源,它提供了一个实际的示例项目,用以指导开发者完成移植过程。 开始之前,确保你已经安装了ESP-IDF开发框架,并且可以正常编译hello world工程。移植工作通常包含以下步骤: 1. 创建一个hello world工程,确保你的开发环境已配置完毕。 2. 使用git clone命令克隆LVGL源码到本地。 3. 克隆适用于ESP32S3LVGL驱动适配代码。 4. 在ESP-IDF项目中创建components文件夹,并将克隆的LVGL源码和驱动代码放到这个文件夹中。 5. 复制并修改LVGL的配置文件lv_conf_template.h为lv_conf.h,以启用所需的LVGL功能。 6. 将示例文件复制到指定目录,并创建porting文件夹以支持ESP32S3的显示和输入设备。 7. 修改ESP-IDF的配置文件,确保新添加的组件被正确编译。 8. 通过IDF提供的工具编译整个工程。 9. 将编译好的程序通过适当的接口上传到ESP32S3设备上。 在代码方面,你需要确保在CMakeLists.txt文件中包含lvgl组件,示例如下: ```cmake set(LVGL_DIR 参考资源链接:[ESP32S3lvgl 8.3结合示例:基于ESP-IDF 5.1的移植指南](https://wenku.csdn.net/doc/3ocfmon6vq?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值