柿饼UI在ART-Pi上的移植

2023-10-18 01:58
文章标签 ui 移植 pi art 柿饼

本文主要是介绍柿饼UI在ART-Pi上的移植,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:社区成员刘端飞

直播回看:https://www.bilibili.com/video/BV1jh411m7tS(关注+一键三联,技术干货不错过!)

说是移植,实际上是添加柿饼库到工程,并完成LCD驱动和触摸驱动的对接,其中LTDC驱动SDK中已经完成了移植,RGB屏的移植主要就是时钟频率和屏幕面板参数的修改。对于其他屏幕则需要按照LCD设备框架的要求完成对接。

所以说,只要完成了对LCD设备框架和touch设备框架的对接,移植过程就完成了90%。

开源地址:https://gitee.com/liuduanfei/ART-Pi-Persimmon/tree/master

说明

1 柿饼UI:

Persimmon 是一套运行在RT-Thread嵌入式实时操作系统上的图形用户组件界面,用于提供图形界面的用户交互。它采用C++语言编写,基于C语言实现的底层图形像素引擎,为上层应用提供了控件、窗口、signal/slot,手势动画等机制。为了提高UI的开发灵活性、降低用户开发时间和成本,Persimmon 提供了所见即所得的UI设计器。用户可通过设计器轻松实现UI界面设计,并利用JavaScript脚本实现对界面逻辑的控制。

2 ART-Pi

RT-Thread 团队精心准备推出的极具扩展性的 DIY 开源硬件。

准备工作

工具:

  • RT-Studio RT-Thread推出的一站式IDE。

    (下载链接:https://www.rt-thread.org/page/studio.html)

  • UI设计器 柿饼配套的设计器。

  • ART-Pi 本次移植需要的硬件平台。

  • RGB屏幕 ART-Pi的lcd接口跟正点原子一样,其他屏幕请看原理图做专门的转接板。

  • 多媒体扩展板 ART-Pi配套的多媒体扩展板。

本次移植的RGB屏幕为正点原子 800x480分辨率的七寸屏,触摸芯片为FT5426。

整个工程在art_pi_blink_led 基础上移植,SDK版本为 v1.1.0。

下面对整个过程进行说明。

1.新建工程

RT-Studio中安装ART-Pi的sdk。新建一个art_pi_blink_led 工程。

2.添加柿饼库

这里以Kconfig的方式添加柿饼库文件,在文件art_pi_blink_led\libraries\Kconfig中添加下面的代码。为方便复制,贴在图下面。

config PKG_USING_PERSIMMON_SRCbool "Using Persimmon Library"select RT_USING_CPLUSPLUSselect PKG_USING_FASTLZselect PKG_USING_EZXMLselect RT_USING_I2Cdefault n

上面的配置是柿饼库所依赖的软件包和RTT的配置选型,简单说明一下,柿饼库的使用需要依赖fastlz软件包和ezxml软件包,同时还需要开启C++i2c,否则编译会报错。

添加完保存之后,点击RT-Thread Setting

分别使能 LCD驱动,文件系统(flash),wifi,柿饼库,ftp库。

下图为开启LCD支持,这里指的是开启外设ltdc支持,这样系统启动后就会自动注册lcd设备供柿饼库使用。

下图为开启wifi支持和flash文件系统支持,柿饼的UI文件需要在文件系统中加载,通过wifi联网可以方便使用ftp库传输UI文件,非常方便。

下图为开启柿饼库和ftp库支持,前面添加的Kconfig代码这个就以图形配置的方式显示,通过点击就能使能。

设置lwip,ftp库需要更多的资源配置,按照下图配置lwip,不然传输过程会出现失败的情况,配置好之后保存。

添加文件

上面几个步骤只是添加了柿饼库的文件,要想启动柿饼库还需要添加额外的文件,在工程applications文件夹下添加启动柿饼UI所需要的文件,如下图所示。

main.c中添加使能ftp的相关代码。

保存配置并编译

可以看到,柿饼库成功链接,编译尺寸还是比较大的。

下载

此时下载之后屏幕点亮,还不能显示界面,这是因为柿饼的UI文件还没有加入到flash文件系统中,下面加入柿饼UI文件,采用ftp协议传输柿饼UI文件。

连接网络:

使用命令 wifi join <ssid> <password>连接网络。

待获取IP后连接ftp服务器,如下图所示:

其中IP为实际的IP地址,用户名和密码为 loogg,端口号为21。

test文件夹上传到flash文件系统中。

传输完成后,执行命令reboot重启系统

执行命令persim_start启动柿饼UI,可以看到屏幕上有图像产生,但是显示不对,这是由于参数配置的问题。

按照下图文件修改工程中的屏幕参数配置,本人用的正点原子屏幕的配置参数如下:

重新编译下载:

执行命令 persim_start,可以看到界面已经正常显示了。

如果你的屏幕和本人的不一样,请参考屏幕的面板手册修改上面的参数,这里说明一下LTDC时钟配置:在H7的手册上可以看到

LTDC外设的时钟来自pll3_r_ck,这个时钟由晶振经过PLL3提供,如下图:

board.c中有如下代码,经过计算LTDC的时钟为:25M(晶振)/5*160/24 = 33.3MHz,符合屏幕要求。如果这里计算的频率和你的屏幕不匹配,请按需修改,同时修改lcd_port.h中面板的其他参数。

添加触摸

下载软件包,正点原子这块屏所实用的触摸IC为ft5426,该触摸芯片本人已制作成软件包,所以直接添加就可。

添加添加软件包和touch.c文件,如下图:

使能触摸的初始化代码:

该触摸芯片采用i2c控制,根据引脚设置配置使能i2c1,如下图:

保存,编译下载:

启动柿饼UI,点击按钮,触摸OK

如果你用的触摸IC和本人的不一样,请先根据touch框架移植好触摸驱动,最好做成软件包的方式也方便他人使用,然后在touch.c文件中添加相应的初始化函数,其中柿饼UI的触摸事件上报的代码已经添加不需要修改。

RT-Thread商业官网上线,浏览官网请点击阅读原文

你可以添加微信17775982065为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群!

???????????? 点击阅读原文进入商业官网(请用电脑浏览器打开)

这篇关于柿饼UI在ART-Pi上的移植的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/229423

相关文章

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

Golang GUI入门——andlabs ui

官方不提供gui标准库,只好寻求第三方库。 https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。 第三方gui库 找了好多,也比较了好多,最终决定使用的是还是 https://github.com/andlabs/ui 相信golang gui还会发展的更好,期待更优秀的gui库 由于andlabs