请问我的rgb屏为什么不能够同时开启2层?

2019-07-14 15:35发布

请教下,我的rgb屏,怎么不能够同时开启2层 ??

如果同时开启2层的话,显示就会出现闪动的麻点或者条纹(当然,显示时是设置某一层显示), 只要同时开启2层,显示就完全乱了,

如果2层显示其中的任意一层(必须把另外一层关闭才行),则完全没有任何问题,

这是怎么个情况啊 ???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
minwayson
1楼-- · 2019-07-15 00:35
 精彩回答 2  元偷偷看……
7vyydyfwef
2楼-- · 2019-07-15 00:58
HELLOKITTYNEW 发表于 2018-11-30 15:09
昨天刚听了STM的GUI的课程,多层需要硬件支持。如果你的图像点数太大了,芯片本身的存储器不够的,需要外扩。记不住了,好像高分辨的1个图就将存储空间塞满了,第二层无处存放的。想想看是这个问题吗?

本帖最后由 hpdell 于 2017-3-9 17:18 编辑

我是使用外部的sdram 作为显存的,

每个层都分配了4MBYte的存储空间,

lcd的分辨率是 800*1280的,如果同时开启2层的显示就会乱的话,

根据你的分析来判断的话,那估计应该是我外扩的sdram的显存速度不够

或者降低屏幕分辨率 不知道可否解决这个问题呀 ??

我的单片机使用的是 f7xx系列的
7vyydyfwef
3楼-- · 2019-07-15 03:57
minwayson 发表于 2018-11-30 15:19
屏幕闪动厉害的话,可能内存带宽不够,只能开一个来用了

本帖最后由 hpdell 于 2017-3-9 19:48 编辑

同时开2层的话,根本无法正常工作,显示完全乱了,

单独开某一层显示,完全没有任何问题

,单独开一层的话,那透明功能是不是就不能够使用了啊 ???
开启2层的显示效果:



任意单层显示效果如下:












层切换函数:
/*
函数名称:
函数功能:设置使用层
参数说明:_SetLayerUser   0表示使用第一层,1表示使用第二层
*/
void LTDC_LayerSetUser(uint8_t _SetLayerUser)
{
  if(_SetLayerUser == 0)
  {
    BSP_LCD_SelectLayer(1);
    BSP_LCD_SetLayerVisible(1, DISABLE);

    BSP_LCD_SelectLayer(0);  
    BSP_LCD_SetLayerVisible(0, ENABLE);
  }
  else
  {
    BSP_LCD_SelectLayer(0);
    BSP_LCD_SetLayerVisible(0, DISABLE);

    BSP_LCD_SelectLayer(1);
    BSP_LCD_SetLayerVisible(1, ENABLE);
  }
}




如果不能够同时显示2层的话,那么设置2层也没有什么意义,到时还是把它设置为一次好了
HELLOKITTYNEW
4楼-- · 2019-07-15 07:41
您的存储单元少了吧。800X1280=1.024MB,如果是24位 {MOD},再X3=3MB了,第二层就开不了了。可以减少颜 {MOD}深度,或减少分辨率。如果将颜 {MOD}深度减到565=16位 {MOD},4MB正好够2层的。试试看
7vyydyfwef
5楼-- · 2019-07-15 11:14
HELLOKITTYNEW 发表于 2018-11-30 16:03
您的存储单元少了吧。800X1280=1.024MB,如果是24位 {MOD},再X3=3MB了,第二层就开不了了。可以减少颜 {MOD}深度,或减少分辨率。如果将颜 {MOD}深度减到565=16位 {MOD},4MB正好够2层的。试试看

你好,我的内存分配

第一层分配了4MByte的,800*1280*4  = 4096000BYte < 4096MByte
第二层分配了4MByte的,800*1280*4  = 4096000BYte < 4096MByte

我总共给 LTDC 分配了 8MByte的存储空间啊,按照上面的存储空间来看的话,应该是足够的啊,
那怎么还是不能够同时显示2层啊 ???
HELLOKITTYNEW
6楼-- · 2019-07-15 12:48
 精彩回答 2  元偷偷看……

一周热门 更多>