打印
[活动]

【APM32F411V Tiny Board测评】 LVGL 提速-篇章1

[复制链接]
217|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 [鑫森淼焱垚] 于 2024-5-30 10:48 编辑

速度瓶颈

前面的章节移植 LVGL 成功,但是刷屏速度很慢,无论是 FreeRTOS 版本还是 Baremetal 版本,速度差不多。所以问题出在哪里呢?
移植 LVGL部分需要实现一个刷屏函数,把 LVGL 内存刷到显示屏上,如下代码所示:

这里调用了 LCD_DrawPoint() 函数,一个点一个点把像素绘制到屏幕上。这个函数实现如下:

其中的 LCD_Address_Set() 函数实现如下,每次绘制一个像素点都会设置像素点的坐标,每一行代码都需要调用 SPI 发送数据,太慢了。


提速方式

想办法减少重复工作,减少 SPI 发送数据次数。还是考虑 LCD_Address_Set() 函数,设定行列地址,直接把 LVGL 需要显示的矩形位置设置一次就行,然后直接疯狂往 LCD GRAM 写数据即可。开干。
增加一个API,这个 API 只在一开始设置矩形坐标,然后疯狂往 GRAM 发送数据。

修改 disp_flush() 调用 LCD_DrawBitmap() 函数,如下图所示


结果

此种填充数组的方式 FPS 能到 25 FPS。
之前画点的方式 FPS 能到 5 FPS。
速度差异挺明显的,现在看着很丝滑。
视频地址:https://www.bilibili.com/video/BV1zx4y1n7sb/?vd_source=8f2bbf56b70c541bec2ea0b9f102ebee

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

75

帖子

0

粉丝