S3C2440 解决LCD图像偏移问题

来源:互联网 发布:电脑程序编程培训 编辑:程序博客网 时间:2024/06/12 08:58

        我一直以为我的LCD已经移植好了,但是在做frame buffer编程的时候却发现显示的图像不对,一开始我怀疑的是测试程序的问题,但是仔细看了几遍觉得不可能错,因为测试程序很简单,就是让屏幕全白,但是板子上显示的是两块白色区域,中间被一条黑色带隔开了。我猜测可能是LCD没有移植正确。

        我查了很多网上的参数,每个人各有不同,我还看了同学和老师的,也是各有不同。于是我一一试了一遍,结果更糟了,反而没有我一开始设置的参数好。我的屏幕是480*272的,参数是

<span style="font-size:10px;">static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {.lcdcon5= S3C2410_LCDCON5_FRM565 |  S3C2410_LCDCON5_INVVLINE |  S3C2410_LCDCON5_INVVFRAME |  S3C2410_LCDCON5_PWREN |  S3C2410_LCDCON5_HWSWP,.type= S3C2410_LCDCON1_TFT,.width=480,   //240.height=272,//320   .pixclock= 40000,// 40000, /* HCLK 60 MHz, divisor 10 */.xres= 480 ,  //240.yres= 272 ,  //320   .bpp= 16,.left_margin= 8,//19,//20,.right_margin= 43,//10,//8,.hsync_len= 2,//4,.upper_margin= 4,//8,.lower_margin= 12,//2,//7,.vsync_len= 10,//8,//4,};</span>

试了几轮之后,我判定应该也不是这里的问题,最后看到这么一句代码:

static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {.displays= &smdk2440_lcd_cfg,.num_displays= 1,.default_display = 0,#if 0/* currently setup by downloader */.gpccon= 0xaa940659,.gpccon_mask= 0xffffffff,.gpcup= 0x0000ffff,.gpcup_mask= 0xffffffff,.gpdcon= 0xaa84aaa0,.gpdcon_mask= 0xffffffff,.gpdup= 0x0000faff,.gpdup_mask= 0xffffffff,#endif.lpcsel= ((0xCE6) & ~7) | 1<<4,};
最有一句中,默认是1<<4,但是老师的是1<<1,我照着改了之后果然成功。

我又翻看了s3c2440的芯片资料:


如果是1<<4,那么RES_SEL这一项将会是 0 ,而1<<1的话则是1,屏幕刚好差了一个90度,所以图像偏移了。


0 0
原创粉丝点击