打印
[STM32F7]

STM32F7 LCD ARGB8888显示抖动问题

[复制链接]
4363|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sjpu2014|  楼主 | 2017-5-3 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大侠:我用STM32F767BI驱动800*600的LCD,采用ARGB8888模式驱动,但CPU的任何中断都会引起LCD显示左右抖动,就像是中断影响到了LCD的扫描。关掉中断,显示就不受影响了。将驱动模式切换到RGB565模式,显示便不受中断的影响了。请教在ARGB8888模式如何弄,能让LCD显示不受影响?
沙发
dsyq| | 2017-5-3 12:00 | 只看该作者
帮顶。

使用特权

评论回复
板凳
mmuuss586| | 2017-5-3 12:51 | 只看该作者
你用示波器看下,屏的接口时序一直在干嘛;

抖屏应该是重新刷了下吧,程序中断时间很短,应该不会影响的;
查下程序,这个模式的BUG

使用特权

评论回复
地板
sjpu2014|  楼主 | 2017-5-3 13:05 | 只看该作者
我降低LCD时钟频率,情况就好很多。在降低该频率的情况下,提高CPU中断的频率(systick中断),LCD受影响的程度就加大。抖动的情况是图像水平方向整块的左右晃动。如果ARGB8888模式驱动有BUG,在没有中断的情况下也应该有问题,而不是有中断就晃动,因为中断中只是进行任务切换,而当前就建立了一个任务,而且在运行while(1)循环。

使用特权

评论回复
5
wozaihuayu| | 2017-5-3 14:48 | 只看该作者
应该就是LCD时钟问题,我之前做的STM32F746的也抖过,我改成下面就好了

/* LCD clock configuration */
    /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
    /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 120 Mhz */
    /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 120/2 = 60 Mhz */
    /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_2 = 60/2 = 30 Mhz */

    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
    PeriphClkInitStruct.PLLSAI.PLLSAIN = 80;//120;
    PeriphClkInitStruct.PLLSAI.PLLSAIR = 2;
    PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2;
    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);

    /* Initialize the LCD pixel width and pixel height */
    hltdc.LayerCfg->ImageWidth  = AT800480_WIDTH;
    hltdc.LayerCfg->ImageHeight = AT800480_HEIGHT;

我这是使用了STemwin 屏幕800*480的,看看对你有没有帮助

使用特权

评论回复
6
sjpu2014|  楼主 | 2017-5-3 15:36 | 只看该作者
降低LCD时钟是能够改善,但降低后,LCD显示就出现闪烁了。看这情况,估计还是F7的SDRAM访问带宽不够吧。

使用特权

评论回复
7
selongli| | 2017-5-3 17:07 | 只看该作者
应该是电源不稳定吗?

使用特权

评论回复
8
selongli| | 2017-5-3 17:08 | 只看该作者
LCD的供电要求可能太大,对外部造成干扰了。

使用特权

评论回复
9
sjpu2014|  楼主 | 2017-5-3 17:56 | 只看该作者
供电不会干扰的,将readwrite数据段放到CPU内部的RAM中,LCD频率设置到50MHz都可以。也就是说SDRAM除了LCD显示用之外,没别的变量需要访问他时。显示稳定。难道真的是SDRAM方访问限制了吗?急求解!!!

使用特权

评论回复
10
qnmdsb2008| | 2017-5-4 00:44 | 只看该作者
感觉像始终问题,楼主用示波器测量过吗

使用特权

评论回复
11
woshizhengjie89| | 2017-5-4 07:34 | 只看该作者
但是应该是: 显示这个业务CPU占用比很高,楼主可以往这个方向查找和优化问题

使用特权

评论回复
12
sjpu2014|  楼主 | 2017-5-4 13:12 | 只看该作者
现在测试就只是让lcd显示一个静态的图片,cpu在加载图片数据到lcd显示缓冲区后,就一直闲着呢。

使用特权

评论回复
13
cchj| | 2017-10-31 17:38 | 只看该作者
不错,受益,将频率降低后大有改善

使用特权

评论回复
14
一周一天班| | 2017-11-1 09:14 | 只看该作者
用sdram是失败的设计,如果改为ddr2估计就可以888显示了。sdram决定了总带宽,程序运行和sdram有关部分+lcd=总带宽,888比565要求高一倍,打开osd又加带宽。

使用特权

评论回复
15
一周一天班| | 2017-11-1 09:16 | 只看该作者
试着超频sdram,或降刷新率。不怕花钱就外挂缓冲芯片比如ch7034

使用特权

评论回复
16
一周一天班| | 2017-11-1 09:27 | 只看该作者
767太贵了,还外挂sdram。远不如新塘的nuc972,性价比差2-3倍。

使用特权

评论回复
17
戈卫东| | 2017-11-1 10:49 | 只看该作者
看来ST的LCD还是问题多多。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

0

粉丝