本帖最后由 zld9251 于 2017-3-16 15:05 编辑
发现公司有块AT043TN25的RGB屏,手上刚好有块STM32F429开发板,就画了一个小转接板试试看能不能驱动屏。下面是液晶屏背光IC的方案:
刚开始只是修改了一下参数,发现怎么改都不行,屏幕显示不正常
液晶屏主要参数资料如下:
后来参考了一篇文章后,才明白DE模式时候参数该如何设置,链接:http://blog.csdn.net/liuhuahan/article/details/44172719
只需设置DE,还有时钟PC,然后设置有效高度和宽度,接着设置水平和垂直后沿宽度参数,总高度=有效高度+垂直后沿,总宽度=有效宽度+水平后沿。
具体程序设置如下:
//LCD初始化函数 void LTDC_Init(void) { u16lcdid=0; lcdid=LTDC_PanelID_Read(); //读取LCD面板ID LTDC_Clk_Set(288,4,RCC_PLLSAIDIVR_8); //设置像素时钟 9Mhz
lcddev.width=lcdltdc.pwidth; lcddev.height=lcdltdc.pheight;
lcdltdc.pixsize=2; //每个像素占2个字节 ltdc_framebuf[0]=(u32*)<dc_lcd_framebuf;
//LTDC配置 LTDC_Handler.Instance=LTDC; // LTDC_Handler.Init.HSPolarity=LTDC_HSPOLARITY_AL; //水平同步极性 // LTDC_Handler.Init.VSPolarity=LTDC_VSPOLARITY_AL; //垂直同步极性 LTDC_Handler.Init.DEPolarity=LTDC_DEPOLARITY_AL; //数据使能极性 LTDC_Handler.Init.PCPolarity=LTDC_PCPOLARITY_IIPC; //像素时钟极性 // LTDC_Handler.Init.HorizontalSync=lcdltdc.hsw-1; //水平同步宽度 // LTDC_Handler.Init.VerticalSync=lcdltdc.vsw-1; //垂直同步宽度 LTDC_Handler.Init.AccumulatedHBP=45; //水平同步后沿宽度 LTDC_Handler.Init.AccumulatedVBP=16; //垂直同步后沿高度 LTDC_Handler.Init.AccumulatedActiveW=480;//有效宽度 LTDC_Handler.Init.AccumulatedActiveH=272;//有效高度 LTDC_Handler.Init.TotalWidth=525; //总宽度 LTDC_Handler.Init.TotalHeigh=288; //总高度 LTDC_Handler.Init.Backcolor.Red=0; //屏幕背景层红色部分 LTDC_Handler.Init.Backcolor.Green=0; //屏幕背景层绿色部分 LTDC_Handler.Init.Backcolor.Blue=0; //屏幕背景色蓝色部分 HAL_LTDC_Init(<DC_Handler);
//层配置 LTDC_Layer_Parameter_Config(0,(u32)ltdc_framebuf[0],LCD_PIXFORMAT,255,0,6,7,0X000000);//层参数配置 LTDC_Layer_Window_Config(0,0,0,lcdltdc.pwidth,lcdltdc.pheight); //层窗口配置,以LCD面板坐标系为基准,不要随便修改!
LTDC_Display_Dir(0); //默认竖屏 LTDC_Select_Layer(0); //选择第1层 LCD_LED=1; //点亮背光 LTDC_Clear(0XFFFFFFFF); //清屏 } 最后程序显示正常了 ,然后发现屏幕被我背光电压第一次接反了,烧坏了,悲剧!
|