eric2013 发表于 2017-10-13 00:51:08

【专题教程第1期】基于STM32的硬件RGB888接口实现emWin的快速刷新方案,32位色或24位色效果艳丽

说明:
1. 首先感谢ST终于推出了ARGB格式的emWin库,可谓千呼万唤始出来,使用STM32的硬件RGB888接口刷新图片慢的问题终于得到解决。
2. 这个问题由来已久,是之前为我们的STM32-V6板子制作emWin模板时发现的。V6板子的硬件配置是STM32F429BIT6 + 32位带宽的SDRAM + 硬件RGB888接口。实际测试中发现,将F429配置为16位色的RGB565,刷新800*480分辨率的图片可以做到15ms左右一帧,而测试24位色的RGB888或者32位色的ARGB8888,竟然需要200多ms。后来经过多次测试,才找到根本原因,因为大部分时间都损耗在ARGB和ABGR格式转换上了。使用ARGB格式库后,刷800*480大小的图片可以做到20ms一帧。
3. 近期,ST新发布的STemWin 5.40版本中加入了ARGB格式的库,这个问题得到了解决,本次专题就是为大家讲解如何使用这个库,替换时有很多需要注意的地方。
4. 新版的STemWin5.40头文件使用IAR7.5编译会有多处警告,不用管。另外配套的两个例子是由之前的emWin提高篇例子修改而来,测试注意事项看此贴:链接

static/image/hrline/4.gif
百度云下载:
链接: https://pan.baidu.com/s/1cQFFT4TXeFoKVE4UpLke8A 提取码: 32i5

专题教程下载:
https://www.armbbs.cn/static/image/filetype/pdf.gif 专题教程第1期:基于STM32的硬件RGB888接口实现emWin的快速刷新方案(V1.1).pdf (1.26 MB)

配套的两个例子下载(含MDK和IAR)



教程目录:


使用32位色ARGB8888或者24位色RGB888的好处就是显示效果细腻,看下面效果图:

https://img.anfulai.cn/dz/attachment/forum/pw/Fid_12/12_58_40c3d84b7011188.png?52
https://img.anfulai.cn/dz/attachment/forum/pw/Fid_12/12_58_ef210b44f549ad7.png?54

而使用16位色RGB565就要差不少,特别是梯度色变化和颜色丰富的图片:

https://img.anfulai.cn/dz/attachment/forum/pw/Fid_12/12_58_64276477f142abe.png?33
https://img.anfulai.cn/dz/attachment/forum/pw/Fid_12/12_58_3155a27ea8a8c25.png?32

jcx0324 发表于 2017-10-13 09:09:24

这个赞, 以后低端显示可以用普通单片机实现了

片羽之神 发表于 2017-10-13 09:16:22

好东西~mark~~1024~

myxiaonia 发表于 2017-10-13 20:00:08

性能是不是下降很多 尤其是屏不能直接支持argb的话

eric2013 发表于 2017-10-14 00:17:54

回 myxiaonia 的帖子

myxiaonia:性能是不是下降很多 尤其是屏不能直接支持argb的话 (2017-10-13 20:00) images/back.gif

颜色格式不统一的话,绘制图片时,差距特别明显。

byccc 发表于 2017-10-14 00:20:56

13131 发表于 2017-10-14 15:47:08

yumeng 发表于 2017-10-14 17:44:06

roguebear 发表于 2017-10-16 23:35:18

大赞。

山峡jsw 发表于 2017-10-17 10:05:02

好东西下载好好地学习学习,谢谢!

wcyingdream 发表于 2017-10-26 10:25:55

支持一下

lifeng5478 发表于 2017-12-4 10:10:36

为啥你跑到8000多万分,我只有4000万不到

eric2013 发表于 2017-12-4 10:55:31

回 lifeng5478 的帖子

lifeng5478:为啥你跑到8000多万分,我只有4000万不到 (2017-12-04 10:10) images/back.gif

降低LTDC时钟,一般取值15MHz即可。高了处理不过来,反倒刷新慢。

zhiweigengqi 发表于 2018-1-2 15:50:54

非常感谢您的教程和分享,直接移植您提供的例程测试了一下,发现ARGB 32位色格式刷图确实可以达到20ms的级别,但是RGB 24位色的话却需要100ms,不知道你们有碰到过这种情况吗

eric2013 发表于 2018-1-2 16:44:15

zhiweigengqi 发表于 2018-1-2 15:50
非常感谢您的教程和分享,直接移植您提供的例程测试了一下,发现ARGB 32位色格式刷图确实可以达到20ms的级 ...
务必使用32位色,24位色底层没法做24bpp加速,只有8,16和32才可以。所以搞32位色即可。

zhiweigengqi 发表于 2018-1-2 18:04:34

eric2013 发表于 2018-1-2 16:44
务必使用32位色,24位色底层没法做24bpp加速,只有8,16和32才可以。所以搞32位色即可。

好的,明白了,谢谢解答{:22:}

hanzixiangel 发表于 2018-1-6 12:01:21

我这两天在官方stm32f469i-dicovery做的测试如下   32bitSDRAMARGB显示800*480565的位图需要8ms如果采用内部sram同样也是8ms   如果不使用ARGB库的话使用SDRAM绘制需要349ms采用内部sram需要243ms差别还是挺大的   所以建议使用ARGB库   另外最新的stemwin库好像直接兼容这两种方式即RGB和BRG测试发现使用ARGB库显示这两种格式的位图都可以正常显示   只是RGB格式的位图显示更快

另外还发现一个问题就是使能了存储设备和多缓存   显示图片还是能看到过程特别显示BRG格式问题的时候特别明显显示RGB格式位图的时候也能看到屏幕明显的闪烁和撕裂感目前没有找到原因所在   硬汉大哥能帮忙分析一下吗谢谢

eric2013 发表于 2018-1-6 12:13:33

hanzixiangel 发表于 2018-1-6 12:01
我这两天在官方stm32f469i-dicovery做的测试如下   32bitSDRAMARGB显示800*480565的位图需要8ms如果 ...
1. 不兼容,位图格式与使用RGB或者BGR库无关。
2. 不出意外的话,是官方的底层优化有问题,之前F429的就是bug超多。

hanzixiangel 发表于 2018-1-7 10:54:34

eric2013 发表于 2018-1-6 12:13
1. 不兼容,位图格式与使用RGB或者BGR库无关。
2. 不出意外的话,是官方的底层优化有问题,之前F429的就 ...

嗯嗯今天加载到存储设备测试显示BGR格式的位图为11ms   但是还能明显的看到撕裂感    屏幕一闪而过但是加载速度从原来的349ms提升到11ms    测试RGB格式的位图却反而慢了   不使用存储设备显示需要8ms使用存储设备居然需要13ms   出乎意料之外

ywg121020 发表于 2018-1-7 14:36:22

。。。不知道哪里配置问题,直接用了你的工程,emwin5.32的库运行正常,一用5.40运行GUI_Init()直接出现硬件错误。

ywg121020 发表于 2018-1-7 15:20:42

断点调试发现最后在运行void GUI_X_Config(void)下的->GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);就硬件错误了用的是sdram,啥也不改,5.32,5.28都可以运行,很正常,用5.40的都不行。带os的,优化不优化什么的都试了,那些库最后都会在这个地方出现硬件错误。请教下,这个是什么问题

hanzixiangel 发表于 2018-1-7 15:44:39

eric2013 发表于 2018-1-6 12:13
1. 不兼容,位图格式与使用RGB或者BGR库无关。
2. 不出意外的话,是官方的底层优化有问题,之前F429的就 ...

经过测试    st官方的stemwin移植的果然有bug   打开存储设备依然会有撕裂感

eric2013 发表于 2018-1-8 00:14:18

ywg121020 发表于 2018-1-7 15:20
断点调试发现最后在运行void GUI_X_Config(void)下的->GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);就硬件错 ...

你用的5.32,5.28都是ABGR格式的库,使用5.40务必也使用这个格式的。

直接替换lib库文件和所有inc头文件即可使用。

eric2013 发表于 2018-1-8 00:15:37

hanzixiangel 发表于 2018-1-7 15:44
经过测试    st官方的stemwin移植的果然有bug   打开存储设备依然会有撕裂感

其实不光他们搞的底层有bug,他们整理编译的STemWin相比MDK带的emWin也多几处bug。

hanzixiangel 发表于 2018-1-8 11:09:20

eric2013 发表于 2018-1-8 00:15
其实不光他们搞的底层有bug,他们整理编译的STemWin相比MDK带的emWin也多几处bug。

硬汉大哥都什么bug影响使用不?

eric2013 发表于 2018-1-8 11:16:33

hanzixiangel 发表于 2018-1-8 11:09
硬汉大哥都什么bug影响使用不?

是一些功能性的bug,没事,不影响。之前总结的几个:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=23937&highlight=bug

roguebear 发表于 2019-4-2 14:10:21

V7核心板上的FPC40脚也是 硬件RGB888接口   ??4.3寸屏也是888?

eric2013 发表于 2019-4-2 14:37:06

roguebear 发表于 2019-4-2 14:10
V7核心板上的FPC40脚也是 硬件RGB888接口   ??4.3寸屏也是888?

都是。
页: [1]
查看完整版本: 【专题教程第1期】基于STM32的硬件RGB888接口实现emWin的快速刷新方案,32位色或24位色效果艳丽