i.mx6 使用RGB接口LCD显示问题

cancel
Showing results for 
Search instead for 
Did you mean: 

i.mx6 使用RGB接口LCD显示问题

9,292 Views
wilsonchen
Contributor III

hi all,

我现在使用i.mx6q的RGB接口来驱动3.1inch的LCD,18bit,通过spi初始化(这里使用GPIO模拟SPI)。所用系统为android4.3,Linux3.0.35..LCD控制ic为hx8369a。所用板子的RGB接口可以使用RGB转VGA转接板,连接到电脑显示器上显示,也就是此RGB接口是没有问题的。

现在初始化成功,能点亮LCD了。但是遇到几个问题:

1.图像为隔行显示的,而不是逐行

2.图像分成4部分

3.图像偏移

152442_152442.jpgQQ图片20160526161055.jpg152443_152443.jpgQQ图片20160526161102.jpg

 

我修改代码如下:

1.board-mx6q_sabresd.c

static struct ipuv3_fb_platform_data sabresd_fb_data[] = {

       {

  .disp_dev = "lcd",

  .interface_pix_fmt = IPU_PIX_FMT_RGB666,

  .mode_str = "LCD-WVGA",

  .default_bpp = 18,

  .int_clk = false,

  .late_init = false,

  },     

        {

  .disp_dev = "hdmi",

  .interface_pix_fmt = IPU_PIX_FMT_RGB24,

  .mode_str = "1920x1080M@60",

  .default_bpp = 32,

  .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_RGB666,

};

 

2.mxc_lcdif.c

{
"LCD-WVGA", 60, 480, 800, 33105,
30, 80,
4, 4,
10, 4,
0,
FB_VMODE_NONINTERLACED,
0,},

 

3.uboot启动参数使用:

setenv bootargs console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=lcd,LCD-WVGA,if=RGB666,bpp=18 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=40M an@@@@ !droidboot.hardware=freescale

 

4.LCD SPI初始化代码tl032wvv02_gpio.c

 

LCD初始化代码部分已经和LCD厂家,控制ic厂家进行联合调试,调整初始化LCD寄存器对显示效果基本没有影响,怎么调还是上面的显示效果。

然后调整mxc_lcdif.c中的lcd参数,不管怎么调整,图像显示效果都是隔行显示的,不能出现逐行显示的效果。

然后调整hfp hbp这两个参数,除了上面红字部分的,如果改成其他,不管参数增加还是减小,图像会分成更加多块,或者倾斜混乱了,完全没有改善一点的迹象。

 

LCD原理图,规格书,datasheet和相关代码文件在下面附近中。

 

LCD的电路已经多次确认是好的,信号也是正确的。

 

请帮忙分析以上问题,给出建议或者思路!

 

谢谢

Original Attachment has been moved to: tl032wvv02_gpio.c.zip

Original Attachment has been moved to: mxc_lcdif.c.zip

Labels (2)
0 Kudos
7 Replies

2,276 Views
yukunhao
Contributor I

HI Wilson,

      我正在学习使用imx6的spi接口驱动lcd,但是不清楚你这方面的问题解决没有?我想问下您具体修改了哪些相关的文件和代码?有关pin和驱动的修改能否详细介绍下,谢谢!

0 Kudos

2,275 Views
b45499
NXP TechSupport
NXP TechSupport

Hi wilson,

Here you can go to check up the screen parameter refer to its datasheet. Some parameter maybe not right. You can refer to the thread in our community made by our engineerPorting LVDS LCD With Low Resolution to i.MX6
Have a great day,
Dan

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Mark Correct  button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,276 Views
wilsonchen
Contributor III

Porting LVDS LCD With Low Resolution to i.MX6  这个只是说明如何使用低分辨率屏的修改方法。

我所用的屏的分辨率为480*800,时钟符合代码默认的代码支持的。

我的问题是:

怎么解决interlaced显示,都已经设置为逐行输出了

怎么解决屏幕图像分成4份显示。

SPI初始化LCD寄存器关于屏幕参数的已经修改过很多了,但是对屏的显示还是没影响。mxc_lcdif.c的文件里面,hfp hbp hsync这些也进行了很多尝试,但是并没有改善,最好的情况就是上面图片显示的效果。

0 Kudos

2,276 Views
b45499
NXP TechSupport
NXP TechSupport

HI Wilson,

关于逐行显示的问题建议你参考我们论坛中的帖子Patch for iMX6 BSP to support interlaced display on HDMI and LCD interface

Have a nice day

Dan

0 Kudos

2,276 Views
wilsonchen
Contributor III

hi wang,

现在通过分析LCD波形,根据LCD datasheet的时序说明,需要对DE脚进行控制。但是我在linux3.0.35内核源码里面并没有找到怎么修改RGB LCD输出为DE mode的相关代码

0 Kudos

2,276 Views
mrleo
Contributor IV

Hi wilson,

try below:

uboot启动参数使用:

setenv bootargs console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=lcd,LCD-WVGA,if=RGB666,bpp=16 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=40M an@@@@ !droidboot.hardware=freescale

{

  .disp_dev = "lcd",

  .interface_pix_fmt = IPU_PIX_FMT_RGB666,

  .mode_str = "LCD-WVGA",

  .default_bpp = 16,

  .int_clk = false,

  .late_init = false,

  },     

2,275 Views
b45499
NXP TechSupport
NXP TechSupport

Hi wilson,

从你的显示现象可以看出来是你屏的一些参数及timings没有设置合适,建议你参考屏的手册检查一下。如下的两个文档对你移植屏的驱动及理解有一定的帮助。

有问题我们再沟通。

Have a nice day

Dan

0 Kudos