大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是使用恩智浦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 支持了众多恩智浦 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主页知乎主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:使用恩智浦GUI Guider快速创建全新LCD屏示例工程的步骤的更多相关文章

  1. 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具NXP-MCUBootUtility用户指南

    NXP MCU Boot Utility English | 中文 1 软件概览 1.1 介绍 NXP-MCUBootUtility是一个专为NXP MCU安全加密启动而设计的工具,其特性与NXP M ...

  2. 痞子衡嵌入式:恩智浦MCUX SDK在GitHub上线了

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是恩智浦MCUX SDK 在GitHub上线一事. 其实在差不多一个月前(2021年1月6日),恩智浦MCUX SDK就在GitHub悄悄上 ...

  3. 痞子衡嵌入式:恩智浦SDK驱动代码风格、模板、检查工具

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是恩智浦 SDK 驱动的代码风格. 上周痞子衡受领导指示,给 SE 同事做了一个关于 SDK 代码风格的分享.随着组内新人的增多,这样的培训 ...

  4. 痞子衡嵌入式:恩智浦SDK驱动代码风格检查工具预览版

    大家好,我是痞子衡,是正经搞技术的痞子. 接上文 <恩智浦SDK驱动代码风格.模板.检查工具> 继续聊,是的,过去的三天里我花了一些时间做了一个基于 PyQt5 的 GUI 工具,可以帮助 ...

  5. 痞子衡嵌入式:恩智浦经典LPC系列MCU内部Flash IAP驱动入门

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦经典LPC系列MCU内部Flash IAP驱动. LPC 系列 MCU 是恩智浦公司于 2003 年开始推出的非常具有代表性的产品 ...

  6. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU特性介绍(2)- RT685EVKA性能实测(Dhrystone)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的性能. 在前面的文章 i.MXRTxxx微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2018 ...

  7. 痞子衡嵌入式:恩智浦机器视觉模块OpenMV-RT那些事(1)- 初体验

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是机器视觉模块OpenMV-RT初体验. 近些年机器视觉应用一直是个很火的方向,想象一下机器如果能长上"眼睛",是不 ...

  8. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(3)- Serial ISP模式(blhost)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的Serial ISP模式. 在上一篇文章 Boot配置(ISP Pin, OTP) 里痞子衡为大家 ...

  9. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(4)- OTP及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子 ...

  10. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(8)- 从Serial(1-bit SPI) NOR恢复启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的1-bit SPI NOR恢复启动. 在前几篇里痞子衡介绍的Boot Device都属于主动启动的 ...

随机推荐

  1. Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--加载字体

    项目地址: Pdfium.Net:https://github.com/1000374/Pdfium.Net PdfiumViewer:https://github.com/1000374/Pdfiu ...

  2. Vue3学习笔记 —— 状态管理、Vuex、Pinia (未完结)

    优秀文章分享:vue中使用vuex(超详细) - 掘金 (juejin.cn) 一.状态管理 1.1.什么是状态管理? 理论上来说,每一个 Vue 组件实例都已经在"管理"它自己的 ...

  3. electron nodejs idea 的 Terminal 默认是操作系统的 cmd.exe,他默认是GBK

    问题1:idea 的 Terminal 默认是操作系统的 cmd.exe,他默认是GBK,尽量不要通过手段更改了,没意义.若要在控制台输出中文,最简单的方法是运行:chcp 65001 &&a ...

  4. ABC 312

    前三题氵 D 给定一个由 (,?,) 组成的字符串.每个 ? 可以设定为任意括号.求有几种设定方法使得整个是合法括号序列. 套路,dp E 给定 \(n\) 个两两不相交的长方体,对每个长方体,求有多 ...

  5. C语言中位运算取余

    位运算取余 求一个数被另一个数整除的余数,可以用求余运算符"%",但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的 ...

  6. Ubuntu下利用MWAN+LFTP解除单mac速度限制

    起因 公司网络限制了单个mac地址的速度, 而日常经常需要从线上环境下载几个G的数据到本地, 通过FileZilla每次需要一个多小时, 非常不方便 解决方案 WAN聚合 本地网口连接OpenWRT路 ...

  7. 【Unity3D】程序纹理简单应用

    1 几何纹理应用 ​ 本文所有案例的完整资源详见→Unity3D程序纹理简单应用. 1.1 边框 ​ 1)边框子图 ​ Border.shadersubgraph ​ 说明:Any 节点用于判断输入向 ...

  8. Neutron详解

    一:简介     一.概述 1. 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修改和删除网络 ...

  9. Oracle 中LONG RAW BLOB CLOB类型介绍

    说明: RAW: 未加工类型,可存储二进制数据或字节符 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列[不建议使用] LONG ...

  10. 阿里云 SMS 短信 Java SDK 封装

    Github & Issues: https://github.com/cn-src/aliyun-sms 官方文档:https://help.aliyun.com/document_deta ...