硬汉嵌入式论坛

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

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

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
发表于 2021-3-18 11:04:18 | 显示全部楼层 |阅读模式
问题说明:

这个问题只有在大批量对SDRAM操作时才容易发现,特别是大家自己做的板子仅使用了SDRAM,且将其作为LCD显存的同时,还使用SDRAM狂刷图。

平时一般使用有没有这个问题,此时就要考虑这个坑了,巨坑。


解决办法:

经过昨晚不断的调试,锁定关键所在,解决办法如下:

如果大家的程序中没有使用FMC NE1到NE4这个BANK,而仅使用了SDRAM和NAND(特别是仅使用了SDRAM),将NE1到NE4这4个驱动禁止即可解决。

  1. __HAL_RCC_FMC_CLK_ENABLE();
  2. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK1);
  3. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK2);
  4. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK3);
  5. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK4);
复制代码


原因应该是SDRAM以外开启了某些东西,导致NE1到NE4抽抽了,干扰了SDRAM的正常执行

所以把他们关闭了就可以了






评分

参与人数 1金币 +2 收起 理由
Ghanfu + 2 很给力!

查看全部评分

回复

使用道具 举报

6

主题

216

回帖

234

积分

高级会员

积分
234
发表于 2021-3-18 11:09:11 | 显示全部楼层
一年以前发现的问题,今天硬汉大佬解决了,非常感谢!
回复

使用道具 举报

5

主题

22

回帖

37

积分

新手上路

积分
37
发表于 2021-3-18 12:44:41 | 显示全部楼层
四个bank都disable了,那个nand flash还可以用啊?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2021-3-18 13:02:24 | 显示全部楼层
shuangbang 发表于 2021-3-18 12:44
四个bank都disable了,那个nand flash还可以用啊?

用到那个,打开那个就可以了。
回复

使用道具 举报

0

主题

84

回帖

84

积分

初级会员

积分
84
发表于 2021-3-20 08:38:39 | 显示全部楼层
原来这个问题导致。。。
回复

使用道具 举报

14

主题

109

回帖

151

积分

初级会员

积分
151
发表于 2021-3-20 09:11:58 | 显示全部楼层
这个问题的确隐藏的够深的,一般人还真不容易找到
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2021-3-22 12:08:23 | 显示全部楼层
硬汉大佬,方便发一个参考工程出来看看吗,我想看下狂刷SDRAM导致的抖屏和LTDC时钟过高导致的抖屏有什么不一样,最近在搞这个,比较感兴趣,不知道方便不
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2021-3-23 08:34:30 | 显示全部楼层
只为更强 发表于 2021-3-22 12:08
硬汉大佬,方便发一个参考工程出来看看吗,我想看下狂刷SDRAM导致的抖屏和LTDC时钟过高导致的抖屏有什么不 ...

测试方法是论坛置顶帖V7网盘下载一个emWin例子,然后使用第2版emWin教程中存储设备加载位图,并使用存储设备方法狂刷位图方式就可以

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

2

主题

24

回帖

30

积分

新手上路

积分
30
发表于 2021-3-25 15:10:04 | 显示全部楼层
之前都发现抖屏的问题,一直以为是排线的问题。禁用了NE1到NE4之后,果然就没有出现抖屏了。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
发表于 2021-12-30 15:50:42 | 显示全部楼层
之前我还怀疑是SDRAM和RGB屏幕驱动时序冲突了。

试了下果然管用。
不过我还发现使能FMC时钟代码,再多写一次也可以达到屏幕不闪的效果

  1. __HAL_RCC_FMC_CLK_ENABLE();
复制代码



也就是说下面两段代码等效,出来的结果屏幕都不会闪烁了。
  1. __HAL_RCC_FMC_CLK_ENABLE();
  2. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK1);
  3. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK2);
  4. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK3);
  5. __FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK4);
复制代码


  1. __HAL_RCC_FMC_CLK_ENABLE();
  2. __HAL_RCC_FMC_CLK_ENABLE();
复制代码


回复

使用道具 举报

2

主题

15

回帖

21

积分

新手上路

积分
21
发表于 2022-1-1 09:14:20 | 显示全部楼层
logo 发表于 2021-12-30 15:50
之前我还怀疑是SDRAM和RGB屏幕驱动时序冲突了。

试了下果然管用。

非常具有探索精神啊,我两种方式都试了  还真是都可以哈哈
半个月了  今天元旦,突然就这么解决了 ,算是元旦礼物吗??  哈哈
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
发表于 2022-12-6 09:53:24 | 显示全部楼层
加上这段代码之后,正常运行时不抖了,但是开机上电的时候先抖几下,然后我把这四行失能NE BANK的语句扔到FMC初始化(开启FMC)之前了,就没有出现亮屏后先抖动的问题了
回复

使用道具 举报

90

主题

87

回帖

357

积分

高级会员

积分
357
发表于 2023-5-12 18:07:27 | 显示全部楼层
大佬们,我遇到个上传网络数据会触发屏幕抖动,不知道有没有类似的问题。如果没有发送网络数据,屏幕是正常的。大佬帮个忙分析一下哈,没有头绪。
用的是lwip +emwin  stm32F429
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2023-5-13 01:49:45 | 显示全部楼层
wen 发表于 2023-5-12 18:07
大佬们,我遇到个上传网络数据会触发屏幕抖动,不知道有没有类似的问题。如果没有发送网络数据,屏幕是正常 ...

这个不正常,优化下你的LTDC底层和SDRAM配置。
回复

使用道具 举报

9

主题

31

回帖

58

积分

初级会员

积分
58
发表于 2023-5-26 14:31:48 | 显示全部楼层
楼主,抖屏是什么概念呢,我确实遇到了一些显示的问题。现象总结起来像显示的行列位置刷错了。有些图片的左边刷在右边,右边刷在左边。找原因似乎是mcu大批量操作sdram。让它消失有时在没跑的函数上加个printf都可以???
我一度怀疑是硬件问题,后面又怀疑是野指针。
回复

使用道具 举报

34

主题

111

回帖

213

积分

高级会员

程序小白

积分
213
QQ
发表于 2023-7-11 22:57:16 | 显示全部楼层
楼主   H750驱动4.3寸屏正常静态刷新没有问题,动态刷新数据时 偶尔会出现 白色横杠 该如何解决呢?    刷数据的 间隔越短,出现的几率越大? 。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2023-7-12 08:23:24 | 显示全部楼层
清风徐来 发表于 2023-7-11 22:57
楼主   H750驱动4.3寸屏正常静态刷新没有问题,动态刷新数据时 偶尔会出现 白色横杠 该如何解决呢?    刷 ...

排查下是不是Cache问题导致的。
回复

使用道具 举报

4

主题

2

回帖

14

积分

新手上路

积分
14
发表于 2023-10-24 17:47:35 | 显示全部楼层
试过了很好用  大佬救我狗命
回复

使用道具 举报

7

主题

49

回帖

75

积分

初级会员

积分
75
发表于 2023-11-11 19:34:02 | 显示全部楼层
LCD直接进入GUIX屏幕不闪,但是如果在初始化阶段先使用bsp_tft_lcd.c里的函数显示一些文字信息或二维图,然后再进入GUIX就会闪屏,用楼主的方法也能解决,厉害了!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
 楼主| 发表于 2023-11-12 10:29:19 | 显示全部楼层
wling597074509 发表于 2023-11-11 19:34
LCD直接进入GUIX屏幕不闪,但是如果在初始化阶段先使用bsp_tft_lcd.c里的函数显示一些文字信息或二维图,然 ...

这个bug隐藏的有点深,之前花了不少时间才发现。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 14:46 , Processed in 0.340577 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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