中级会员
 
- 积分
- 213
- 金钱
- 213
- 注册时间
- 2016-12-29
- 在线时间
- 100 小时
|
5金钱
1. LTDC_Layer_InitStruct.LTDC_HorizontalStart = HBP+1;//30; 43
LTDC_Layer_InitStruct.LTDC_HorizontalStop = (LCDX + HBP );
LTDC_Layer_InitStruct.LTDC_VerticalStart = VBP+1;//4;
LTDC_Layer_InitStruct.LTDC_VerticalStop = (LCDY + VBP ); //(272 + 12 - 1);
LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;
LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 255;
LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA; // LTDC_BlendingFactor1_CA
LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_CA; //LTDC_BlendingFactor2_CA
LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 0x0000ff;
LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 0;
LTDC_Layer_InitStruct.LTDC_CFBLineLength = ((LCDX * 2) + 3);
LTDC_Layer_InitStruct.LTDC_CFBPitch = (LCDX * 2);
LTDC_Layer_InitStruct.LTDC_CFBLineNumber = LCDY;
LTDC_Layer_InitStruct.LTDC_CFBStartAdress = (uint32_t)&gImage_gg;
LTDC_LayerInit(LTDC_Layer1, <DC_Layer_InitStruct);
LTDC_LayerCmd(LTDC_Layer1, ENABLE);
LTDC_ReloadConfig(LTDC_IMReload);
这是配置layer的代码,LTDC_Layer_InitStruct.LTDC_CFBStartAdress = (uint32_t)&gImage_gg; gImage_gg是用软件生成的一个c语言数组。为什么调用 LTDC_ReloadConfig(LTDC_IMReload);这一句图片就直接显示出来了?
2.用F4自带的驱动LCD ,它的DMA2D 和 外挂的SDRAM的作用是什么?应该怎样使用MA2D和SDRAM?
3.我是直接读的SD卡的图片出来解码,把图片的一行数据读出来再解码放到一个数组里, 以前用SSD1963时带了LCD_WR_Data()这一个函数往里写数据就行 ,现在 这样解码额数据应该怎么往里写呢?
真心求懂的人帮忙解答,这个问题困扰一周了 。
|
最佳答案
查看完整内容[请看2#楼]
个人理解,仅供参考:
1、LTDC_Layer_InitStruct.LTDC_CFBStartAdress是用于指定LTDC的显存起始地址,LTDC为按照配置定时的从这个显存里面取数据通过RGB接口写入屏幕,你现在把这个显存指向了你自己定义的图片数组里(uint32_t)&gImage_gg,自然会一直显示这个图片;
2、SDRAM的作用就是为了给LTDC提供一个显存空间的,当前你完全可以不用SDRAM,直接使用片内的RAM也可以,前提是你的RAM要大于屏幕要求的显存空间,我试过F429显 ...
|