直播回看:https://www.bilibili.com/vide...
说是移植,实际上是添加柿饼库到工程,并完成LCD驱动和触摸驱动的对接,其中LTDC
驱动SDK
中已经完成了移植,RGB屏
的移植主要就是时钟频率和屏幕面板参数的修改。对于其他屏幕则需要按照LCD设备框架的要求完成对接。
所以说,只要完成了对LCD
设备框架和touch
设备框架的对接,移植过程就完成了90%。
开源地址:https://gitee.com/liuduanfei/...
说明
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。
- 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\_SRC
bool "Using Persimmon Library"
select RT\_USING\_CPLUSPLUS
select PKG\_USING\_FASTLZ
select PKG\_USING\_EZXML
select RT\_USING\_I2C
default 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的触摸事件上报的代码已经添加不需要修改。
推荐阅读
【嵌入式AI周报20210430期】Xilinx推出K26视觉AI核心板
【20210423期AI简报】RT-Thread AI 套件开源、X86架构大师“游向”RISC-V
【20210416期AI简报】微软分层ViT模型开源、 DIY一只“眼睛”摄像头
原文链接:RTThread物联网操作系统
作者: liuduanfei