主题 : tiny6410 wince 更换LCD之后显示颜色失真,像是数据偏移了,请高手指教! 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
楼主  发表于: 2012-07-30 11:06

 tiny6410 wince 更换LCD之后显示颜色失真,像是数据偏移了,请高手指教!

基于tiny6410 wince6的板更改了一款LCD,在调试驱动的时候出现问题:
本来要显示的图片如下:


可是现在显示的图片是这样的:


请帮忙分析一下这是什么原因,小女子刚接手这个项目,请高手指教!
谢谢!
InitLCD 函数中的代码如下:
    rVIDCON0 = PROGRESSIVE | VIDOUT_RGBIF | LCD_PNR_MODE | CLKVALUP_ALWAYS |
                  CLKVAL_F(LCD_TFT_CLKVAL) | VCLK_NORMAL | LCD_VCLK_DIRECTION |
                  LCD_VCLK_SOURCE | ENVID_DISABLE | ENVID_F_DISABLE;
    rVIDCON1 = LCD_VCLK_POLARITY | LCD_HSYNC_POLARITY | LCD_VSYNC_POLARITY | LCD_VDEN_POLARITY;
    rVIDCON2 = TVIF_FMT_YUV444;
    rVIDTCON0 = VBPDE(1) | VBPD(LCD_VBPD_VALUE) |   VFPD(LCD_VFPD_VALUE) | VSPW(LCD_VSPW_VALUE);
    rVIDTCON1 = VFPDE(1) | HBPD(LCD_HBPD_VALUE) |   HFPD(LCD_HFPD_VALUE) | HSPW(LCD_HSPW_VALUE);
    rVIDTCON2 = LINEVAL(LCD_HEIGHT) | HOZVAL(LCD_WIDTH);

 rWINCON1 = HAWSWP_ENABLE | BPPMODE_F_16BPP_565 | ENWIN_F_ENABLE;;
 rVIDOSD1B = OSD_RIGHTBOTX_F(LCD_WIDTH - 1) | OSD_RIGHTBOTY_F(LCD_HEIGHT - 1);
 rVIDOSD1C = 0x0;
 rVIDOSD1D = LCD_WIDTH * LCD_HEIGHT;
 rVIDW01ADD0B0 = VBANK_F(IMAGE_FRAMEBUFFER_PA_START >> 24) | VBASEU_F(IMAGE_FRAMEBUFFER_PA_START);
 rVIDW01ADD1B0 = VBASEL_F(VBASEU_F(IMAGE_FRAMEBUFFER_PA_START) + 2* LCD_WIDTH * LCD_HEIGHT);
 rVIDW01ADD2 = PAGEWIDTH_F(LCD_HEIGHT * 2);
    rGPIPUD &= ~(0xfff0ffc0);                                        // Pull up/down disable
    rGPICON = (rGPICON & ~(0xfff0ffc0)) | (0xaaa0aa80);              // G[5:0], B[4:0]
    rGPJPUD &= ~(0xffc0);                                            // Pull up/down disable
    rGPJCON = (rGPJCON & ~(0xffc0)) | (0xaa80);                      // R[4:0]
 // Control Signal (HSync, VSync, VDEN, VClk)
    rGPJPUD &= ~(0xf<<16);                             // Pull up/down disable
    rGPJCON = (rGPJCON & ~(0xff<<16)) | (0xaa<<16);    // HSync, VSync, VDEN, VCLK
    // MSM I/F Bypass Mode Disable
    rMIFPCON &= ~(0x1<<3);    // SEL_BYPASS -> Normal Mode
    // LCD Interface Type
    rSPCON = (rSPCON & ~(0x3)) | (0x1); //01 = RGB I/F style
 rVIDCON0 |= 0x3;
 

OPTION.h文件里LCD的配置如下:
#define LCD_WIDTH   240
#define LCD_HEIGHT  320
#define LCD_VBPD_VALUE   4
#define LCD_VFPD_VALUE   2
#define LCD_VSPW_VALUE   2
#define LCD_HBPD_VALUE   20
#define LCD_HFPD_VALUE   8
#define LCD_HSPW_VALUE   10
#define LCD_RGB_OUT_MODE   DISP_16BIT_RGB565_P  //NC
#define LCD_VCLK_POLARITY  IVCLK_RISE_EDGE   //high
#define LCD_HSYNC_POLARITY IHSYNC_LOW_ACTIVE  //low
#define LCD_VSYNC_POLARITY IVSYNC_LOW_ACTIVE  //low
#define LCD_VDEN_POLARITY  IVDEN_HIGH_ACTIVE  //high
#define LCD_PNR_MODE       PNRMODE_RGB_P
#define LCD_VCLK_SOURCE    CLKSEL_F_LCDCLK
#define LCD_VCLK_DIRECTION CLKDIR_DIVIDED
#define LCD_FRAME_RATE     80   //NC
#define LCD_TFT_CLKVAL     7       //((60/7.5)-1)
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2012-07-30 11:09
可能硬件连接不对
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
2楼  发表于: 2012-07-30 11:16
谢谢 mindee 这么快回复,让硬件查查看!
级别: 骑士
UID: 32651
精华: 0
发帖: 152
金钱: 760 两
威望: 152 点
综合积分: 304 分
注册时间: 2010-11-18
最后登录: 2015-11-29
3楼  发表于: 2012-08-07 01:19
rGPICON = (rGPICON & ~(0xfff0ffc0)) | (0xaaa0aa80);              // G[5:0], B[4:0]
    rGPJPUD &= ~(0xffc0);                                            // Pull up/down disable
    rGPJCON = (rGPJCON & ~(0xffc0)) | (0xaa80);                      // R[4:0]
  


都用·565.你怎么用454?这个有什么讲究吗?一般16位色很好看的
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
4楼  发表于: 2012-08-07 09:50
引用第3楼cx4359481于2012-08-07 01:19发表的  :
rGPICON = (rGPICON & ~(0xfff0ffc0)) | (0xaaa0aa80);              // G[5:0], B[4:0]
    rGPJPUD &= ~(0xffc0);                                            // Pull up/down disable
    rGPJCON = (rGPJCON & ~(0xffc0)) | (0xaa80);                      // R[4:0]
  

.......


晕啊,0-4 是5,0-5是6啊,就是565 啊
不过就是这个问题,硬件接的LCD的数据线跟原版不一样,修改下具体的RGB就显示正常了!
级别: 骑士
UID: 32651
精华: 0
发帖: 152
金钱: 760 两
威望: 152 点
综合积分: 304 分
注册时间: 2010-11-18
最后登录: 2015-11-29
5楼  发表于: 2012-08-07 16:05

 回 4楼(jelly) 的帖子

恭喜啊,另外请教你一下,能留一个qq 吗?我现在也想改一个lcd,有些问题我还不是太明白。我以前用4.3的,最近买啦一个7寸的不过是三星的,接口什么的都不一样,时序也不一样。
级别: 骑士
UID: 32651
精华: 0
发帖: 152
金钱: 760 两
威望: 152 点
综合积分: 304 分
注册时间: 2010-11-18
最后登录: 2015-11-29
6楼  发表于: 2012-08-08 02:02
我想再问一下,改啦OPTION.h后需不需要再更改lcd驱动?我需要重新再编译一下用新生成的NK来烧写,原厂的有一线触摸和附带的一些东西,我不用那个。我用精简的
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
7楼  发表于: 2012-08-09 17:04

 回 6楼(cx4359481) 的帖子

我们不能上QQ的,抱歉!

LCD的驱动基本不用做什么改动的
我们也没有用一线触摸,现在还在调!

还有

我上面说的那个颜色不对的问题,还有些问题的
  rGPICON = (rGPICON & ~(0xfff0ffc0)) | (0xaaa0aa80);              // G[5:0], B[4:0]
    rGPJPUD &= ~(0xffc0);                                            // Pull up/down disable
    rGPJCON = (rGPJCON & ~(0xffc0)) | (0xaa80);                      // R[4:0]

这个应该是不用改动的,看6410的datasheet上说16位的565连线是
RGB_VD[19:23]   是R
RGB_VD[10:15]   是G
RGB_VD[3:7]   是B

我们硬件只接了0-17根线,后面的线没处理
现在显示单独的颜色还行,显示图片还是花的,估计跟这个有关系,可能要改版了!