打印
[STM32F7]

调试7寸屏出现问题

[复制链接]
2027|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我用STM32F767驱动一款7寸屏,老是不显示。
屏的资料:
AT070TN94 Pre-spec(V01)_0707 M.pdf (810.52 KB)
部分原理图:

下面说一下软件调试的情况。
现在背光可以亮,屏上有什么东西一闪一闪的。
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*)&ltdc_lcd_framebuf;
        lcdltdc.pixsize=4;                                //每个像素占4个字节
#else
    lcdltdc.pixsize=2;                                //每个像素占2个字节
        ltdc_framebuf[0]=(u32*)&ltdc_lcd_framebuf;
#endif        

    //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;                 //数据使能极性
    if(lcdid==0X1018)LTDC_Handler.Init.PCPolarity=LTDC_PCPOLARITY_IIPC;//像素时钟极性
        else LTDC_Handler.Init.PCPolarity=LTDC_PCPOLARITY_IPC;           //像素时钟极性
    LTDC_Handler.Init.HorizontalSync=lcdltdc.hsw-1;                  //水平同步宽度
    LTDC_Handler.Init.VerticalSync=lcdltdc.vsw-1;                    //垂直同步宽度
    LTDC_Handler.Init.AccumulatedHBP=lcdltdc.hsw+lcdltdc.hbp-1; //水平同步后沿宽度
    LTDC_Handler.Init.AccumulatedVBP=lcdltdc.vsw+lcdltdc.vbp-1; //垂直同步后沿高度
    LTDC_Handler.Init.AccumulatedActiveW=lcdltdc.hsw+lcdltdc.hbp+lcdltdc.pwidth-1;//有效宽度
    LTDC_Handler.Init.AccumulatedActiveH=lcdltdc.vsw+lcdltdc.vbp+lcdltdc.pheight-1;//有效高度
    LTDC_Handler.Init.TotalWidth=lcdltdc.hsw+lcdltdc.hbp+lcdltdc.pwidth+lcdltdc.hfp-1;   //总宽度
    LTDC_Handler.Init.TotalHeigh=lcdltdc.vsw+lcdltdc.vbp+lcdltdc.pheight+lcdltdc.vfp-1;  //总高度
    LTDC_Handler.Init.Backcolor.Red=0;           //屏幕背景层红色部分
    LTDC_Handler.Init.Backcolor.Green=0;         //屏幕背景层绿色部分
    LTDC_Handler.Init.Backcolor.Blue=0;          //屏幕背景色蓝色部分
    HAL_LTDC_Init(&LTDC_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);                        //清屏

都顺利通过。如果初始化显示黑色,液晶屏显示也是白色,其实就是不能显示。
请高手指教,谢谢!
沙发
Cjy_JDxy|  楼主 | 2019-3-16 08:59 | 只看该作者
看了看手册,把程序改为以下,还是不行:






使用特权

评论回复
板凳
Cjy_JDxy|  楼主 | 2019-3-16 10:03 | 只看该作者

这儿有问题,AWCR=0x04410271
可是AAV=0x0041,不对呀

使用特权

评论回复
地板
Cjy_JDxy|  楼主 | 2019-3-16 14:29 | 只看该作者
来了方法 发表于 2019-3-16 13:27
老板哪里搞的二手屏或者库存货?

淘宝上买的。

使用特权

评论回复
5
Cjy_JDxy|  楼主 | 2019-3-16 18:02 | 只看该作者
感觉DCLK频率不对,用示波器测10几K。
开发板的DCLK频率我们的示波器测不出来,貌似带宽不够。



使用特权

评论回复
6
chenqiang10| | 2019-3-16 21:36 | 只看该作者
先排除屏本身问题,然后再去调时序吧

使用特权

评论回复
7
chenqiang10| | 2019-3-16 21:36 | 只看该作者
应该还是时序不对的

使用特权

评论回复
8
dsyq| | 2019-3-16 22:30 | 只看该作者
买个开发板依样画葫芦呗

使用特权

评论回复
9
619888476| | 2019-3-17 11:15 | 只看该作者
看看波形如何

使用特权

评论回复
10
Cjy_JDxy|  楼主 | 2019-3-17 12:25 | 只看该作者
dsyq 发表于 2019-3-16 22:30
买个开发板依样画葫芦呗

就是买了个 开发板,参考

使用特权

评论回复
11
Cjy_JDxy|  楼主 | 2019-3-18 11:09 | 只看该作者
chenqiang10 发表于 2019-3-16 21:36
应该还是时序不对的

我不知道怎么调时序,
GPIO_Initure.Alternate=GPIO_AF14_LTDC;      //复用为LTDC
管脚都复用为LTDC了

使用特权

评论回复
12
Cjy_JDxy|  楼主 | 2019-3-22 14:39 | 只看该作者
我买的开发板自带的屏分辨率是1024*600


现在用的屏是800*480

说M2:M1:M0
1024*600是010,800*480是001.
所以电路有问题,我把电阻焊下来,飞线。
结果屏变成了粉红色,还是有鬼影。

高手给看看,哪里有问题?谢谢!




使用特权

评论回复
13
Cjy_JDxy|  楼主 | 2019-3-22 16:04 | 只看该作者
下午又看了看,发现程序里加了SDRAM初始化,硬件上竟然没有。
这可是个大问题,现在才想起来。

使用特权

评论回复
14
老兔子| | 2019-3-25 14:16 | 只看该作者
老哥,屏调的怎么样了

使用特权

评论回复
15
Cjy_JDxy|  楼主 | 2019-3-25 14:31 | 只看该作者
老兔子 发表于 2019-3-25 14:16
老哥,屏调的怎么样了

不行啊,正在改板子。

使用特权

评论回复
16
frfgfvfd| | 2019-3-25 17:07 | 只看该作者
调出结果没有?跟着一起学习下。

使用特权

评论回复
17
Cjy_JDxy|  楼主 | 2019-3-25 17:11 | 只看该作者
frfgfvfd 发表于 2019-3-25 17:07
调出结果没有?跟着一起学习下。

没有,正在改板子,缺少SDRAM

使用特权

评论回复
18
chenqiang10| | 2019-3-31 21:14 | 只看该作者
Cjy_JDxy 发表于 2019-3-18 11:09
我不知道怎么调时序,
GPIO_Initure.Alternate=GPIO_AF14_LTDC;      //复用为LTDC
管脚都复用为LTDC了

看手册吧,一点一点来,着急不得

使用特权

评论回复
19
643757107| | 2019-3-31 23:24 | 只看该作者
这个没有找厂家要个例子?

使用特权

评论回复
20
Cjy_JDxy|  楼主 | 2019-4-1 08:36 | 只看该作者
643757107 发表于 2019-3-31 23:24
这个没有找厂家要个例子?

厂家没例子。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3520

帖子

19

粉丝