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玩起来吧!
保时正在加快其电动汽车的发展步伐
SIM卡座三选二合一的结构是怎样的
电容检测电路配置,如何处理低频和高频噪声?
一文详解EMI的传播过程
智能开关双控怎么接线_智能开关与传统开关有什么区别
RT-Thread下LPC55S69的LVGL移植适配
中国联通康楠:“新基建”政策下数据成关键生产要素
跑马灯实验用汇编语言和C51语言做出的不同效果
可调电容盒 可调电容 ATCDB12
2022年云计算全球市场规模将超过2700亿美元
贸泽提供品类丰富的Vishay汽车级产品
基于MK60和TSL1401的汽车停车位停车报警装置的设计
扩大碳化硅晶圆供应
诺基亚P1终于爆发!这才是王者该有的配置,华为P10小米6恐难敌它
浅析负电压电路设计解决方案
劳动者分享公司!华为股权8500人共同拥有 任正非仅占1.01%
谷歌的下一代Android P系统将会被命名为Pie
怎样在Project64中使用USB控制器
基于EDFA模块实现高精度、宽范围的温控电路设计
浅谈激光加工技术在手机摄像头模组中的应用