发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
打印
[活动]

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

[复制链接]
1261|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 [鑫森淼焱垚] 于 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

使用特权

评论回复

打赏榜单

Gfan 打赏了 50.00 元 2024-07-17
理由:APM32F411V Tiny测评活动优质测评帖

沙发
星辰大海不退缩| | 2024-6-22 20:47 | 只看该作者
移植 LVGL部分需要实现一个刷屏函数,把 LVGL 内存刷到显示屏上

使用特权

评论回复
板凳
linyu0395| | 2025-5-14 13:15 | 只看该作者
你这样子还是慢  spi必须结合DMA   

使用特权

评论回复
地板
逆鳞风暴| | 2025-5-15 10:16 | 只看该作者
这个提速效果确实很明显,25 FPS相比5 FPS,用户体验提升了一个档次。视频里的显示效果看起来非常流畅。

使用特权

评论回复
5
和谐智者| | 2025-5-16 23:44 | 只看该作者
这么优秀的MCU都领先我一年玩得这么好了!
羡慕啊

使用特权

评论回复
发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

118

帖子

0

粉丝