硬汉嵌入式论坛

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

[emWin] 有人用过STM32F429 + emWin吗

[复制链接]

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2014-8-15 11:42:30 | 显示全部楼层 |阅读模式
RT.
最近用STM32F429 + emWin,4.0寸 864*480分辨率的屏,用官方demo的LCDConfig.c文件, 发现显示图片慢得令人发指, 刷一副BMP图片得1秒以上。
试过不用emWin直接裸跑,显示速度是很快的,而且STM32F429的性能应该说不至于刷个图片就这么慢。

分析了LCDConfig.c文件, 用的 Driver是    #define COLOR_CONVERSION_0 GUICC_M8888I          #define DISPLAY_DRIVER_0   GUIDRV_LIN_32, 我在想是不是因为Driver效率太低了,难道要自己写吗?


不知道有没有人用过,或者有头绪的,帮忙分析一下。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107157
QQ
发表于 2014-8-15 13:17:09 | 显示全部楼层
没有参考下官方的那个驱动吗,官方有相关驱动的。看你的情况应该是emWin底层驱动接口没有配置好
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2014-8-15 13:35:49 | 显示全部楼层
我就是用的ST 官方那个驱动,里面有一些DMA2D_CopyBuffer、DMA2D_FillBuffer之类的函数,把整个LCDConfig.c里面的函数都看了,对于DMA2D的使用已经很极致了,都用的寄存器操作。 不过我发现DrawBmp 、GUI_DispString等函数根本没有调用这些函数,头疼的地方是也看不到这些函数是怎么实现的,按道理改写VRAM里面的数据就行了,不至于这么慢的吧。
回复

使用道具 举报

13

主题

87

回帖

126

积分

初级会员

积分
126
发表于 2014-8-16 09:07:27 | 显示全部楼层
官方使用了多缓冲
回复

使用道具 举报

13

主题

87

回帖

126

积分

初级会员

积分
126
发表于 2014-8-16 09:09:58 | 显示全部楼层
我建议楼主用16位色
回复

使用道具 举报

5

主题

201

回帖

216

积分

高级会员

积分
216
发表于 2014-8-16 10:21:01 | 显示全部楼层
这么大的分辨率。如果图片是从SD卡里面读出来的。读取图片本身就需要不少时间的吧。所以要1秒钟也应该正常。没有缓冲的不都是这样吗?
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2014-8-18 09:53:39 | 显示全部楼层

回 honami520 的帖子

honami520:这么大的分辨率。如果图片是从SD卡里面读出来的。读取图片本身就需要不少时间的吧。所以要1秒钟也应该正常。没有缓冲的不都是这样吗? (2014-08-16 10:21) 
数据是先读到SDRAM里面的,我试过不用GUI,直接用HAL驱动去显示,速度挺快的。  在试这个的时候发现一个问题就是,使用GUI的显示图片的时候,LTDC的Layer格式要设置为ARGB8888才能正常显示,而我直接把图片数据读出来使用HAL驱动显示的时候,必须要RGB888显示才正常。 感觉GUI的DrawBmp函数对数据做了转换。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2014-8-18 09:54:28 | 显示全部楼层

回 abcdotaabc 的帖子

abcdotaabc:我建议楼主用16位色  (2014-08-16 09:09) 
颜色和分辨率都是为了“高大上”,如果用低分辨率或者颜色,显示效果就没那么好了,降低产品档次
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2014-8-18 09:56:50 | 显示全部楼层

回 abcdotaabc 的帖子

abcdotaabc:官方使用了多缓冲   (2014-08-16 09:07) 
使用多缓冲确实是看不到图片耍的过程,GUI_MULTIBUF_End的时候图片直接刷出来,但是现在问题就是DrawBmp这个函数本身耗时太久,使用缓冲的时候对应的填充缓冲也会很久,所以想显示一个动画是基本不可能。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2014-8-18 10:43:03 | 显示全部楼层
我想到一个可能是,DrawBmp这样的函数花了很多时间把图片得RGB数据转成ARGB。 但是感觉这样也有点说不通的样子,因为这些都是库没得改,难道429的性能+emWin是没办法做到24位864*480的屏流程的刷屏播放动画么
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2014-8-19 09:09:26 | 显示全部楼层
请问你用的是LCDConf_Lin_Template.c这个驱动吗?
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2014-8-19 11:42:52 | 显示全部楼层

回 xiaobao5248 的帖子

xiaobao5248:请问你用的是LCDConf_Lin_Template.c这个驱动吗? (2014-08-19 09:09) 
是ST官方的429 discover板子的demo的驱动,我看了,跟KEIL的安装目录下的 \\ARM\\Pack\\Keil\\MDK-Middleware\\6.0.0\\emWin\\Sample\\LCDConf\\GUIDRV_Lin\\STM32F429里面的LCDConfig文件基本上是一样的,只是一个用的库,一个用的CUBE而已。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2014-8-19 11:43:52 | 显示全部楼层

回 hiqrf3 的帖子

hiqrf3:是ST官方的429 discover板子的demo的驱动,我看了,跟KEIL的安装目录下的 \\ARM\\Pack\\Keil\\MDK-Middleware\\6.0.0\\emWin\\Sample\\LCDConf\\GUIDRV_Lin\\STM32F429里面的LCDConfig文件基本上是一样的,只是一个用的库,一个用的CUBE而已。 (2014-08-19 11:42) 
加上我也详细看了这里面的函数,觉得没什么问题,而且KEIL的安装目录里面也这么给,所以就不太怀疑是驱动有问题。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2014-8-22 16:20:18 | 显示全部楼层
我用的是#define COLOR_CONVERSION_0 GUICC_M888         #define DISPLAY_DRIVER_0   GUIDRV_LIN_24,可以用,不过因为外存用的nand,文件系统没做好,还没试bmp显示。
另外我怎么没看到那个DMA2D在哪里配置使用?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 06:32 , Processed in 0.195501 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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