硬汉嵌入式论坛

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

[GUI] 项目上用到LCD+emWin方案,屏幕偶尔会有一下撕裂感

  [复制链接]

27

主题

97

回帖

178

积分

初级会员

积分
178
发表于 2024-12-9 11:22:56 | 显示全部楼层 |阅读模式
LCD分辨率为1280x800,颜色格式RGB565,屏幕显存用的还是4M,开启了三缓存、冲模式,但是偶尔还是有一下屏幕闪屏,撕裂,请教一下可能是哪里有问题,谢谢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-9 15:48:21 | 显示全部楼层
这个撕裂是界面更新内容或者切换界面的时候撕裂,还是静态页面的时候撕裂
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-9 17:26:06 | 显示全部楼层
eric2013 发表于 2024-12-9 15:48
这个撕裂是界面更新内容或者切换界面的时候撕裂,还是静态页面的时候撕裂

静态不动的时候,但是emWin界面是实时刷新的,上面有时间显示,1S刷新一次时间
回复

使用道具 举报

3

主题

422

回帖

431

积分

高级会员

积分
431
发表于 2024-12-9 22:16:04 | 显示全部楼层
你用的是带显存的LCM吧?这种屏撕裂感无解,因为没有同步机制,它内部的GARAM是双口RAM,一头从SPI/并口进数据,一头出数据到屏幕。进出口没有同步机制。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-10 07:54:08 | 显示全部楼层
哼哼唧唧2022 发表于 2024-12-9 17:26
静态不动的时候,但是emWin界面是实时刷新的,上面有时间显示,1S刷新一次时间

看下是楼上坛友说的问题不。你这个屏是自带的外置显存? 还是基于垂直消隐的三缓冲。
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-10 09:45:19 | 显示全部楼层
glory 发表于 2024-12-9 22:16
你用的是带显存的LCM吧?这种屏撕裂感无解,因为没有同步机制,它内部的GARAM是双口RAM,一头从SPI/并口进 ...

用的是RGB屏幕,用的是惠勤致远的10.1寸,分辨率1280x800的屏幕,不带显存的
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-10 09:47:47 | 显示全部楼层
eric2013 发表于 2024-12-10 07:54
看下是楼上坛友说的问题不。你这个屏是自带的外置显存? 还是基于垂直消隐的三缓冲。

显存是SDRAM,基于垂直消隐的三缓冲,每层分配了4M内存,共两层,加载的字库大小10M,SDRAM大小32M
回复

使用道具 举报

0

主题

22

回帖

22

积分

新手上路

积分
22
发表于 2024-12-10 16:14:47 | 显示全部楼层
楼主可以改单缓冲试试,如果可以我再说说我的理解。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-11 08:24:52 | 显示全部楼层
哼哼唧唧2022 发表于 2024-12-10 09:47
显存是SDRAM,基于垂直消隐的三缓冲,每层分配了4M内存,共两层,加载的字库大小10M,SDRAM大小32M

“每层分配了4M内存,共两层” 意思是你开了双图层吗。那你的空间大小没有开够。

1280*800*2 *3 =6M,一个图层的三缓冲就需要6M的空间。
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-11 09:09:35 | 显示全部楼层
eric2013 发表于 2024-12-11 08:24
“每层分配了4M内存,共两层” 意思是你开了双图层吗。那你的空间大小没有开够。

1280*800*2 *3 =6M, ...

好的,谢谢硬汉哥,我一开始改了每层6M,但是程序就卡死了,就先把这个放下了,我再研究研究
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-12 09:24:17 | 显示全部楼层
哼哼唧唧2022 发表于 2024-12-11 09:09
好的,谢谢硬汉哥,我一开始改了每层6M,但是程序就卡死了,就先把这个放下了,我再研究研究

还有就是最好用单图层,双图层非常耗性能。
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-30 11:35:51 | 显示全部楼层
eric2013 发表于 2024-12-12 09:24
还有就是最好用单图层,双图层非常耗性能。

硬汉哥,H743驱动1280x800屏幕,目前正常不会有问题,就是偶尔会闪屏一下,软件软件这边我能想到的都想到了,有没有可能硬件有问题呢?第一次遇见这种情况
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-31 06:32:03 | 显示全部楼层
哼哼唧唧2022 发表于 2024-12-30 11:35
硬汉哥,H743驱动1280x800屏幕,目前正常不会有问题,就是偶尔会闪屏一下,软件软件这边我能想到的都想到 ...

仅显示背景图层,是否会闪屏,这个有测试过没。
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-31 08:37:06 | 显示全部楼层
eric2013 发表于 2024-12-31 06:32
仅显示背景图层,是否会闪屏,这个有测试过没。

昨天突然想到了一个地方,就是大批量操作SDRAM时要禁止FMC_NORSRAM_DEVICE的四个BANK,之前注意过这个问题,但是应该是之前屏幕参数配置不正确,导致闪屏没解决,所以后来就没注意过这个问题
        /* 大批量操作SDRAM,不使用时需要禁止这4个BANK,否则会导致屏幕闪屏 */
//        __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK1);
//        __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK2);
//        __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK3);
//        __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK4);
将这4行打开,运行了一两个小时,目前没有发现闪屏情况
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-31 08:39:49 | 显示全部楼层
eric2013 发表于 2024-12-31 06:32
仅显示背景图层,是否会闪屏,这个有测试过没。

这个没有闪屏,后来硬件上我也改过一点,具体是纯软件问题还是硬件问题我测试确定完毕后我回复到帖子里面
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2024-12-31 08:42:04 | 显示全部楼层
xxc 发表于 2024-12-10 16:14
楼主可以改单缓冲试试,如果可以我再说说我的理解。

单缓冲我试过,分辨率有点大,单缓冲刷屏体验很不好,界面切换有明显的撕裂感,同样会导致闪屏,问题好像出在了SDRAM这块
回复

使用道具 举报

0

主题

22

回帖

22

积分

新手上路

积分
22
发表于 2024-12-31 10:47:32 | 显示全部楼层
哼哼唧唧2022 发表于 2024-12-31 08:42
单缓冲我试过,分辨率有点大,单缓冲刷屏体验很不好,界面切换有明显的撕裂感,同样会导致闪屏,问题好像 ...

是的,就是sdram
lcd控制器在把sdram的缓存读取刷新lcd去显示的时候,如果cpu对sdram写入就会闪屏
我理解是cpu和lcd控制器对sdram总线存在竞争,破坏了lcd控制器刷屏显示的时许
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-1-4 15:27:01 | 显示全部楼层
撕裂感原因是因为没有同步机制导致的,就是屏幕在显示当前帧的时候,CPU又绘制新的帧,那么就会错位。H743不太了解,你可以研究研究是否有VSYNC之类的中断或者触发机制,准备双缓冲,每次在VSYNC事件发生时切换显存,或者拷贝显存内容。
回复

使用道具 举报

6

主题

50

回帖

68

积分

初级会员

积分
68
发表于 2025-1-8 16:57:12 | 显示全部楼层
我也碰到了这个问题,过几秒就轻微跳动一下,之前做了10块样板都正常,这次做了小批量就出现这样的情况,也不知道和H7有没有关系,另外发现我如果停止串口收发数据之后会正常(中断方式),不知道是不是频繁进中断导致的。
回复

使用道具 举报

6

主题

50

回帖

68

积分

初级会员

积分
68
发表于 2025-1-8 17:29:17 | 显示全部楼层
zouw96 发表于 2025-1-8 16:57
我也碰到了这个问题,过几秒就轻微跳动一下,之前做了10块样板都正常,这次做了小批量就出现这样的情况,也 ...

和中断没有关系,不发送数据也会出现
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-1-9 06:46:36 | 显示全部楼层
zouw96 发表于 2025-1-8 16:57
我也碰到了这个问题,过几秒就轻微跳动一下,之前做了10块样板都正常,这次做了小批量就出现这样的情况,也 ...

注意下这个问题

STM32H7驱动LCD抖屏,另藏玄机,保证你想不到^_^
https://www.armbbs.cn/forum.php? ... 5139&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

6

主题

50

回帖

68

积分

初级会员

积分
68
发表于 2025-1-9 08:31:42 | 显示全部楼层
eric2013 发表于 2025-1-9 06:46
注意下这个问题

STM32H7驱动LCD抖屏,另藏玄机,保证你想不到^_^

这个之前也加上过了。昨天我把LTDC的刷新率加大了之后正常了,有碰到同样问题的可以调整一下这个刷新率试试。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-1-10 07:10:41 | 显示全部楼层
zouw96 发表于 2025-1-9 08:31
这个之前也加上过了。昨天我把LTDC的刷新率加大了之后正常了,有碰到同样问题的可以调整一下这个刷新率试 ...

对,LTDC时钟也影响这个。
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2025-1-10 09:36:22 | 显示全部楼层
哼哼唧唧2022 发表于 2024-12-31 08:39
这个没有闪屏,后来硬件上我也改过一点,具体是纯软件问题还是硬件问题我测试确定完毕后我回复到帖子里面

确实是软件问题,需要禁止那4个BANK,还有一个问题就是1280X800的屏幕用的是RGB转LVDS的,这个按道理来说,你需要下电后,再上电才是正常流程,不然你更新程序不下电,同样会有闪屏问题,这个容易引起误判是软件问题,实际是屏幕问题
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2025-1-10 09:38:13 | 显示全部楼层
zouw96 发表于 2025-1-8 16:57
我也碰到了这个问题,过几秒就轻微跳动一下,之前做了10块样板都正常,这次做了小批量就出现这样的情况,也 ...

如果同样是1280x800的屏幕,可以参考一下上面说了个地方,我之前也是同样的问题
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2025-1-10 09:39:32 | 显示全部楼层
eric2013 发表于 2025-1-9 06:46
注意下这个问题

STM32H7驱动LCD抖屏,另藏玄机,保证你想不到^_^

就是这个问题
回复

使用道具 举报

6

主题

50

回帖

68

积分

初级会员

积分
68
发表于 2025-1-10 21:03:09 | 显示全部楼层
哼哼唧唧2022 发表于 2025-1-10 09:38
如果同样是1280x800的屏幕,可以参考一下上面说了个地方,我之前也是同样的问题

我用了1366*768的屏,就是界面一复杂就慢,没什么好办法,1280*800速度咋样
回复

使用道具 举报

27

主题

97

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2025-1-12 18:42:07 | 显示全部楼层
zouw96 发表于 2025-1-10 21:03
我用了1366*768的屏,就是界面一复杂就慢,没什么好办法,1280*800速度咋样

速度挺快的,刷新没有撕裂感
回复

使用道具 举报

6

主题

50

回帖

68

积分

初级会员

积分
68
发表于 2025-1-14 13:31:56 | 显示全部楼层
哼哼唧唧2022 发表于 2025-1-12 18:42
速度挺快的,刷新没有撕裂感

我现在这个就透明图标一多,就会比较慢,点击会有明显延后。主要看sdram的带宽不够。gui计算透明估计占用sdram挺多就开始变得慢了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 06:03 , Processed in 0.502563 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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