野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19496|回复: 2

有谁知道emwin多重缓冲实现机制?

[复制链接]
发表于 2019-7-31 11:16:50 | 显示全部楼层 |阅读模式
最近我自己在做一个虚拟仪表项目时,遇到一个需要使用虚拟指针,而且该指针不是绘制的那种,是仿真的指针。项目要求指针旋转要快而且要流畅,一开始我直接在屏上绘制旋转的指针,发现指针动起来后撕裂的厉害(旋转可达到190多帧,但屏幕刷新率只有60Hz,因此把每一帧都在屏上绘制时会有撕裂)。这时我想到了emwin的多缓冲技术,想借鉴一下,但又不是很清楚emwin是怎么实现多重缓冲的,会不会降低我刷屏速度或增加CPU性能消耗,我对emwin的实现机理做了如下猜测:1、每次固定在一个缓冲区进行绘制,绘制结束后在帧同步时把缓冲区所有数据直接拷贝到显示缓冲区。这样只需要2个缓冲区。但耗费了拷贝时间,因此刷屏速度肯定变慢。
2、每次在一个非显示缓冲区进行绘制,绘制结束后在帧同步时把绘制好的显示缓冲区设置为显示缓冲区,这样省去了拷贝时间,但有以下几个问题:
-1)要是我的MCU不支持切换显存怎么办,比如直接就是8080接口TFT,最终显示缓存就是TFT自己,那是不是就不能用缓冲技术,或者只能用方法1,这样多重缓冲必然增加MCU消耗,而且压根没必要三缓冲。
-2)退一步讲,MCU支持切换显存,但这些显存内容如何保持同步,难道每次切换一个显存都是在新的显存中重绘所有东西吗?这样岂不是增加了MCU运行时间?
-3)emwin貌似没有哪是配置是否支持显存切换的,那么为了兼容性极有可能是使用方法1呀,不然如何适配各种显示设备?毕竟不是所有MCU都支持显存切换。
希望有GUI底层设计经验的大神指点迷津,其实我就是想知道一点,使用缓冲技术后,emwin的刷屏速度是不是会明显降低,因为按我的想法看的话,是肯定会降低的,而且应该降低不少才对,增加了MCU额外开销,这也是我一直不敢用emwin的主要原因。

回复

使用道具 举报

发表于 2019-7-31 19:46:57 | 显示全部楼层
帮顶
回复

使用道具 举报

发表于 2019-11-1 18:36:33 | 显示全部楼层
emWin的多帧缓冲机制跟你说的第2种比较类似:
绘制工作全部在非显示缓冲区中完成,当LCD垂直同步信号VSYNC出现时,显存地址和缓冲区地址交换,把LCD显存区地址切换到缓冲区地址使之变成新的显存,原来的显存就变成下一帧缓冲区。
在F429上使用DMA2D+LTDC帧结束中断来加速和管理多帧缓冲,对刷屏速度有影响,但是很小。

具体可以参考《emWIN5.12中文手册》

我的理解是8080接口用不了多缓冲
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 21:25 , Processed in 0.039607 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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