打印
[i.MX]

IMX6Q Linux LCD屏驱动显示

[复制链接]
8138|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好,我在使用IMAX6Q 驱动LCD屏(型号:B173RW01),该屏为双6位LVDS接口的,硬件上我们使用的是COREC核心板,使用的是DISP0 port,通过芯片THC63LVD827 将TTL转换为双6位LVDS。 现在我修改了文件 mxc_lcdif.c和board-mx6q_sabresd.c 中相应的部分,不管怎么改,屏显示始终不正确,能显示图像,但质量很差,**很多噪点、画面还会跳动。。。,我试过修改只ldb.c    ,设置u-boot参数 选择lvds  为什么也能显示出图像? 还有我的屏分辨率是1600*900  但是我设置成1600*900,图像显示不出来,出现很多条纹  。我设置成800*900 图像到时可以显示,只是质量很差,请问我的屏参数该怎么设置呢?

相关帖子

沙发
ach_dmatek| | 2015-8-20 11:40 | 只看该作者
你的问题应该是LCD显示参数设置不正确。LCD时序好好调试一下。显示有躁点应该是显示极性不对,上升沿或者下降沿对调一下看看。

使用特权

评论回复
板凳
piaoxuxxx|  楼主 | 2015-8-20 12:10 | 只看该作者
上升沿或者下降沿对调 是硬件上对调吗? 我刚接触这个,不懂啊 ,还有那个参数设置,我估计也是参数不对,就是不知道该如何填

使用特权

评论回复
地板
mini1986| | 2015-8-20 16:45 | 只看该作者
贴出修改的代码来看看......
光描述,很难知道问题在哪里......

使用特权

评论回复
5
piaoxuxxx|  楼主 | 2015-8-20 17:18 | 只看该作者
1、mxc_lcdif.c文件中 fb_videomode结构体中加如下代码       
     { "TQ-VGA_1024768", 60, 1600, 900, 18182,     /*800 900 18182 50 0 16 0 1 1*/
        799, 0,
        15, 0,
        1, 1,
        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
        FB_VMODE_NONINTERLACED,   
        0,},
2、board-mx6q_sabresd.c 文件 ipuv3_fb_platform_data 结构体加如下代码:
        {
                .disp_dev = "lcd",
                .interface_pix_fmt = IPU_PIX_FMT_RGB24,
                .mode_str = "TQ-VGA_1024768",    //改名字与上面一样 随便取的
                .default_bpp = 32,
                .int_clk = false,
                .late_init = false,
        },
3、u-boot参数设置
setenv bootargs video=mxcfb0:dev=lcd,TQ-VGA_1024768,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=48M

4、LCD屏是17.3寸的 1600*900 ,


使用特权

评论回复
6
piaoxuxxx|  楼主 | 2015-8-20 17:21 | 只看该作者
这个屏是DE模式的,现在的现象时图像跳动厉害,很多白色的看不清图像

QQ图片20150820171121.png (105.92 KB )

屏的时序图

屏的时序图

使用特权

评论回复
7
mini1986| | 2015-8-21 09:26 | 只看该作者
{
                .disp_dev = "lcd",
                .interface_pix_fmt = IPU_PIX_FMT_RGB24,
                .mode_str = "TQ-VGA_1024768",    //改名字与上面一样 随便取的
                .default_bpp = 32,
                .int_clk = false,
                .late_init = false,
        },
在数组的第几个位置?......
别这么小气,把代码贴全点......

使用特权

评论回复
8
aeromoon| | 2015-8-21 09:43 | 只看该作者
ach_dmatek 发表于 2015-8-20 11:40
你的问题应该是LCD显示参数设置不正确。LCD时序好好调试一下。显示有躁点应该是显示极性不对,上升沿或者下 ...

2楼的意思应该是时钟触发沿的选择,在硬件上芯片有一个接口可以选择输入时钟是上升沿还是下降沿,见下图

沿.bmp (136.65 KB )

沿.bmp

使用特权

评论回复
9
ach_dmatek| | 2015-8-21 11:44 | 只看该作者
顶楼上的。这个需要看LCD的手册,然后在软件中做相应的配置。

使用特权

评论回复
10
piaoxuxxx|  楼主 | 2015-8-24 09:42 | 只看该作者
mini1986 发表于 2015-8-21 09:26
{
                .disp_dev = "lcd",
                .interface_pix_fmt = IPU_PIX_FMT_RGB24,

第几个位置有影响吗

使用特权

评论回复
11
mini1986| | 2015-8-24 09:48 | 只看该作者
piaoxuxxx 发表于 2015-8-24 09:42
第几个位置有影响吗

你放到第一个位置试试......

使用特权

评论回复
12
piaoxuxxx|  楼主 | 2015-8-24 10:16 | 只看该作者
mini1986 发表于 2015-8-24 09:48
你放到第一个位置试试......

还是不行:(

使用特权

评论回复
13
mini1986| | 2015-8-24 10:23 | 只看该作者
你多贴出点代码来,让大家帮你看看......

使用特权

评论回复
14
piaoxuxxx|  楼主 | 2015-8-24 11:15 | 只看该作者
1、mxc_lcdif.c文件中 fb_videomode结构体中加如下代码
static struct fb_videomode lcdif_modedb[] = {
        {
        /* 800x480 @ 57 Hz , pixel clk @ 27MHz */
        "CLAA-WVGA", 57, 800, 480, 37037, 25, 75, 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, 23, 10, 10, 10,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
        {
        /* 1600*900@ 60 Hz , pixel clk @ 55MHz */   这段是我加的
        "TQ-VGA_1024768", 60, 1600, 916, 18182,     //分表率我试过800*900    1600*900  
        499, 300,
        10, 5,
        1, 1,
        FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
        FB_VMODE_NONINTERLACED,   
        0,},

};

2、board-mx6q_sabresd.c文件中
static struct ipuv3_fb_platform_data sabresd_fb_data[] =
{
        {    //这段是我加的
                .disp_dev = "lcd",
                .interface_pix_fmt = IPU_PIX_FMT_RGB24,
                .mode_str = "TQ-VGA_1024768",
                .default_bpp = 24,
                .int_clk = false,
                .late_init = false,
        },
        {
                .disp_dev = "ldb",
                .interface_pix_fmt = IPU_PIX_FMT_RGB666,
                .mode_str = "LDB-XGA",
                .default_bpp = 16,
                .int_clk = false,
                .late_init = false,
        },
#if 0
        { /*fb0*/
                .disp_dev = "ldb",
                .interface_pix_fmt = IPU_PIX_FMT_RGB666,
                .mode_str = "TQ_ldb_1024768",
                .default_bpp = 16,
                .int_clk = false,
                .late_init = false,
        },
#endif
        {
                .disp_dev = "hdmi",
                .interface_pix_fmt = IPU_PIX_FMT_RGB24,
                .mode_str = "1920x1080M@60",
                .default_bpp = 32,
                .int_clk = false,
                .late_init = false,
        },
        /*{
                .disp_dev = "lcd",
                .interface_pix_fmt = IPU_PIX_FMT_RGB24,
                .mode_str = "TQ-TN92",
                .default_bpp = 24,
                .int_clk = false,
                .late_init = false,
        },*/

};

图像闪的很厉害,出现很多白色的块,看不清图像

使用特权

评论回复
15
piaoxuxxx|  楼主 | 2015-8-24 13:45 | 只看该作者
飞思卡尔的工程师们,帮我看看啊

使用特权

评论回复
16
gardenhill| | 2015-8-25 10:24 | 只看该作者
你用的是split模式,我是直接用自带的双路lvds设置而成,不知道你的频率对不对,用示波器看看吧,感觉55Mhz的clk是单路的.

使用特权

评论回复
17
piaoxuxxx|  楼主 | 2015-8-25 10:45 | 只看该作者
gardenhill 发表于 2015-8-25 10:24
你用的是split模式,我是直接用自带的双路lvds设置而成,不知道你的频率对不对,用示波器看看吧,感觉55Mhz的cl ...

开发板有自带的双路LVDS      但那个不一样 我们屏接口是双6位LVDS 的 ,

使用特权

评论回复
18
piaoxuxxx|  楼主 | 2015-8-26 10:35 | 只看该作者
哎。。。。没人理睬

使用特权

评论回复
19
FSL_TICS_Rita| | 2015-8-26 16:35 | 只看该作者
piaoxuxxx 发表于 2015-8-26 10:35
哎。。。。没人理睬

楼主你好,请问你这里屏的参数都按照屏的数据手册都设置OK了吗?特别是频率,频率设置不对会出现闪屏的。

使用特权

评论回复
20
piaoxuxxx|  楼主 | 2015-8-27 09:57 | 只看该作者
FSL_TICS_Rita 发表于 2015-8-26 16:35
楼主你好,请问你这里屏的参数都按照屏的数据手册都设置OK了吗?特别是频率,频率设置不对会出现闪屏的。 ...

大师终于来了:lol   
你好,我的参数按照屏参数设置了,显示不对,也试过很多种其他参数,都没对。这里我有几个问题想问一下:
1,我们硬件上接的DISP0口,为什么我试过uboot参数设置显示ldb,并且我修改ldb.c ,屏的显示会有变化(按理说ldb.c 对应的硬件是LVDS口的输出呀)??
2,在board-mx6q_sabresd.h文件中有如下配置
      /* DISPLAY */
        MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK,
        MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15,                /* DE */
        MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN2,                /* HSync */
        MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN3,                /* VSync */
//        MX6Q_PAD_DI0_PIN4__IPU1_DI0_PIN4,                /* Contrast */
        MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0,
        MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1,
        MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2,
        MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3,
        MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4,
        MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5,
        MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6,
        MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7,
        MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8,
        MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9,
        MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10,
        MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11,
        MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12,
        MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13,
        MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14,
        MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15,
        MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16,
        MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17,
        MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18,
        MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19,
        MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20,
        MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21,
        MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22,
        MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23,
        MX6Q_PAD_GPIO_7__GPIO_1_7,                /* J7 - Display Connector GP */
        MX6Q_PAD_GPIO_9__GPIO_1_9,                /* J7 - Display Connector GP */
        /* MX6Q_PAD_NANDF_D0__GPIO_2_0,*/        /* J6 - LVDS Display contrast */

     这里我不明白,作为DE的管脚MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15,我还需要其他设置吗?LCD手册上说DE信号应为一个方波(好像是为了回场扫描)。




aaa.png (159.94 KB )

硬件连接

硬件连接

使用特权

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

本版积分规则

1

主题

14

帖子

0

粉丝