嵌入式技术
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玩起来吧!
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !