LCD顯示錯(cuò)位問(wèn)題解決
但是顯示出來(lái)的圖像有錯(cuò)位,如下圖,拍得不清楚,可以看到,比較亮的那塊區(qū)域是minigui的一個(gè)程序
本文引用地址:http://m.butianyuan.cn/article/201611/317264.htm右邊一塊區(qū)域和上邊一塊區(qū)域是黑的。
當(dāng)時(shí)由于課題時(shí)間比較緊,這個(gè)問(wèn)題也沒有去解決,這兩天再來(lái)解決這個(gè)問(wèn)題,看了移植部分的代碼,沒有發(fā)現(xiàn)什么錯(cuò)誤,然后決定分析lcd驅(qū)動(dòng)的源代碼,昨天在網(wǎng)上看到幾篇lcd驅(qū)動(dòng)分析的文章,寫得那是相當(dāng)好,看了這是有種痛快淋漓的感覺,花了幾個(gè)小時(shí)看完了驅(qū)動(dòng)的源代碼,不過(guò)還是沒有看出什么問(wèn)題,今天下午在飛凌嵌入式技術(shù)論壇上找到了答案,其實(shí)問(wèn)題還是初始化的值不對(duì),當(dāng)然這個(gè)我早就猜到了,但是我不知道修改那個(gè)參數(shù),下面說(shuō)明一下如何修改。
static struct s3c2410fb_mach_info s3c2410_lcd_info __initdata = {
.fixed_syncs = 0,
.regs = {
.lcdcon1 = S3C2410_LCDCON1_TFT16BPP |
S3C2410_LCDCON1_TFT |
// S3C2410_LCDCON1_ENVID |
S3C2410_LCDCON1_CLKVAL(1),
.lcdcon2 =S3C2410_LCDCON2_VBPD(15)| S3C2410_LCDCON2_VFPD(5) | S3C2410_LCDCON2_VSPW(1),
.lcdcon3 =S3C2410_LCDCON3_HBPD(37)| S3C2410_LCDCON3_HFPD(40),
.lcdcon4 = S3C2410_LCDCON4_HSPW(31) | S3C2410_LCDCON4_MVAL(13),
.lcdcon5 = S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_HWSWP | S3C2410_LCDCON5_PWREN|S3C2410_LCDCON5_INVVLINE|S3C2410_LCDCON5_INVVFRAME ,
},
.lpcsel = 0,// ((0xCE6) & ~7) | 1<<4,
.gpccon= 0xaaaaaaaa,
.gpccon_mask= 0xffffffff,
.gpcup= 0xffffffff,
.gpcup_mask= 0xffffffff,
.gpdcon= 0xaaaaaaaa,
.gpdup = 0xFFFFFFFF,
.gpdup_mask= 0xffffffff,
.width = 320,
.height = 240,
.yres = {
.min = 240,
.max = 240,
.defval = 240,
},
.xres = {
.min = 320,
.max = 320,
.defval = 320,
},
.bpp = {
.min = 16,
.max = 16,
.defval = 16,
},
};
這段代碼是用于lcd初始化的,就是修改兩個(gè)地方
.lcdcon2 =S3C2410_LCDCON2_VBPD(15)| S3C2410_LCDCON2_VFPD(5) | S3C2410_LCDCON2_VSPW(1),
S3C2410_LCDCON2_VBPD(15)這個(gè)15是我修改好的值,這個(gè)值越大 顯示的圖像就越往下偏.
這個(gè)值越小 顯示的圖像就越往上偏.
lcdcon3 =S3C2410_LCDCON3_HBPD(37)| S3C2410_LCDCON3_HFPD(40),
S3C2410_LCDCON3_HBPD(37)這個(gè)37是我修改好的值,這個(gè)值越大 顯示的圖像就越往右偏
這個(gè)值越小 顯示的圖像就越往左偏
當(dāng)然這兩個(gè)參數(shù)的取值是有范圍的,具體要參考lcd的數(shù)據(jù)手冊(cè)。
評(píng)論