我用STM32F767驱动一款7寸屏,老是不显示。
屏的资料:
AT070TN94 Pre-spec(V01)_0707 M.pdf
部分原理图:
下面说一下软件调试的情况。
现在背光可以亮,屏上有什么东西一闪一闪的。
LCD_Init(); //LCD初始化
。。。。。。。。。。。。。。。。。。。。。。
进入LCD初始化:
lcddev.id=LTDC_PanelID_Read(); //检查是否有RGB屏接入 if(lcddev.id!=0) { LTDC_Init(); //ID非零,说明有RGB屏接入. }
可以读到lcddev.id=0x7016.
然后进到这里
else if(lcdid==0X7016) { lcdltdc.pwidth=1024; //面板宽度,单位:像素 lcdltdc.pheight=600; //面板高度,单位:像素 lcdltdc.hsw=20; //水平同步宽度 lcdltdc.vsw=3; //垂直同步宽度 lcdltdc.hbp=140; //水平后廊 lcdltdc.vbp=20; //垂直后廊 lcdltdc.hfp=160; //水平前廊 lcdltdc.vfp=12; //垂直前廊 LTDC_Clk_Set(360,2,RCC_PLLSAIDIVR_4);//设置像素时钟 45Mhz //其他参数待定. 。。。。。。。。。。。。。。。。。。。。。。 u8 LTDC_Clk_Set(u32 pllsain,u32 pllsair,u32 pllsaidivr) { RCC_PeriphCLKInitTypeDef PeriphClkIniture; //LTDC输出像素时钟,需要根据自己所使用的LCD数据手册来配置! PeriphClkIniture.PeriphClockSelection=RCC_PERIPHCLK_LTDC; //LTDC时钟 PeriphClkIniture.PLLSAI.PLLSAIN=pllsain; PeriphClkIniture.PLLSAI.PLLSAIR=pllsair; PeriphClkIniture.PLLSAIDivR=pllsaidivr; if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkIniture)==HAL_OK) //配置像素时钟,这里配置为时钟为18.75MHZ { return 0; //成功 } else return 1; //失败 } 成功。 lcddev.width=lcdltdc.pwidth; lcddev.height=lcdltdc.pheight; #if LCD_PIXFORMAT==LCD_PIXFORMAT_ARGB8888||LCD_PIXFORMAT==LCD_PIXFORMAT_RGB888 ltdc_framebuf[0]=(u32*)
这个已经初始化了
看了看手册,把程序改成这样,还是不行:
感觉DCLK频率不对,用示波器测10几K。
开发板的DCLK频率我们的示波器测不出来,貌似带宽不够。
我买的开发板自带的屏分辨率是1024*600
现在用的屏是800*480
说M2:M1:M0
1024*600是010,800*480是001.
所以电路有问题,我把电阻焊下来,飞线。
结果屏变成了粉红 {MOD},还是有鬼影。
高手给看看,哪里有问题?谢谢!
一周热门 更多>