
LVGL(輕巧而多功能的圖形庫)是一個免費的開放源代碼圖形庫,它提供創建具有易于使用的圖形元素,精美的視覺效果和低內存占用的嵌入式GUI所需的一切。
本文使用LPC55S69_EVK開發板,ST9976顯示驅動,GT911觸摸驅動,實現RT-Thread下LVGL的移植適配。
(資料圖)
硬件搭建
1.觸摸屏使用的是NXP-LCDM-S 模塊,搭載ST9976 顯示芯片和GT911觸摸芯片:
2. 將NXP-LCDM-S模塊通過PMOD接口接入到LPC55S69_EVK上,簡單操作無難度,直接插上即可:
3.將準備好的USB線連接到LPC55S69的P6(DebugLink)上。 LPC55S69與NXP-LCDM-S 模塊各IO接口與功能之間的對應關系表
LPC55S69_EVK 引腳 | NXP-LCDM-S 模塊引腳 | 說明 |
P0_14 | SCL | I2C1_SCL |
P0_13 | SDA | I2C1_SDA |
P0_4 | CS | SPI3_SSEL0 |
P0_3 | MOSI | SPI3_MOSI |
P0_2 | D/C | D/C |
P0_6 | WR | SPI3_SCK |
P1_28 | INT | INT |
P1_22 | RST | RST |
觸摸屏的基本驅動
1. 觸摸屏使用NXP-LCDM-S 模塊,搭載ST9976 顯示芯片和GT911 觸摸芯片,在開始移植適配 LVGL 驅動之前,需要先將 ST9976 和GT911 分別對接到 RT-Thread 的LCD 和Touch 設備框架. 如果用作個人使用,也可不對接,向 LVGL 提供 LCD畫點接口和觸摸點讀取接口即可;
2. 首先進行 ST9976 顯示芯片的驅動,ST9976 與 LPC55s69 之間通過四線SPI 通訊,需要將NXP-LCDM-S 模塊背面的跳線撥為111,如下圖所示:
3. LCD驅動對接完成后進行顯示測試,如圖:
4. 接下來進行 GT911 觸摸芯片的驅動對接,需要注意的是 GT911 可以通過操作 RST 和 INT 引腳設置不同的 I2C 從機通訊地址,并且由于觸摸屏模塊中 ST7796 和 GT911 共用同一個 RST 引腳,操作的時候需要特別注意;
5. GT911 觸摸驅動對接完后進行測試,串口打印觸摸點坐標;
6. ST7796 和 GT911 同時驅動測試,在屏幕上顯示觸摸的軌跡,從而進一步測試顯示和觸摸的坐標系是否對應,測試效果如下:
LVGL的移植適配
顯示和觸摸驅動對應好后就可以開始 操作LVGL 的移植適配:首先可以復制一個已經對接好的 LVGL 文件作為模板,在此基礎上進行修改,例如rt-thread-masterspstm32stm32l475-atk-pandoraapplicationslvgl ,結合板卡情況修改其中的lv_conf.h 、lv_port_disp.c、lv_port_indev.c 三個文件即可, SConscript 自行按需修改。
1. 對接顯示接口:在lv_port_disp.c中對接 LVGL 的顯示接口,在disp_flush 函數中填入自己的 LCD 繪制函數。
2. 對接觸摸輸入接口:在lv_port_indev.c中對接 LVGL 的輸入接口,LVGL 支持多種類型的輸入設備,例如觸摸,鍵盤,編碼器等。輸入接口必須初始化 lv_indev_drv_t 變量,最重要的是實現其 read_cb 回調函數,從而獲取觸摸信息。
配置RT-Thread, 編譯下載工程
在實驗開始前,需要搭建RT-Thread開發環境,目前RT-Thread 主倉庫 LPC55S69 已經適配 LVGL,可以進行使用體驗。
1.進入 t-threadsplpc55sxxlpc55s69_nxp_evk目錄,打開RT-Thread scons命令行配置工具, 輸入menuconfig 進入配置界面:
2.進入以下目錄勾選使能 LVGL 及 Demo 例程:
3.進入以下目錄,檢查并勾選使能對應外設:
LPC55S69 的LVGL已經配置上了,退回到scons命令行界面,首先輸入 pkgs-update命令獲取軟件包,成功后輸入scons –target=mdk5 生成新的MDK工程:
Keil-MDK project has generated successfully! Keil工程生成成功。
雙擊打開Project.uvprojx Keil工程文件,編譯工程,下載到開發板:
下載后按一下板子上的復位按鍵,看到可以看到觸摸屏上已經出現了日歷 Demo 的界面,可以觸摸調整年月份:
現在RT-Thread下LPC55S69的LVGL移植適配就完成啦!
歡迎大家快去下載體驗一把,把LVGL玩起來吧!
審核編輯:湯梓紅
標簽: