硬汉嵌入式论坛

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

f429驱动7寸液晶问题

[复制链接]

24

主题

27

回帖

99

积分

初级会员

积分
99
发表于 2017-8-1 20:56:13 | 显示全部楼层 |阅读模式
使用两层显示  
LTDC_Layer1设置为RGB565

LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;

LTDC_Layer2设置为ARGB1555
LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_ARGB1555;

最终显示效果如下所示,出现上下部分模糊了一大部分
TIM图片20170801204401.jpg



如果单独使用一个图层,把LTDC_Layer2设置为RGB565,可以正常显示图片


请教这是什么原因导致的,该从那个方便下手查找问题?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2017-8-2 00:41:25 | 显示全部楼层
图片显示在哪个图层上,简单的测试代码,我看下。
回复

使用道具 举报

24

主题

27

回帖

99

积分

初级会员

积分
99
 楼主| 发表于 2017-8-2 08:43:29 | 显示全部楼层

回 eric2013 的帖子

图片显示在LTDC_Layer1上   ,初始化代码如下,现在是把LTDC_Layer2设置为ARGB1555,透明度设置为255,显示成现在这样,但是如果把LTDC_Layer2设置成rgb565,并且把图片显示在LTDC_Layer2上,图片显示正常,就是透明度设置好像有问题

void LCD_LayerInit(void)
{
  LTDC_Layer_InitTypeDef    LTDC_Layer_InitStruct;
  
  LTDC_Layer_InitStruct.LTDC_HorizontalStart = 46;//211;//30;
  LTDC_Layer_InitStruct.LTDC_HorizontalStop = (800 + 46 -1);//(800 + 211 - 1);
  LTDC_Layer_InitStruct.LTDC_VarticalStart = 23; //24;//4;
  LTDC_Layer_InitStruct.LTDC_VerticalStop =( 480+ 23 -1);





  /* Pixel Format configuration*/           
  LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;

  /* Alpha constant (255 totally opaque) */
  LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 255;

  /* Configure blending factors */      
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA;   
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;  

  /* Default Color configuration (configure A,R,G,B component values) */         
  LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 0;        
  LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;      
  LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;         
  LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 0;   


  LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER;

  LTDC_Layer_InitStruct.LTDC_CFBLineLength = ((800 * 2) + 3);

  LTDC_Layer_InitStruct.LTDC_CFBPitch = (800 * 2);  

  /* configure the number of lines */
  LTDC_Layer_InitStruct.LTDC_CFBLineNumber = 480;

  LTDC_LayerInit(LTDC_Layer1, &LTDC_Layer_InitStruct);

  LTDC_Layer_InitStruct.LTDC_HorizontalStart =46;// 211;//210;//30;
  LTDC_Layer_InitStruct.LTDC_HorizontalStop =(800 + 46-1 );// 211+800-1;//(800+ 30 - 1);
  LTDC_Layer_InitStruct.LTDC_VarticalStart = 23;//22;
  LTDC_Layer_InitStruct.LTDC_VerticalStop = (480 + 23-1);

  /* Pixel Format configuration*/           
  LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_ARGB1555;

  /* Alpha constant (255 totally opaque) */
  LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 255;

  /* Configure blending factors */      
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA;   
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;  

  /* Default Color configuration (configure A,R,G,B component values) */         
  LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 0;        
  LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;      
  LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;         
  LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 255;   

  /* Input Address configuration */   
//  LTDC_Layer_InitStruct.LTDC_CFBStartAdress = (uint32_t)(&ST_LOGO_2[1200]);//(u32)FrameBuffer;

  LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER + BUFFER_OFFSET;

  LTDC_Layer_InitStruct.LTDC_CFBLineLength = ((800 * 2) + 3);

  LTDC_Layer_InitStruct.LTDC_CFBPitch = (800 * 2);  

  /* configure the number of lines */
  LTDC_Layer_InitStruct.LTDC_CFBLineNumber = 480;

  LTDC_LayerInit(LTDC_Layer2, &LTDC_Layer_InitStruct);


    /* LTDC configuration reload */
LTDC_ReloadConfig(LTDC_IMReload);


     LTDC_LayerCmd(LTDC_Layer1, ENABLE);

    LTDC_LayerCmd(LTDC_Layer2, ENABLE);

  /* Set default font */
LCD_SetFont(&LCD_DEFAULT_FONT);

  /* dithering activation */
LTDC_DitherCmd(ENABLE);
}



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2017-8-2 11:31:13 | 显示全部楼层
你的图层2上面是个图片,是ARGB1555的位图格式吗
回复

使用道具 举报

24

主题

27

回帖

99

积分

初级会员

积分
99
 楼主| 发表于 2017-8-2 12:37:22 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的图层2上面是个图片,是ARGB1555的位图格式吗 (2017-08-02 11:31) 
图层2上没有绘制图片   就是图层1是rgb565,然后绘制了rgb265的bmp图片,第二层设置透明度为255,如果正常的话   第一层的bmp会透过第二层显示出来,但是结果是显示不正常
如果设置第二层为rgb565,直接在第二层上绘制rgb565图片,显示正常
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2017-8-2 14:17:56 | 显示全部楼层

回 beiqibing000 的帖子

beiqibing000:图层2上没有绘制图片   就是图层1是rgb565,然后绘制了rgb265的bmp图片,第二层设置透明度为255,如果正常的话   第一层的bmp会透过第二层显示出来,但是结果是显示不正常
如果设置第二层为rgb565,直接在第二层上绘制rgb565图片,显示正常 (2017-08-02 12:37) 
注意,你用的格式是ARGB1555,仅仅最高位的bit15表示透明,bit15 = 1表示透明或者不透明,0反之。
回复

使用道具 举报

24

主题

27

回帖

99

积分

初级会员

积分
99
 楼主| 发表于 2017-8-2 18:28:44 | 显示全部楼层

回 eric2013 的帖子

eric2013:注意,你用的格式是ARGB1555,仅仅最高位的bit15表示透明,bit15 = 1表示透明或者不透明,0反之。
(2017-08-02 14:17)
我第二层用的是ARGB1555   但是我第一层用的是RGB565,所有我在第一层上画的是RGB565的图片,没有在第一层上绘制图片,所有就没有用到第一层,但是我把第一层的透明度设置为255,理论上结果 最终看到的应该就是第二层的RGB565的图片,不是吗,不知道理解是不是有问题,麻烦指正
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2017-8-2 18:33:57 | 显示全部楼层

回 beiqibing000 的帖子

beiqibing000:我第二层用的是ARGB1555   但是我第一层用的是RGB565,所有我在第一层上画的是RGB565的图片,没有在第一层上绘制图片,所有就没有用到第一层,但是我把第一层的透明度设置为255,理论上结果 最终看到的应该就是第二层的RGB565的图片,不是吗,不知道理解是不是有问题, .. (2017-08-02 18:28)
ARGB1555透明度只有0和1两个数值,由你设置颜色值的bit15表示,透明或者不透明。
ARGB1555颜色格式所对应的位:B  = bit0-4,  G = bit5 - 9, R = bit10 - 14,  A = bit15

ARGB8888的透明度才有256级的透明度设置。0-255来表示。
A8 R8 G8 B8
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-13 01:52 , Processed in 0.047361 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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