art-pi添加lvgl支持包

art-pi 添加 littlevGL2RTT(lvgl) 支持包

前言

体验了一把 rtt-thread studio 之后,发现真的太方便了,rt-thread 真的实在做一个开发者的生态系统,这样后面再进行物联网设备开发时,会大大降低开发难度,支持rt-thread。

硬件说明

  • ART-PI
  • 正点原子4.3 寸LCD显示屏( 800 * 480)

0
00

添加 littlevGL2RTT 支持包

手把手教程

1、使用 rt-thread studio 创建一个 art-pi 的 blink_led 示例工程。

1

创建完成之后,先编译一遍,正常情况下可以直接编译通过。

2

2、添加 LCD驱动 和 LVGL支持包,打开工程目录下的,RT-Thread Setting,点击 更多配置

3

在 硬件配置选项中添加 LCD驱动,勾选 Enable LCD即可,勾选之后,保存工程,可以直接 ctrl + s,保存工程。

4

在软件包选项中添加 littlelvgl2rtt 支持包,请按照图示添加lvgl支持包。

  • 勾选 LittlevGL2RTT
  • 版本好使用 latest
  • LittlevGL2RTT Options 选项中要按照显示屏的参数进行配置,注意像素深度的计算
  • 勾选 LittlevGL2RTT demo example
  • 保存工程

5

3、修改 lcd_port.h文件

6

4、构建工程,没有错误之后,下载工程

下载完成后,显示屏上应该可以正常显示lvgl的示例工程了。

11

添加触摸屏驱动

手把手教程

在工程的 RT-Thread Setting 中进行如下配置。

5、添加 i2c驱动支持

7

6、添加触摸屏驱动 GT9147 支持

软件包 -> peripheral libraries and drivers -> touch drivers(enable) -> GT9147 (enable)

8

配置完成后,保存工程,重新编译项目,下载到开发板上查看效果,查看 i2c驱动是否成功编译的方法,可以直接在 finsh中使用 list_device 命令查看。

msh />list_device
device           type         ref count
-------- -------------------- ----------
lcd      Graphic Device       1
i2c1     I2C Bus              0
uart4    Character Device     2
pin      Miscellaneous Device 0

可以看到,i2c1 已经正确加载了,但是被使用了 0 次,下面就要想办法让 gt9147 驱动使用 i2c1 接口了。

9、添加 gt9147 驱动配置

修改 packages/gt9147-latest/src/gt9147.c文件,增加如下驱动初始化配置代码。

#define GT9147_IRQ_PIN 108
#define GT9147_RST_PIN 51

int rt_hw_gt9147_port(void)
{
    struct rt_touch_config config;
    rt_uint8_t rst;

    rst = GT9147_RST_PIN;
    config.dev_name = "i2c1";
    config.irq_pin.pin  = GT9147_IRQ_PIN;
    config.irq_pin.mode = PIN_MODE_INPUT_PULLDOWN;
    config.user_data = &rst;

    rt_hw_gt9147_init("gt", &config);

    return 0;
}
INIT_DEVICE_EXPORT(rt_hw_gt9147_port);

8、添加 gt9147_sample

packages/gt9147-latest/samples 路径下,找到gt9147_sample.c 文件,将该文件加入到工程的 packages/gt9147-latest/ 目录中,修改该文件,在代码末尾增加如下启动配置。

void touch_init(void)
{
    gt9147_sample("gt",800,480);
}

INIT_APP_EXPORT(touch_init);

9、重新编译工程,并下载到ART-PI 上面。

   ___  ______  _____         ______  _   ______  _____  _____  _____
  / _ \ | ___ \|_   _|        | ___ \(_)  | ___ \/  _  \/  _  \|_   _|
 / /_\ \| |_/ /  | |   ______ | |_/ / _   | |_/ /| | | || | | |  | |
 |  _  ||    /   | |  |______||  __/ | |  | ___ \| | | || | | |  | |
 | | | || |\ \   | |          | |    | |  | |_/ /\ \_/ /\ \_/ /  | |
 \_| |_/\_| \_|  \_/          \_|    |_|  \____/  \___/  \___/   \_/

 Powered by RT-Thread.

[D/drv.sdram] sdram init success, mapped at 0xC0000000, size is 33554432 bytes, data width is 16
[I/I2C] I2C bus [i2c1] registered

 \ | /
- RT -     Thread Operating System
 / | \     4.0.3 build Nov 24 2020
 2006 - 2020 Copyright by rt-thread team
[D/drv.lcd] LTDC init success
[I/touch] rt_touch init success
[I/gt9147] touch device gt9147 init success

id = 9 1 4 7
range_x = 480
range_y = 480
point_num = 5
[littlevgl2rtt] Welcome to the littlevgl2rtt.
[littlevgl2rtt] You can find latest ver from https://github.com/liu2guang/LittlevGL2RTT.
msh />list_device
device           type         ref count
-------- -------------------- ----------
lcd      Graphic Device       1
gt       Touch Device         1
i2c1     I2C Bus              1
uart4    Character Device     2
pin      Miscellaneous Device 0


可以看看到,gt9147已经初始化成功,并且能够识别到 9147 id。

使用 list_device查看设备驱动,已经能够看到 i2c1 驱动已经被使用了,并且也多了一个 gt 的设备,这就是刚刚使用 rt_hw_gt9147_init 初始化的 gt设备。

这个时候如果在触摸屏上用手指触摸,串口上将会打印触摸信息,这也是 gt9147_sample 示例的功能,用来检测屏幕触摸使用。


 \ | /
- RT -     Thread Operating System
 / | \     4.0.3 build Nov 24 2020
 2006 - 2020 Copyright by rt-thread team
[D/drv.lcd] LTDC init success
[I/touch] rt_touch init success
[I/gt9147] touch device gt9147 init success

id = 9 1 4 7
range_x = 480
range_y = 480
point_num = 5
[littlevgl2rtt] Welcome to the littlevgl2rtt.
[littlevgl2rtt] You can find latest ver from https://github.com/liu2guang/LittlevGL2RTT.
msh />
msh />
msh />0 394 392 25197 68
0 394 392 25213 68
0 394 392 25228 68
0 394 392 25244 68
0 394 392 25259 68
0 394 392 25275 68
0 394 392 25290 68
0 394 392 25318 68
0 394 392 25334 68
0 394 392 25349 68
0 395 392 25364 68
0 398 391 25380 68
0 416 388 25408 68
0 421 388 25423 68
0 424 388 25438 68
0 431 387 25466 68
0 437 384 25494 68
0 439 383 25510 68
0 440 382 25525 68
0 441 381 25541 68
0 441 380 25556 68
0 441 380 25584 68
0 441 380 25612 68
0 441 380 25639 68
0 441 379 25654 68

结尾说明

适配完 lvgl 支持包之后,发现使用这个支持包在 ART-PI 上面运行 lvgl的官方示例还是非常卡的,屏幕刷新不流畅,应该是刷屏的一个接口函数写的不是很好导致的,这个后面要优化一下,才能正常使用。

关于触摸屏驱动适配 lvgl 的接口,在 littlevGL2RTT 中,也已经留有了 littlevgl2rtt_send_input_event 接口函数,可以利用触摸驱动事件莱进行触发操作,完成对 lvgl的适配,这个留作后面再详细说明。

工程下载

这个 demo 工程还是非常简单的,推荐一步一步操作,尽量不要下载工程示例,该示例仅留作对比参考使用。
art-pi lvgl示例工程下载链接

参考链接

LittlevGL2RTT 在 ART-PI 上初使用

rt-thread 官方b站视频教程

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘雪冰峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值