硬汉嵌入式论坛

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

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

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
发表于 2017-10-13 00:51:08 | 显示全部楼层 |阅读模式
说明:
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提高篇例子修改而来,测试注意事项看此贴:链接


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

专题教程下载:
专题教程第1期:基于STM32的硬件RGB888接口实现emWin的快速刷新方案(V1.1).pdf (1.26 MB)

配套的两个例子下载(含MDK和IAR)
V6-910_STemWin提高篇实验_智能家居主界面设计(uCOS-III).7z (6.55 MB, 下载次数: 1865)
V6-911_STemWin提高篇实验_智能家居主界面设计(FreeRTOS).7z (6.66 MB, 下载次数: 4937)

教程目录:
QQ截图20171013012234.png

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



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


回复

使用道具 举报

116

主题

798

回帖

1146

积分

至尊会员

积分
1146
QQ
发表于 2017-10-13 09:09:24 | 显示全部楼层
这个赞, 以后低端显示可以用普通单片机实现了
回复

使用道具 举报

0

主题

38

回帖

38

积分

新手上路

one is enough

积分
38
发表于 2017-10-13 09:16:22 | 显示全部楼层
好东西~mark~~1024~
one is enough
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2017-10-13 20:00:08 | 显示全部楼层
性能是不是下降很多 尤其是屏不能直接支持argb的话
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2017-10-14 00:17:54 | 显示全部楼层

回 myxiaonia 的帖子

myxiaonia:性能是不是下降很多 尤其是屏不能直接支持argb的话 (2017-10-13 20:00) 
颜色格式不统一的话,绘制图片时,差距特别明显。
回复

使用道具 举报

36

主题

2038

回帖

2146

积分

至尊会员

积分
2146
发表于 2017-10-14 00:20:56 | 显示全部楼层
[s:151] [s:151] [s:151]
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2017-10-14 15:47:08 | 显示全部楼层
[s:141]
回复

使用道具 举报

17

主题

177

回帖

233

积分

高级会员

积分
233
QQ
发表于 2017-10-14 17:44:06 | 显示全部楼层
[s:151]
回复

使用道具 举报

56

主题

901

回帖

1069

积分

至尊会员

积分
1069
发表于 2017-10-16 23:35:18 | 显示全部楼层
大赞。
回复

使用道具 举报

0

主题

10

回帖

0

积分

新手上路

积分
0
发表于 2017-10-17 10:05:02 | 显示全部楼层
好东西下载好好地学习学习,谢谢!
回复

使用道具 举报

29

主题

181

回帖

268

积分

高级会员

积分
268
发表于 2017-10-26 10:25:55 | 显示全部楼层
支持一下[s:151] [s:151]
回复

使用道具 举报

3

主题

73

回帖

82

积分

初级会员

积分
82
发表于 2017-12-4 10:10:36 | 显示全部楼层
为啥你跑到8000多万分,我只有4000万不到
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2017-12-4 10:55:31 | 显示全部楼层

回 lifeng5478 的帖子

lifeng5478:为啥你跑到8000多万分,我只有4000万不到 (2017-12-04 10:10) 
降低LTDC时钟,一般取值15MHz即可。高了处理不过来,反倒刷新慢。
回复

使用道具 举报

0

主题

3

回帖

22

积分

新手上路

积分
22
发表于 2018-1-2 15:50:54 | 显示全部楼层
非常感谢您的教程和分享,直接移植您提供的例程测试了一下,发现ARGB 32位色格式刷图确实可以达到20ms的级别,但是RGB 24位色的话却需要100ms,不知道你们有碰到过这种情况吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2018-1-2 16:44:15 | 显示全部楼层
zhiweigengqi 发表于 2018-1-2 15:50
非常感谢您的教程和分享,直接移植您提供的例程测试了一下,发现ARGB 32位色格式刷图确实可以达到20ms的级 ...

务必使用32位色,24位色底层没法做24bpp加速,只有8,16和32才可以。所以搞32位色即可。
回复

使用道具 举报

0

主题

3

回帖

22

积分

新手上路

积分
22
发表于 2018-1-2 18:04:34 | 显示全部楼层
eric2013 发表于 2018-1-2 16:44
务必使用32位色,24位色底层没法做24bpp加速,只有8,16和32才可以。所以搞32位色即可。

好的,明白了,谢谢解答
回复

使用道具 举报

2

主题

134

回帖

140

积分

初级会员

积分
140
发表于 2018-1-6 12:01:21 | 显示全部楼层
我这两天在官方stm32f469i-dicovery做的测试如下   32bitSDRAM  ARGB显示800*480  565的位图需要8ms  如果采用内部sram同样也是8ms   如果不使用ARGB库的话  使用SDRAM绘制需要349ms  采用内部sram需要243ms  差别还是挺大的   所以建议使用ARGB库   另外最新的stemwin库好像直接兼容这两种方式  即RGB和BRG  测试发现使用ARGB库显示这两种格式的位图都可以正常显示   只是RGB格式的位图显示更快

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2018-1-6 12:13:33 | 显示全部楼层
hanzixiangel 发表于 2018-1-6 12:01
我这两天在官方stm32f469i-dicovery做的测试如下   32bitSDRAM  ARGB显示800*480  565的位图需要8ms  如果 ...

1. 不兼容,位图格式与使用RGB或者BGR库无关。
2. 不出意外的话,是官方的底层优化有问题,之前F429的就是bug超多。
回复

使用道具 举报

2

主题

134

回帖

140

积分

初级会员

积分
140
发表于 2018-1-7 10:54:34 | 显示全部楼层
eric2013 发表于 2018-1-6 12:13
1. 不兼容,位图格式与使用RGB或者BGR库无关。
2. 不出意外的话,是官方的底层优化有问题,之前F429的就 ...

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

使用道具 举报

13

主题

24

回帖

63

积分

初级会员

积分
63
发表于 2018-1-7 14:36:22 | 显示全部楼层
。。。不知道哪里配置问题,直接用了你的工程,emwin5.32的库运行正常,一用5.40运行GUI_Init()直接出现硬件错误。
回复

使用道具 举报

13

主题

24

回帖

63

积分

初级会员

积分
63
发表于 2018-1-7 15:20:42 | 显示全部楼层
断点调试发现最后在运行void GUI_X_Config(void)下的->GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);就硬件错误了用的是sdram,啥也不改,5.32,5.28都可以运行,很正常,用5.40的都不行。带os的,优化不优化什么的都试了,那些库最后都会在这个地方出现硬件错误。请教下,这个是什么问题
回复

使用道具 举报

2

主题

134

回帖

140

积分

初级会员

积分
140
发表于 2018-1-7 15:44:39 | 显示全部楼层
eric2013 发表于 2018-1-6 12:13
1. 不兼容,位图格式与使用RGB或者BGR库无关。
2. 不出意外的话,是官方的底层优化有问题,之前F429的就 ...

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 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头文件即可使用。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2018-1-8 00:15:37 | 显示全部楼层
hanzixiangel 发表于 2018-1-7 15:44
经过测试    st官方的stemwin移植的果然有bug   打开存储设备依然会有撕裂感

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

使用道具 举报

2

主题

134

回帖

140

积分

初级会员

积分
140
发表于 2018-1-8 11:09:20 | 显示全部楼层
eric2013 发表于 2018-1-8 00:15
其实不光他们搞的底层有bug,他们整理编译的STemWin相比MDK带的emWin也多几处bug。

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2018-1-8 11:16:33 | 显示全部楼层
hanzixiangel 发表于 2018-1-8 11:09
硬汉大哥  都什么bug  影响使用不?

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

http://www.armbbs.cn/forum.php?m ... 7&highlight=bug
回复

使用道具 举报

56

主题

901

回帖

1069

积分

至尊会员

积分
1069
发表于 2019-4-2 14:10:21 | 显示全部楼层
V7核心板上的FPC40脚  也是 硬件RGB888接口   ??  4.3寸屏也是888?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2019-4-2 14:37:06 | 显示全部楼层
roguebear 发表于 2019-4-2 14:10
V7核心板上的FPC40脚  也是 硬件RGB888接口   ??  4.3寸屏也是888?

都是。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 17:06 , Processed in 0.467149 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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