硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1059|回复: 5
收起左侧

[技术讨论] stm32g070系列跑stemwin522版本,控件刷新速度慢

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2024-12-9 13:29:30 | 显示全部楼层 |阅读模式
使用stm32g070硬件spi驱动ST7789,用DMA自己刷屏刷块速度很块,但是移植STemin后控件刷新有明显的“拉窗帘”,怎么办,求指教
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-9 15:59:28 | 显示全部楼层
GUI_Init函数前调用窗口使能存储设备API没,这个函数比较重要。

如果这个也调用了,你这个驱动优化还不行,控件刷新最重要的是16bpp的接口函数要优化。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-12-9 16:29:29 | 显示全部楼层
eric2013 发表于 2024-12-9 15:59
GUI_Init函数前调用窗口使能存储设备API没,这个函数比较重要。

如果这个也调用了,你这个驱动优化还不 ...

调用了,哥您有hal库硬件spi驱动优化的例程吗,我目前是直接单个像素点传输的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-10 08:11:01 | 显示全部楼层
xinghao 发表于 2024-12-9 16:29
调用了,哥您有hal库硬件spi驱动优化的例程吗,我目前是直接单个像素点传输的

我还真弄过,不过没有Demo可以分享了,不知道在那个电脑上了。

你当前的这个情况,优化下底层接口的16bpp函数即可。就把你DMA刷块的实现放在这里改成刷缓冲就行。
回复

使用道具 举报

3

主题

432

回帖

441

积分

高级会员

积分
441
发表于 2024-12-10 16:32:43 | 显示全部楼层
本帖最后由 glory 于 2024-12-10 16:33 编辑

对于SPI接口的移植,提高性能关键是避免单个像素传输。因为每个像素如果都需要启动一次SPI传输,包括设置窗口,传输数据,那么效率一下降低到15%,可能更低。
可以考虑只用图块传输,也就是启动一次SPI传输,只设置一次窗口,后续全部是连续的像素数据。这在emwin里,就要求启用memdev。emwin会把所有刷新内容分块渲染到memdev,
然后一次性把这个分块传输到屏幕,接着在渲染下一块区域然后再传输……
如果理解以上过程,你就知道性能损失在哪里,以后就知道如何优化了。
回复

使用道具 举报

3

主题

432

回帖

441

积分

高级会员

积分
441
发表于 2024-12-10 16:39:14 | 显示全部楼层
在lvgl中,相当于memdev本来就启用而且必须启用。lvgl的显示接口,本来就是图块传输的,根本不存在单个像素绘制的接口。
而且lvgl还支持双图块缓存,这两个图块缓存形成一个“渲染-传输”的流水线,从而提高帧率。emwin目前无此功能。
真希望segger能加入这个功能!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 02:46 , Processed in 0.040889 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表