基于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)