3716|6

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

修改TFT驱动,导致只显示半个屏幕的现象 [复制链接]

我修改了触摸屏驱动导致出现只显示上半个屏幕的现象,下半个屏幕是白色的;并且上半个屏幕的分辨率是正常的,程序窗口正适合3.5寸液晶屏幕。
    ------------比以前有进步。

红色部分为修改后的内容:

修改部分:s2410.h
                 #define LCD_XSIZE_TFT           (320)
                 #define LCD_YSIZE_TFT           (240)


PLATFORM\SMDK2410\DRIVERS\DISPLAY\S3C2410LCD\s3c2410disp.cpp


WORD    TempBuffer[241][320];
S3C2410DISP::S3C2410DISP (void)
{
       ********
       m_nScreenWidth = 320;
       m_nScreenHeight = 240;
       *********
}

//-------------是夏普的3.5寸的TFT,不知道怎么回事,光盘里面的datasheet打开是空白的,只有最后两页。了解的指点一下,有这个液晶(型号LQ035Q7DH01)麻烦给一份我。邮箱wogoyixikexie@163.com谢谢

最新回复

1.红色部分s3c2410.h的宏定义在绿色部分的cfw.c文件中并没有用到, 你检查一下类似LCD_VBPD,LCD_VFPD这些个宏定义是不是和 #define VFPD          ((2)&0xff)   #define VSPW          ((1)&0x3f)   #define HBPD          ((48-1)&0x7f) #define HFPD          ((16-1)&0xff) #define HSPW          ((96-1)&0xff) #define CLKVAL_TFT      (7)  //(1) 这些一样? 2.数组大小 WORD    TempBuffer[241][320]; 行列是不是反了? 仅供参考,呵呵 我没有在4.2下编译过,只在5.0下改过.   详情 回复 发表于 2008-8-23 18:11
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没用过这种屏,不过无外乎2个地方的问题:

1.LCD需要做初始化;
2.配置2410的lcd register
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我太菜了。今天搞了一天,修改了初始化文件,又出现了另外一种毛病:屏幕变花,勉强看清楚回收站图标。并且好像变成竖着的三分屏,黑屏幕是没有了。
下面那几个数不知道有什么用的,在初始化那里出现了。但是2410datasheet上并没有出现。
#define VFPD           ((2)&0xff)   
#define VSPW           ((1)&0x3f)  
#define HBPD           ((48-1)&0x7f)
#define HFPD           ((16-1)&0xff)
#define HSPW           ((96-1)&0xff)
#define CLKVAL_TFT       (7)   //(1)
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

4
 
我在看ce5.0的eboot的时候,看到lcd的初始化代码,有些地方不明白,下面是代码:



static void InitDisplay(void)
{
    volatile S3C2410X_IOPORT_REG *s2410IOP = (S3C2410X_IOPORT_REG *)OALPAtoVA(S3C2410X_BASE_REG_PA_IOPORT, FALSE);
    volatile S3C2410X_LCD_REG    *s2410LCD = (S3C2410X_LCD_REG *)OALPAtoVA(S3C2410X_BASE_REG_PA_LCD, FALSE);

    // Set up the LCD controller registers to display a power-on bitmap image.
    //
    s2410IOP->GPCUP     = 0xFFFFFFFF;
    s2410IOP->GPCCON    = 0xAAAAAAAA;
                                    
    s2410IOP->GPDUP     = 0xFFFFFFFF;
    s2410IOP->GPDCON    = 0xAAAAAAAA;

    s2410LCD->LCDCON1   =  (6           <<  8) |       /* VCLK = HCLK / ((CLKVAL + 1) * 2) -> About 7 Mhz  */
                           (LCD_MVAL   <<  7)  |       /* 0 : Each Frame    ?                               */
                           (3           <<  5) |       /* TFT LCD Pannel                                   */
                           (12          <<  1) |       /* 16bpp Mode                                       */
                           (0           <<  0) ;       /* Disable LCD Output                               */

    s2410LCD->LCDCON2   =  (LCD_VBPD        << 24) |   /* VBPD          :   1                              */
                           (LCD_LINEVAL_TFT << 14) |   /* Vertical Size : 320 - 1                          */
                           (LCD_VFPD        <<  6) |   /* VFPD          :   2                              */
                           (LCD_VSPW        <<  0) ;   /* VSPW          :   1                              */

    s2410LCD->LCDCON3   =  (LCD_HBPD        << 19) |   /* HBPD          :   6                              */
                           (LCD_HOZVAL_TFT  <<  8) |   /* HOZVAL_TFT    : 240 - 1                          */
                           (LCD_HFPD        <<  0) ;   /* HFPD          :   2                              */


    s2410LCD->LCDCON4   =  (LCD_MVAL        <<  8) |   /* MVAL          :  13                              */
                           (LCD_HSPW        <<  0) ;   /* HSPW          :   4                              */

    s2410LCD->LCDCON5   =  (0           << 12) |       /* BPP24BL       : LSB valid                        */
                           (1           << 11) |       /* FRM565 MODE   : 5:6:5 Format                     */
                           (0           << 10) |       /* INVVCLK       : VCLK Falling Edge                */
                           (1           <<  9) |       /* INVVLINE      : Inverted Polarity                */
                           (1           <<  8) |       /* INVVFRAME     : Inverted Polarity                */
                           (0           <<  7) |       /* INVVD         : Normal                           */
                           (0           <<  6) |       /* INVVDEN       : Normal                           */
                           (0           <<  5) |       /* INVPWREN      : Normal                           */
                           (0           <<  4) |       /* INVENDLINE    : Normal                           */
                           (0           <<  3) |       /* PWREN         : Disable PWREN                    */
                           (0           <<  2) |       /* ENLEND        : Disable LEND signal              */
                           (0           <<  1) |       /* BSWP          : Swap Disable                     */
                           (1           <<  0) ;       /* HWSWP         : Swap Enable                      */

    s2410LCD->LCDSADDR1 = ((IMAGE_FRAMEBUFFER_DMA_BASE >> 22)     << 21) |
                          ((M5D(IMAGE_FRAMEBUFFER_DMA_BASE >> 1)) <<  0);

    s2410LCD->LCDSADDR2 = M5D((IMAGE_FRAMEBUFFER_DMA_BASE + (LCD_XSIZE_TFT * LCD_YSIZE_TFT * 2)) >> 1);

    s2410LCD->LCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << 11) | (LCD_XSIZE_TFT / 1);        

    s2410LCD->LPCSEL   |= 0x3;

    s2410LCD->TPAL      = 0x0;        
    s2410LCD->LCDCON1  |= 1;

    // Display a bitmap image on the LCD...
    //
    memcpy((void *)IMAGE_FRAMEBUFFER_UA_BASE, ScreenBitmap, LCD_ARRAY_SIZE_TFT_16BIT);

}



#define IMAGE_FRAMEBUFFER_UA_BASE       0xAC100000
#define IMAGE_FRAMEBUFFER_DMA_BASE      0x30100000





 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
我已经获得支持立宇泰相应支持这个液晶的BSP,定制了一个系统,运行显示,触摸功能非常正常。

我昨天详细比较了这两个BSP的不同,
液晶驱动修改主要是以下几个地方:cfw.c,s2410.h,PLATFORM\SMDK2410\DRIVERS\DISPLAY\S3C2410LCD\s3c2410disp.cpp

并且修改的主要参数是,
修改部分:s2410.h
                #define LCD_XSIZE_TFT          (320)
                #define LCD_YSIZE_TFT          (240)



#define VFPD          ((2)&0xff)  
#define VSPW           ((1)&0x3f)  
#define HBPD           ((48-1)&0x7f)
#define HFPD           ((16-1)&0xff)
#define HSPW           ((96-1)&0xff)
#define CLKVAL_TFT      (7)  //(1)


PLATFORM\SMDK2410\DRIVERS\DISPLAY\S3C2410LCD\s3c2410disp.cpp


WORD    TempBuffer[241][320];
S3C2410DISP::S3C2410DISP (void)
{
      ********
      m_nScreenWidth = 320;
      m_nScreenHeight = 240;      *********
}



/////////////////////////////////cfw.c
s2410LCD->LCDCON1  =  (6          < <  8) ?      /* VCLK = HCLK / ((CLKVAL + 1) * 2) -> About 7 Mhz  */
                          (LCD_MVAL  < <  7)  ?      /* 0 : Each Frame    ?                              */
                          (3          < <  5) ?      /* TFT LCD Pannel                                  */
                          (12          < <  1) ?      /* 16bpp Mode                                      */
                          (0          < <  0) ;      /* Disable LCD Output                              */

    s2410LCD->LCDCON2  =  (LCD_VBPD        < < 24) ?  /* VBPD          :  1                              */
                          (LCD_LINEVAL_TFT < < 14) ?  /* Vertical Size : 320 - 1                          */
                          (LCD_VFPD        < <  6) ?  /* VFPD          :  2                              */
                          (LCD_VSPW        < <  0) ;  /* VSPW          :  1                              */

    s2410LCD->LCDCON3  =  (LCD_HBPD        < < 19) ?  /* HBPD          :  6                              */
                          (LCD_HOZVAL_TFT  < <  8) ?  /* HOZVAL_TFT    : 240 - 1                          */
                          (LCD_HFPD        < <  0) ;  /* HFPD          :  2                              */


    s2410LCD->LCDCON4  =  (LCD_MVAL        < <  8) ?  /* MVAL          :  13                              */
                          (LCD_HSPW        < <  0) ;  /* HSPW          :  4                              */

    s2410LCD->LCDCON5  =  (0          < < 12) ?      /* BPP24BL      : LSB valid                        */
                          (1          < < 11) ?      /* FRM565 MODE  : 5:6:5 Format                    */
                          (0          < < 10) ?      /* INVVCLK      : VCLK Falling Edge                */
                          (1          < <  9) ?      /* INVVLINE      : Inverted Polarity                */
                          (1          < <  8) ?      /* INVVFRAME    : Inverted Polarity                */
                          (0          < <  7) ?      /* INVVD        : Normal                          */
                          (0          < <  6) ?      /* INVVDEN      : Normal                          */
                          (0          < <  5) ?      /* INVPWREN      : Normal                          */
                          (0          < <  4) ?      /* INVENDLINE    : Normal                          */
                          (0          < <  3) ?      /* PWREN        : Disable PWREN                    */
                          (0          < <  2) ?      /* ENLEND        : Disable LEND signal              */
                          (0          < <  1) ?      /* BSWP          : Swap Disable                    */
                          (1          < <  0) ;      /* HWSWP        : Swap Enable                      */


我把可用的BSP的相应代码复制过来都不行,修改一点代码不是花屏就是半屏。我看资料夏普液晶和三星的液晶类似。请问哪位知道指点一下还要修改哪里?真是搞得很晕。

据我所知,这个和Bootloader无关,我的bootloader并不加载启动画面。所以是不用初始化液晶的。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
屏幕参数都设置对了?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
1.红色部分s3c2410.h的宏定义在绿色部分的cfw.c文件中并没有用到,
你检查一下类似LCD_VBPD,LCD_VFPD这些个宏定义是不是和
#define VFPD          ((2)&0xff)  
#define VSPW          ((1)&0x3f)  
#define HBPD          ((48-1)&0x7f)
#define HFPD          ((16-1)&0xff)
#define HSPW          ((96-1)&0xff)
#define CLKVAL_TFT      (7)  //(1)
这些一样?

2.数组大小 WORD    TempBuffer[241][320]; 行列是不是反了?

仅供参考,呵呵

我没有在4.2下编译过,只在5.0下改过.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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