打印
[i.MX]

imx6s的LCD接口接VGA芯片输出VGA信号显示异常

[复制链接]
1878|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linux54|  楼主 | 2016-3-17 16:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
问题描述:最近在调试一个项目,遇到如标题所说的问题,特此来寻求下帮助。
1. 硬件连接情况就是imx6s的display0(LCD接口)接ADV7123芯片(VGA芯片)然后连接VGA接口--->LCD显示器(项目中的是800*600分辨率的lcd屏,为了调试问题,直接接到了电脑的液晶显示器上),但是最终出现的问题是一样的,本来想贴图的,但是用的ubuntu的系统,好像有点麻烦。。。就先描述下硬件吧,硬件的RGB都是8条线,所以采用了RGB24,bpp32的uboot参数。。。

2. 软件修改部分
     A.    BSP的板级文件修改如下:
static struct ipuv3_fb_platform_data sabr_fb_data[] = {
        { /*fb0*/
                .disp_dev               = "lcd",
                .interface_pix_fmt      = IPU_PIX_FMT_RGB24,
                .mode_str               =  "VGA800X600X60",   //我用的这个,下边的两个是为了测试不同的频率和bpp有没有什么影响
                .default_bpp            = 32,
                .int_clk                = false,
        .late_init = false,
        },
    {
        .disp_dev               = "lcd",
        .interface_pix_fmt      = IPU_PIX_FMT_RGB24,
        .mode_str               =  "VGA800X60X56",
        .default_bpp            = 24,
        .int_clk                = false,
        .late_init = false,
    },
        {
                .disp_dev               = "lcd",
                .interface_pix_fmt      = IPU_PIX_FMT_RGB24,
                .mode_str               =  "VGA1024X768X60",
                .default_bpp            = 24,
                .int_clk                = false,
        .late_init = false,
        },
};


static struct fsl_mxc_lcd_platform_data lcdif_data = {
        .ipu_id                = 0,
        .disp_id        = 0,
        .default_ifmt        = IPU_PIX_FMT_RGB24,   //我用这个
};
      B.   mxc_lcdif.c文件的修改如下:
static struct fb_videomode lcdif_modedb[] = {
        {
        /* 800x480 @ 57 Hz , pixel clk @ 27MHz */
        "CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {
        /* 800x480 @ 60 Hz , pixel clk @ 32MHz */
        "SEIKO-WVGA", 60, 800, 480, 29850, 89, 164, 10, 23, 10, 10,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {
        /* 800x480 @ 60 Hz , pixel clk @ 32MHz */
        "AT070TN83", 60, 800, 480, 29850, 89, 164, 23, 10, 10, 10,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},       
        {
        "WXGAPLUS", 60, 1440, 900, 9392, 80, 232, 1, 28, 152, 3,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},       
        {
        /* 320x480 @ 60 Hz , pixel clk @ 32MHz */
        "ILI9488_LCD35", 60, 320, 480, 49850, 96, 170, 1, 2, 4, 1,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {
        "VGA640X48060", 60, 640, 480, 39721, 16, 48, 10, 33, 96, 2,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {
              /*我用这个,其余的也都是为了测试,添加的项*/
        "VGA800X600X60", 60, 800, 600, 25000, 88, 40, 23, 1, 128, 4,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},       
        {

        "VGA1024X768X60", 60, 1024, 768, 15385, 24, 160, 29, 3, 136, 6,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {

        "VGA768X576X60", 60, 768, 576, 28604, 24, 104, 1, 17, 80, 3,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {

        "VGA800X600X56", 56, 800, 600, 27778, 128, 24, 22, 1, 72, 2,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {

        "VGA800X600X63", 63, 800, 600, 25806, 88, 56, 8, 19, 32, 4,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
};

3. uboot的参数设置:
setenv bootargs 'console=ttymxc3,115200n8 ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs rootwait rw mtdparts=gpmi-nand:2m(boot)ro,6m(kernel)ro,16m(**),150m(rootfs),-(data) video=mxcfb0:lcd,VGA800X600X60,if=RGB24,bpp=32 fb0base=0x27b00000  fbmem=28M'
4. 关于VGA的时序设置,我是按照标准的VGA时序调整的。
修改已经描述完毕,现在出现的问题是图像质量很差劲,感觉像是丢掉了一些颜色似的,显示一个字,断断续续的,不连贯,所以看到的就是断断续续的一个字,很不清楚。。。找了好久,不知道哪里的问题额,请大家帮忙看看。。。。

相关帖子

沙发
linux54|  楼主 | 2016-3-17 23:01 | 只看该作者
怎么没有人啊,自己给自己顶一个!

使用特权

评论回复
板凳
gardenhill| | 2016-3-18 16:03 | 只看该作者
你先看看你的rgb输出是否正常,再去查查转换芯片是否正确,光贴个代码,说明不了问题.

使用特权

评论回复
地板
linux54|  楼主 | 2016-3-18 16:06 | 只看该作者
gardenhill 发表于 2016-3-18 16:03
你先看看你的rgb输出是否正常,再去查查转换芯片是否正确,光贴个代码,说明不了问题. ...

测试过了,单独的黑,白,R,G,B,都没有问题。。。

使用特权

评论回复
5
gardenhill| | 2016-3-18 16:07 | 只看该作者
rgb接口没有问题的话,就出在转换芯片上了,让硬件工程师查查.

使用特权

评论回复
6
linux54|  楼主 | 2016-3-18 17:51 | 只看该作者
gardenhill 发表于 2016-3-18 16:07
rgb接口没有问题的话,就出在转换芯片上了,让硬件工程师查查.

硬件工程师又查了一遍,说没有问题的。。等下我上图。。这个lcd的驱动,上边我的修改应该是没有问题的吧,感觉都改全了啊

使用特权

评论回复
7
linux54|  楼主 | 2016-3-18 18:24 | 只看该作者
以下是现在通过应用mmap刷图看到的情况,请大家帮忙分析下,看看是哪里问题,单独显示红色,蓝色,绿色,以及黄色,都没有问题的

4549702_1279362147967_1024x1024.bmp (225.05 KB )

图片原图

图片原图

BUG.bmp (444.79 KB )

现在显示是这样的

现在显示是这样的

H.bmp (443.02 KB )

单独的显示黄色

单独的显示黄色

使用特权

评论回复
8
linux54|  楼主 | 2016-3-18 18:25 | 只看该作者
gardenhill 发表于 2016-3-18 16:07
rgb接口没有问题的话,就出在转换芯片上了,让硬件工程师查查.

图片已经上传了,求同分析

使用特权

评论回复
9
gardenhill| | 2016-3-21 10:55 | 只看该作者
要么就是硬件问题,要么就是哪个接口的波形问题,我这边也出现过类似的问题,不过我的是lvds的,问题出在触发行,列,点触发波形的问题正反问题上.

使用特权

评论回复
10
gardenhill| | 2016-3-21 10:59 | 只看该作者
建议去认真读一下 ADV7123 的手册,再看看你的驱动关于行列扫描波形这块问题上.

使用特权

评论回复
11
mini1986| | 2016-4-14 08:31 | 只看该作者
楼主搞定了没有,分享下经验......

使用特权

评论回复
12
linux54|  楼主 | 2016-12-26 18:43 | 只看该作者
搞定了,忘了结贴了,不好意思。是 lcdif_modedb里倒数第二个成员的问题,是什么现在又忘了,不过可以一个个试试,肯定能试出来,谢谢大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

23

帖子

1

粉丝