ESP32_esp-idf_lvgl_V8环境搭建移植

ESP32_LVGL7的环境搭建:ESP32_esp-idf_lvgl_V7环境搭建

先跑一跑官方用例,然后移植到自己的工程中(本次移植为LVGL_8.3,最新为LVGL9)

这个文档也是我一边移植一边记录的,所以有些繁琐

一,运行官方Demo。

Git方式下载lvgl针对esp32的官方移植仓库lv_port_esp32

注意:注意:注意:这里下载都不是最新版的LVGL而是7.11版本的。

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

使用最新的LVGL,可以下载后再去下载最新的lvgl仓库,替换文件夹内的内容。

或者不要再使用本命令,直接clone本仓库然后去单个下载仓库

ESP32_esp-idf_lvgl_V8环境搭建移植_第1张图片

如果下载不了,可以分个单个git下载后(实在不行浏览器在页面上直接Download也可以,一般不会有问题),下载后再放到lv_port_esp32仓库指定的位置。

注意下载时别忘了选择最新的分支,LVGL仓库需要选择最新v8.3的分支,lv_esp32_drivers需要选择默认的master分支。

ESP32_esp-idf_lvgl_V8环境搭建移植_第2张图片

ESP32_esp-idf_lvgl_V8环境搭建移植_第3张图片 lvgl分支需要选择8.3

ESP32_esp-idf_lvgl_V8环境搭建移植_第4张图片

Lv_esp32_drivers分支需要选择master

ESP32_esp-idf_lvgl_V8环境搭建移植_第5张图片

 不需要下载lv_examples文件夹内容,因为lvgl源码自带例程不需要再下载。

 下图这是最后需要用到的文件。

将下载的两个仓库解压放到lv_port_esp32文件夹的commponts文件夹的各个目录内。

删除lv_examples文件夹。

ESP32_esp-idf_lvgl_V8环境搭建移植_第6张图片

 使用Vscode打开lv_port_esp32文件夹

设置串口、下载方式后直接编译。

使用Vscode如果编译出错,可以更方便的找到问题。

ESP32_esp-idf_lvgl_V8环境搭建移植_第7张图片 

如果不出意外,替换为最新的LVGL8.3之后会报错。

出错的过程可能不一样,有的错误在前面,有的在后面,可以朝后看是不是有相同错误。

ESP32_esp-idf_lvgl_V8环境搭建移植_第8张图片 先解决第一个,在如下位置增加定义,以指明自己屏幕的分辨力。

ESP32_esp-idf_lvgl_V8环境搭建移植_第9张图片

 再次编译查看剩余的错误。

ESP32_esp-idf_lvgl_V8环境搭建移植_第10张图片

将上方出错位置的结构体名称改为lv_disp_draw_buf_t

将上方出错位置的函数名称改为lv_disp_draw_buf_init

ESP32_esp-idf_lvgl_V8环境搭建移植_第11张图片

再次编译,查看错误

 将上方错误的.buffer改为.draw_buf

再次编译,查看错误。

ESP32_esp-idf_lvgl_V8环境搭建移植_第12张图片

点击设置打开menuconfig窗口。无法进入发删除build文件夹,build编译后再进入。

这个按钮打开的设置和idf.py mrnuconfig打开的配置是一样的,如果不使用Vscode,直接使用ESP-IDF CMD打开,里面的设置和选项是一样的,两个都可以使用。

选择例程,之后运行这两个例程,同时防止文件内编译报错。

ESP32_esp-idf_lvgl_V8环境搭建移植_第13张图片

 

再次编译,查看错误

demo所在路径修改为如下路径

ESP32_esp-idf_lvgl_V8环境搭建移植_第14张图片 

再次编译,查看错误

出现如上错误,说明你下载的lv_esp32_drivers仓库不是指定的仓库(不是master主分支仓库),下载的时候可以在线查看一下lv_esp32_drivers/lvgl_helpers.c的内容,应该为如下内容,否则不可以给V8使用。因为LVGL的目录结构变化,所以此文件也必须变化。

别忘了定义:#define LV_HOR_RES_MAX 240    #define LV_VER_RES_MAX 240

ESP32_esp-idf_lvgl_V8环境搭建移植_第15张图片

 

需要删除build,重新编译,查看错误

ESP32_esp-idf_lvgl_V8环境搭建移植_第16张图片

 添加定义或者直接注释,二选一。

ESP32_esp-idf_lvgl_V8环境搭建移植_第17张图片

ESP32_esp-idf_lvgl_V8环境搭建移植_第18张图片

 

眼看编译成功,又报错。我TM真的是服了 -_-!

ESP32_esp-idf_lvgl_V8环境搭建移植_第19张图片

添加文件夹

ESP32_esp-idf_lvgl_V8环境搭建移植_第20张图片 

然后build又报错了 +_+

因为这个例程太大运行不了(可能有的模组可以运行),换一个例程。

 去掉勾选Show some widgets,只留一个。

ESP32_esp-idf_lvgl_V8环境搭建移植_第21张图片

修改main中的include路径。

ESP32_esp-idf_lvgl_V8环境搭建移植_第22张图片

等待编译完成。如果之前的ESP-IDF环境没有问题,这里编译大概率也不会再有问题了T_T

终于TMD成功了,不得不说后面依然还是会有问题 s_s

出现如下为成功。则可以进行配置LVGL了。

ESP32_esp-idf_lvgl_V8环境搭建移植_第23张图片

 

点击设置,设置lvgl的参数,需要按照自己的屏幕的驱动和显示方向配置。

ESP32_esp-idf_lvgl_V8环境搭建移植_第24张图片

ESP32_esp-idf_lvgl_V8环境搭建移植_第25张图片

下面是具体使用的引脚配置,可以根据自己具体使用的配置,并且需要参考ESP32引脚定义。

我建议使用SPI3来驱动,不然会和SD卡引脚冲突,如果增加功能会导致很多引脚问题。

我没有使用背光控制引脚和触摸控制引脚。

ESP32_esp-idf_lvgl_V8环境搭建移植_第26张图片

ESP32_esp-idf_lvgl_V8环境搭建移植_第27张图片

ESP32_esp-idf_lvgl_V8环境搭建移植_第28张图片

 没有背光控制引脚和触摸引脚。

ESP32_esp-idf_lvgl_V8环境搭建移植_第29张图片

 

点击编译,等待即可。Build一次时间还挺长 ~_~

ESP32_esp-idf_lvgl_V8环境搭建移植_第30张图片 

 连接好线,点击下载

ESP32_esp-idf_lvgl_V8环境搭建移植_第31张图片

OK,那么问题又了。下载进去结果是这样子,颜色和显示都不对,T-T

ESP32_esp-idf_lvgl_V8环境搭建移植_第32张图片 ESP32_esp-idf_lvgl_V8环境搭建移植_第33张图片

 我以为是SPI的速度问题,我从40MHz一直降到5MHz,都不可以,每改一次,都要重新编译,1000多个文件,人都崩了。

最后把lvgl_8有关的初始化函数全部对照lvgl_7的代码,终于发现了盲点。另一个地方也有屏幕分辨力,修改后正常。

ESP32_esp-idf_lvgl_V8环境搭建移植_第34张图片

同时在设置中,勾选下图设置。

大概如果屏幕本身就是320*240的可能不会有这个问题。就只需要勾选设置里面的下图即可。

ESP32_esp-idf_lvgl_V8环境搭建移植_第35张图片

再次编译,终于没有问题了,T - T

下载后就可以看到运行了LVGL的Demo。

 

二,移植LVGL到自己现有的ESP-IDF工程中。

准备一个esp-idf的工程,路径无所谓,esp-idf的官方例程也可以。

然后将之前下载的LVGL中的components文件夹直接复制到ESP-IDF工程的主目录下。

ESP32_esp-idf_lvgl_V8环境搭建移植_第36张图片

ESP32_esp-idf_lvgl_V8环境搭建移植_第37张图片

 打开设置按照上面的运行Demo例程中的设置,一样设置即可。

把Demo例程中的main.c中的代码复制到ESP-IDF工程的main.c中,包括代码和头文件的包含都要挪过来。删除build文件夹,然后点击编译。

 

编译没有任何问题,直接下载,正常运行。

ESP32_esp-idf_lvgl_V8环境搭建移植_第38张图片

最后可以使用模拟器做好demo后,在挪进工程里面就行了。

个人见解,感谢阅读。

你可能感兴趣的:(LVGL,ESP32,ESP32,LVGL,LVGL8,ESP-IDF,ESP-ADF)