3205|7

3241

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

STM32F767驱动7寸屏不成功 [复制链接]

我用STM32F767驱动一款7寸屏,老是不显示。
屏的资料:
AT070TN94 Pre-spec(V01)_0707 M.pdf (810.52 KB, 下载次数: 2)
部分原理图:

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

都顺利通过。如果初始化显示黑色,液晶屏显示也是白色,其实就是不能显示。
请高手指教,谢谢!


[url=]更多操作[/url]



此帖出自stm32/stm8论坛

最新回复

这个屏好像需要SDRAM支持做缓存,并不断刷新才能显示  详情 回复 发表于 2019-3-15 16:42
点赞 关注(1)
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

374

帖子

3

TA的资源

一粒金砂(高级)

沙发
 
这个屏好像需要SDRAM支持做缓存,并不断刷新才能显示
此帖出自stm32/stm8论坛

点评

你提醒的对,我软件上加了SDRAM初始化,硬件上竟然忘加了。 现在才想起来。  详情 回复 发表于 2019-3-22 15:59
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
SDRAM_Init();                   //初始化SDRAM
这个已经初始化了
此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

4
 
看了看手册,把程序改成这样,还是不行:





此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

5
 

这儿AWCR=0x04410272可是AAV=0x0041,不对呀。



此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

6
 

感觉DCLK频率不对,用示波器测10几K。
开发板的DCLK频率我们的示波器测不出来,貌似带宽不够。


此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

7
 
我买的开发板自带的屏分辨率是1024*600


现在用的屏是800*480


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

高手给看看,哪里有问题?谢谢!
此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

8
 
wenyangzeng 发表于 2019-3-15 16:42
这个屏好像需要SDRAM支持做缓存,并不断刷新才能显示

你提醒的对,我软件上加了SDRAM初始化,硬件上竟然忘加了。
现在才想起来。
此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表