ID.LODA 发表于 2020-9-5 21:39

【ESP32-S2-Kaluga-1测评】LVGL的移植测试

板卡带了 LCD 屏幕的扩展版,可以移植一个 LVGL 做图形化界面,而且 LVGL 官方提供了 ESP32 的移植接口,可以从 (https://github.com/lvgl/lv_port_esp32) 下载到源码,但是因为 ESP32S 和 ESP32 的 SPI 外设是有差异的,需要进行相应的修改,spi 驱动例程可以从板卡的[例程](https://github.com/espressif/esp-dev-kits)获取


1. 准备一个简单的工程,可以选择 hello world 例程,把 (https://github.com/lvgl/lv_port_esp32)添加到工程路径,我新建了一个 components 文件夹存放,拷贝 main 文件下的 main.c 替换工程 hello world 下的 main.c, 然后删除了里面 main 文件夹和一些不相关的文件,剩余工程结构如下


1. 修改工程路径下的 CMakeLists.txt, 添加 lvgl 相关文件路径和板卡的路径,按自己实际存放位置修改


1. 修改工程 main 文件夹下的 CMakeLists.txt,添加 LVGL 及板卡的模块注册


1. 修改工程 main 文件夹下 Kconfig.projbuild,加入 LCD 驱动的配置


1. 保存,打开 GUI 配置界面,可以看到 LVGL 和 LCD 扩展板的配置界面,说明模块已经添加成功,可以添加头文件的方式调用相关接口,暂时对 LVGL 的配置不是特别熟悉,就先保留默认配置



1. 如上配置之后,编译的时候还是会失败,还需要修改几个文件, lvgl_esp32_drivers 目录下的 lvgl_help.c 文件,同目录下的 lvgl_tft 文件下的 disp_driver.c 文件,屏蔽相关文件实现即可,具体修改如图





1. 修改 main 文件下的 LCD 初始化函数,用板卡 LCD 例程下的初始化替换即可



1. LVGL 的绘图是通过 frambuff 的方式实现,所以移植的时候其实只需要修改刷屏函数即可


1. 修改 main 的线程创建,就修改完成了


1. 编译,运行,可以看到 ESP32S2 的刷图速率还是不错的,肉眼没有感受到明显的卡顿感






1. 以上就是 lvgl 的移植工作,因为 LVGL 官方提供了 ESP32 的参考,所以对我第一次使用的我来说有一定帮助,当然也是因为 ESP32S2 的一些差异性,移植过程也是遇到了很多困难,好在最终结果是光明的。

Rdz 发表于 2022-2-3 10:44

<p>给大佬点赞</p>
页: [1]
查看完整版本: 【ESP32-S2-Kaluga-1测评】LVGL的移植测试