痞子衡嵌入式:使用恩智浦GUI Guider快速建立全新LCD屏示例工程的步驟

痞子衡發表於2024-03-13

  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是使用恩智浦GUI Guider快速建立全新LCD屏示例工程的步驟

  在痞子衡舊文 《在i.MXRT1170上快速點亮一款全新LCD屏的方法與步驟》 裡,痞子衡介紹了在官方 SDK 裸機驅動 elcdif 示例工程基礎上做修改以支援一款全新 LCD 屏的方法,那篇文章主要涉及得是對於 LCD 驅動 IC 的底層適配改動。今天我們在其基礎之上嘗試用恩智浦 GUI Guider 工具快速建立這款 LCD 屏(深圳柯達科電子生產的 KD050FWFIA019-C019A)的 LVGL 框架下的示例工程。

一、GUI Guider簡介

  LVGL 是一個適用於各種嵌入式平臺和顯示器的開源且免費的 GUI 框架庫,其第一個版本於 2016 年開源在 github 上。我們知道嵌入式 GUI 應用開發很大的工作量在於 UI 介面的設計,一個成熟的 GUI 框架通常都自帶配套的 UI 介面編輯工具,但是 LVGL 在 UI 工具方面是比較匱乏的,直到 2022 年初官方才找了家第三方公司合作推出了 SquareLine Studio,並且不幸得是 2024 年 2 月,LVGL 已經結束了和 SquareLine Studio 的合作。

  恩智浦作為 LVGL 官方合作伙伴,在 LVGL 的支援上投入了不少精力,正因為官方 UI 工具的匱乏,恩智浦便開發了 GUI Guider 工具(第一個版本釋出於 2021 年初),藉助 GUI Guider 的拖放編輯器可以輕鬆使能 LVGL 的眾多特性,如小部件、動畫和樣式來建立 GUI,而只需少量程式碼或根本無需任何程式碼。

  • GUI Guider 下載地址: https://www.nxp.com/design/design-center/software/development-software/gui-guider:GUI-GUIDER

  GUI Guider 支援了眾多恩智浦 MCU 開發板以及一些官方指定的 LCD 屏,其生成的示例工程底層程式碼也是基於官方 SDK。其軟體版本對應關係可以在工具選單欄 Help->Release Note 下找到:

二、GUI Guider下建立工程

  痞子衡安裝得是最新的 GUI Guider v1.7.0-GA,讓我們開啟這個工具建立初始工程,前兩步分別是選 LVGL 版本(v7/v8)以及 MCU 板卡(如果是自制板卡,只需要選對 MCU 型號即可),這裡痞子衡選擇了 LVGL v8 以及 MIMXRT1170-EVKB。

  第三步選擇模板的時候,有4種選擇,EmptyUI 就是純空介面,Widget 是一些典型的簡單介面模板,Application 是一些複雜的綜合應用介面模板,Local Projects 是匯入本地已有的使用者工程介面模板。因為只是做一個簡單示例,痞子衡這裡選擇了 EmptyUI:

  第四步(也是建立工程的最後一步)是設定 LCD 屏屬性,因為我們用得是新屏,所以在 Panel Type 裡需要選擇 Custom,然後手動輸入屏的名稱(會在程式碼裡生成相應宏 DEMO_PANEL_KD050FWFIA019)以及尺寸,最後點選 Create 按鈕便能生成初始工程。

  • Note: 這裡設定的 LCD 屏尺寸(寬高)在工程生成之後無法再更改。

三、GUI Guider裡設計介面

  現在來到了 GUI 設計主介面,因為只是簡單示例,我們隨便拖動一個 Label 控制元件,裡面寫入 Hello World 就算設計好介面了。介面設計完成需要在右上角點選 Generate Code -> C 以生成相應介面構建 C 程式碼。

四、修改MCU工程底層驅動

  現在讓我們開啟建立 GUI 工程指定的檔案路徑,找到如下工程目錄,rt1170_qsg_proj.guiguider 便是 GUI 設計工程檔案,一級目錄下都是跟 GUI 相關的資料夾(\generated 存放工具生成的相關字型檔控制元件資原始檔,\custom 裡可以自行新增使用者介面響應相關邏輯程式碼),\sdk 資料夾下則是最終 MCU 工程(MCUX/IAR/MDK/GCC 均支援)。

  因為 GUI Guider 已經將所需的原始檔全部聚合在這個目錄下,所以我們不用額外再下載任何軟體包。這時候你可以選擇你擅長的 IDE 去做進一步開發,痞子衡用 IAR 比較多, 所以便開啟了 \GUI-Guider-Projects\rt1170_qsg_proj\sdk\iar\lvgl_guider_cm7.eww 工程。

  • Note:除了 MCUX 的工程可以在匯入時另選官方 SDK 版本,其餘 IDE 的 SDK 版本均是確定的。如需其它 SDK 版本,需要手動更新 \GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core 裡檔案。

  當前 GUI Guider 生成的 MCU 工程均是 FreeRTOS 版本,沒有提供裸機版本。無論工程是否基於 RTOS,這並不影響我們移植全新 LCD 屏的驅動。按照痞子衡舊文 《在i.MXRT1170上快速點亮一款全新LCD屏的方法與步驟》 裡的步驟,將對 elcdif_support.c/h 的改動全部放到 display_support.c/h 裡,再新增 fsl_ili9806e.c/h 檔案到 lvgl_guider_cm7 工程裡便大功告成了。此外由於那篇文章只是點屏,沒有涉及觸控 IC 的驅動,所以這裡暫時也不用考慮使能觸控功能,可將 DEMO_InitTouch() 函式的呼叫先註釋掉。

\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\board\display_support.c
\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\board\display_support.h
\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\video\fsl_ili9806e.c
\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\video\fsl_ili9806e.h

  給板卡供電,連線上新屏 KD050FWFIA019,編譯下載修改後的 lvgl_guider_cm7 工程,這時候就能看到 LVGL 版本的 hello world 正常顯示了:

  至此,使用恩智浦GUI Guider快速建立全新LCD屏示例工程的步驟痞子衡便介紹完畢了,掌聲在哪裡~~~

歡迎訂閱

文章會同時釋出到我的 部落格園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。

相關文章