我是老溫,一名愛學(xué)習(xí)的嵌入式工程師關(guān)注我,一起變得更加優(yōu)秀!
LVGL是一款用C語言編寫的開源輕量級圖形顯示框架,LVGL集成了資源占用小,多平臺使用,移植簡單等一系列特點(diǎn),特別適合在嵌入式設(shè)備上進(jìn)行開發(fā)使用。
ESP32是一款強(qiáng)大的WiFi SOC,特別適合用在物聯(lián)網(wǎng)WiFi設(shè)備上,對于一些需要進(jìn)行圖形界面開發(fā)的業(yè)務(wù)場景,ESP32+LVGL這個(gè)搭配,基本可以滿足需求了。
在LVGL的官方文檔上,已經(jīng)有一個(gè)章節(jié)簡單地描述了如何在ESP32上面移植LVGL,并且官方已經(jīng)幫開發(fā)者移植好了一個(gè)示例工程,開發(fā)者只需要作簡單的導(dǎo)入即可。LVGL關(guān)于ESP32的官方介紹頁面,如下圖所示。
https://docs.lvgl.io/latest/en/html/get-started/espressif.html
以下是詳細(xì)的導(dǎo)入過程。
1、從以上的文檔得知,LVGL官方創(chuàng)建了一個(gè)示例工程,lv_port_esp32,這個(gè)工程托管在github上面,但由于目前訪問github會出現(xiàn)不穩(wěn)定的情況,所以,我們可以把github上的工程導(dǎo)入到gitee上,再通過gitee來進(jìn)行下載,如下圖所示。
2、工程導(dǎo)入gitee成功后,就可以使用git clone命令,把工程項(xiàng)目下載到本地,如下圖所示。
命令:git clone https://gitee.com/embediot/lv_port_esp32
3、下載成功后,這個(gè)工程還沒有導(dǎo)入LVGL相關(guān)的代碼,LVGL相關(guān)的源碼和例程,是以組件的形式提供的,因此,LVGL的源碼保存在lv_port_esp32/components文件夾里面,并且LVGL相關(guān)的源碼和例程,是使用git submodule的方式進(jìn)行管理的,因此,我們需要更新submodule。
4、示例工程lv_port_esp32依賴三個(gè)submodule,分別是:
(1)lv_examples:這個(gè)是LVGL的示例demo,移植完之后可以使用這些demo驗(yàn)證LVGL的運(yùn)行。
(2)lvgl:這個(gè)是LVGL的源代碼,以C語言作為主要編程語言。
(3)lvgl_esp32_drivers:這個(gè)是一些移植和適配好的顯示屏和觸摸板的驅(qū)動代碼,LVGL為了方便開發(fā)者,已經(jīng)幫我們適配好了一些比較常用的顯示屏和觸摸板。
5、這三個(gè)submodule的源碼是托管在github的,同樣由于github的訪問困難,需要把這三個(gè)submodule都同步到gitee,然后通過gitee進(jìn)行更新,同步完之后,如下圖所示。
6、同步完成后,再修改lv_port_esp32/.gitmodules這個(gè)文件,把submodule的更新網(wǎng)址指向gitee,修改完成后,如下圖所示。
7、然后在 lv_port_esp32這個(gè)目錄下,執(zhí)行以下命令,進(jìn)行子模塊的下載,下載完成后,如下圖所示。
命令:git submodule update --init --recursive
8、至此,整個(gè)LVGL的工程就成功導(dǎo)入到ESP32里面了,可以使用vscode打開進(jìn)行開發(fā),如下圖所示。
9、導(dǎo)入完成后,需要根據(jù)自己的硬件板卡,來配置LVGL的工程參數(shù),主要是配置TFT-LCD的參數(shù),如TFT_LCD的引腳位號,驅(qū)動方式,以及顯示參數(shù);還有配置觸摸板的參數(shù),如觸摸板的引腳位號,驅(qū)動芯片,等等。
10、作者采用的TFT_LCD驅(qū)動芯片是ILI9341,SPI驅(qū)動接口,RGB565的工作方式,采用的觸摸板是電阻觸摸,觸摸芯片是XPT2046,接口是SPI,具體的配置,可以參考ESP32的menuconfig里面的內(nèi)容,如下圖所示。
11、編譯工程后,燒錄到硬件板卡上,即可運(yùn)行LVGL官方提供的演示demo。