提示:本博客作为学习笔记,有错误的地方希望指正
一、ESP32 LVGL移植(可以更新到最新的版本)移植准备
移植下载网址:Github,然后需要下载一些文件,其中找到属于lv_port_esp32、lvgl ,lv_demos,lvgl_esp32_drivers四个文件。将LVGL、lvgl_demos、lv_esp32_drivers中的文件复制到components文件中子目录中。
二、移植修改文件
编译,然后出现报错就是lvgl中的历程设置中components\lv_examples 中的文件lv_ex_conf.h 不匹配历程中控制的头文件,需要修改这里的为lv_demo_conf.h,并且切换里面的内容,这里我是直接使用VS仿真工程中的控制文件的。
在编译然后出现音乐Demo中的文件出现无法找到字体,然后这里就直接可以在sdkconfig中勾选字体。
解决编译字体问题,配置sdkconfig,选中其中的齿轮
打开之后就找到lvgl中的字体,勾选其中12、16号字体
编译之后还有错误,并且在main.c文件中出现头文件下有波浪线,并且无法跳转,这个时候我们就可以通过底部菜单栏中 点击Win32,然后在点击编辑配置UI,然后点击c_cpp_properties.json,实现UI的配置,这个时候就会对Vscode的编译环境进行一些配置,但是还是无法跳转,这个时候就要给已经变异通过的工程文件夹中的内容复制到这里面,然后再次编译就可以解决这个问题。
配置好json环境之后再次编译还有几个地方有错误,先解决驱动里面的错误,出现我们内存大小没有定义,我们在该点.h文件中#define LV_HOR_RES_MAX 240 具体240的大小还要根据液晶屏幕的像素设置。
然后解决lvgl_helpers.c中的错误,从.c文件中可以看出这里assert((0 <= host) && (SPI_HOST_MAX > host));报错,这里可以直接注释掉或者宏定义 #define SPI_HOST_MAX 3 ,这里只是一个断言作为调试库的时候使用的。应为ESP32有3个SPI,宏定义最大3
最后解决主函数中的错误,又是几个未定义的函数,我们看了下lvgl/src/hal文件下lv_hal_disp.c 没有次函数,然后我们就给此函数替换为lv_disp_draw_buf_init,这个是lv_port_esp32这个文档还应该之前使用的不是LVGL8的版本的hal固件API,需要替换下就可以了。此外还有static lv_disp_buf_t disp_buf; 中的lv_disp_buf_t未知类型命名,这个也是API不兼容,这里修改为lv_disp_draw_buf_t就可以了。最后还有一个就是 disp_drv.buffer显示错误,这个也是之前API不兼容,这里换为disp_drv.draw_buf即可,编译既可以编译通过了。
配置液晶显示像素。
disp_drv.hor_res = 320; /*Set the horizontal resolution in pixels*/
disp_drv.ver_res = 240; /*Set the vertical resolution in pixels*/
配置esp32 sdkconfig配置液晶控制引脚。
通过sdkconfig配置芯片内存以及主频,我这里M5Stock配置8M 240Mhz主频。
修改ILI9341的配置符合M5Stack。
最后我们下载测试下看看是否正常,测试程序可以在main.c文件中有,需要修改下,这个文件中是lvgl7的版本,因此需要修改下符合lvgl8的版本。
最后下载显示但是颜色显示不对,这个时候我们需要修改下sdkconfig中的配置即可。