醉月 发表于 2013-6-27 15:11:13

Cubieboard 点亮 4.3寸TFT-LCD笔记

本帖最后由 醉月 于 2013-6-27 16:29 编辑

每一个笔记前面,我喜欢写一些闲话,啰嗦一段。交代一些东西。=================================================================
首先,LCD硬件简述       LCD要显示图形,需要两部分,一部分是LCD控制器,一部分是LCD驱动器—它们的作用,好比人的大脑和消化系统:前面提供思维控制,后面提供能量。而实际中的LCD驱动器,大多是和LCD的屏幕集成在一块儿的;而LCD控制器有可能是和LCD屏幕集成在一块儿的,也有可能是剥离的,处于别的电路中—如果LCD集成了LCD控制器的话,一般用于单片机这类硬件资源比较匮乏的设备上;如果是后一种的话,那么就是需要外界电路或者芯片来支持。       在A10中已经有了LCD控制器,那么要在A10的设备上挂一个TFT的话,就不需要这个LCD再有LCD控制器,只需要它自己有驱动器即可。       当然,如果一个LCD屏本身已经有了LCD控制器,然后再接到A10板子上,QQ群里有人说这会产生矛盾—因为两个控制器去控制一个屏,会出问题的。
再说LCD接口标准       我以为LCD也应该像USB那样有一个统一的标准,但是网上对LCD接口的定义似乎并不是只有一种,一般的分为同步RGB接口、MCU接口、LVDS接口。当然,可能还有其类型接口,那么不同接口,接线定义就有可能不同,而每种接口的lcd屏的工作可能也稍有不同。比如同步RGB接口一般用来播放动态的东西,而MCU一般用来播放静态的东西。所以购买的时候,一定要拿到该屏的相关手册,不然后面是没法操作的。
最后说说LCD的几个时序图       VCLK:像素时钟信号:用于锁存像素时钟       HSYNC:行同步信号:每发一个脉冲,表明一行新的数据发出来了        VSYNC:帧同步信号:每发一个脉冲,表明一帧新的数据发出来了       VDEN:数据有效标志信号       VD:图像数据
(对于HSYNC和VSYNC,我个人理解是它们俩组成了TFT屏上的像素点。)
由上面可以看出,我们可能接的线有时序线,当然,还有数据线。更详细的资料,或者说更准确的资料,请移步google。下面写我的连线方式和需要修改的文件内容。====================================================================
我的TFT 是50p 3.4寸的,其实就是从ARM 9板子拆下来的。因为s3c2440内部也集成了LCD控制器,所以拿过来刚刚好用。然后连线的方式,我使用的是TFT的RGB接口,因为TFT会带有RGB接口,同时以为我这个系统需要播放一些会动的物事。同时,同步RGB接口似乎又依据RGB565、RGB666、RGB656的方式来进行区分了,而我采用的是RGB565也就是16bit的,并行RGB方式。那么并行RGB同A10连线方式如下图
注意了,我说的并行同步RGB连线方式,那么肯定对应的也还有串行同步RGB连线方式,其实论坛里有相关的资料,我一会儿以附件的方式发送上来。
==============
那么我的50p TFT又该怎么连线呢?请看下图:

当然,并行RGB接口和我的TFT屏上是有一个对应关系的,图上也已经注明了:也没啥,就是端子的标示不同而已
然后连接到U14上去,端子连接的线路已经分别注明了。可能这个图很小,一会儿我也以附件的方式发送一遍这个图。而U14的具体图示,请去cubieboard官网下载CB的硬件电路图,然后找到U14的电路部分即可。
给个链接:
http://cubieboard.org/download/
这个链接很多人都在里面下载 官网操作系统,其实硬件电路图也就这个网页里面,就在上半部分。好像这会儿CB官网被那啥了,没进去,也就没法截图了。
=====================
然后各种线连接OK 后,可以焊接起来,也可以想其他办法,我自己的是焊接起来的。对了,这里说下,我的TFT它是带COG/COF连接的,同时在TFT屏驱动板子的边缘,也引出了这些引脚---就是一排50母孔,这些引脚定义顺序是和COF/COG里面的顺序是一样的,请放心使用就行。
======================
硬件电路连接好后,就去修改script.bin中的内容,以前修改VGA的时候只是修改一部分,而这里需要修改两部分:一部分是说CB这个设备的输出设备是什么,在dis_init段落修改;这里选择了LCD,那么就还需要去配置LCD部分进行修改,因为不同的LCD分辨率,大小等等不同。且看下面操作:
------------
首先指定输出设备:
disp_init_enable = 1
disp_mode = 0

screen0_output_type = 1
screen0_output_mode = 4

screen1_output_type = 1
screen1_output_mode = 4

fb0_framebuffer_num = 2
fb0_format = 10
fb0_pixel_sequence = 0
fb0_scaler_mode_enable = 0

fb1_framebuffer_num = 2
fb1_format = 10
fb1_pixel_sequence = 0
fb1_scaler_mode_enable = 0再次去设定LCD的分辨率的东西,我直接是设的RGB 480X272的,如果看官是其他的,请按照自己的实际进行设置:;RGB 480x272    module name: KD43G18-40NB-A11
lcd_x                  = 480
lcd_y                  = 272
lcd_dclk_freq            = 9
lcd_if                   = 0
lcd_hbp                  = 2
lcd_ht                   = 525
lcd_vbp                  = 2
lcd_vt                   = 572当然,有的人可能会看见有这么一长串的内容
lcd_used = 1
lcd_x = 800
lcd_y = 480
lcd_dclk_freq = 33
lcd_pwm_freq = 1000
lcd_pwm_pol = 0
lcd_swap = 0
lcd_if = 0
lcd_hbp = 215
lcd_ht = 1055
lcd_vbp = 34
lcd_vt = 1050
lcd_hv_if = 0
lcd_hv_smode = 0
lcd_hv_s888_if = 0
lcd_hv_syuv_if = 0
lcd_hv_vspw = 0
lcd_hv_hspw = 0
lcd_hv_lde_used = 0
lcd_hv_lde_iovalue = 0
lcd_lvds_ch = 0
lcd_lvds_mode = 0
lcd_lvds_bitwidth = 0
lcd_lvds_io_cross = 0
lcd_cpu_if = 0
lcd_cpu_da = 0
lcd_frm = 0
lcd_io_cfg0 = 0x10000000
lcd_io_cfg1 = 0
lcd_io_strength = 0
lcd_bl_en_used = 1
lcd_bl_en = port: PH07<1><0><default><1>
lcd_power_used = 1
lcd_power = port: PH08<1><0><default><1>
lcd_pwm_used = 1
lcd_pwm = port:PB02<2><default><default><default>
lcd_gpio_0 =
lcd_gpio_1 =
lcd_gpio_2 =
lcd_gpio_3 =
lcdd0 = port:PD00<2><default><default><default>
lcdd1 = port:PD01<2><default><default><default>
lcdd2 = port:PD02<2><default><default><default>
lcdd3 = port:PD03<2><default><default><default>
lcdd4 = port:PD04<2><default><default><default>
lcdd5 = port:PD05<2><default><default><default>
lcdd6 = port:PD06<2><default><default><default>
lcdd7 = port:PD07<2><default><default><default>
lcdd8 = port:PD08<2><default><default><default>
lcdd9 = port:PD09<2><default><default><default>
lcdd10 = port:PD10<2><default><default><default>
lcdd11 = port:PD11<2><default><default><default>
lcdd12 = port:PD12<2><default><default><default>
lcdd13 = port:PD13<2><default><default><default>
lcdd14 = port:PD14<2><default><default><default>
lcdd15 = port:PD15<2><default><default><default>
lcdd16 = port:PD16<2><default><default><default>
lcdd17 = port:PD17<2><default><default><default>
lcdd18 = port:PD18<2><default><default><default>
lcdd19 = port:PD19<2><default><default><default>
lcdd20 = port:PD20<2><default><default><default>
lcdd21 = port:PD21<2><default><default><default>
lcdd22 = port:PD22<2><default><default><default>
lcdd23 = port:PD23<2><default><default><default>
lcdclk = port:PD24<2><default><default><default>
lcdde = port:PD25<2><default><default><default>
lcdhsync = port:PD26<2><default><default><default>
lcdvsync = port:PD27<2><default><default><default>我自己觉得,如果是测试阶段的话,倒没必要按照这串这么复杂的来,就按照简单的方式设置起来就可以了。如果要修改某些引脚的顺序,那倒是需要修改这个完整的部分了。

醉月 发表于 2013-6-27 16:29:31

本帖最后由 醉月 于 2013-8-7 14:42 编辑

==============
最后说说我遇到的问题:
1,开始lubuntu只是显示在了屏幕的右半部分,结果还是修改script.bin中的lcd的分辨率解决的
2,lubunut不能完全显示整个桌面,这个可能需要修改xorg.conf中的某些内容了。
==============
提醒:

按照群中高人的指点,A10的屏选那种单片机无法驱动的,应该就可以。因为单片机可以驱动的话,屏应该自身就集成了一个LCD控制器,而A10也有自己的LCD控制器,这个可能会造成困扰。但是由于自己没试,无法确定;

LCD的接口有许多种,不同接口的屏,用途是不同的。购买屏的时候,一定要拿到屏的手册,不然就没法知道屏的引脚怎么定义的。

我的接线方式是LCD-TFT的同步RGB接口,并且是同步RGB下的并行RGB接线方式。如果你的是MCU接口或者LVDS接口的话,可能真的只能作为参考了。LVDS的话,linux-sunxi.org上已经有资料了:
http://linux-sunxi.org/Cubieboard/LVDS
而其他接口方式,我会上传<<A10 LCD调试手册>>里面其实已经说明了好几种屏的接法,而修改script.bin的内容,请详细参考
http://linux-sunxi.org/Fex_Guide#.5Bdisp_init.5D

最后就是废话较多,请看重点吧。同时,谢谢群中的@xldzz的指点,让我绕开了一个可能的邪路。

效果图:
http://forum.cubietech.com/forum.php?mod=viewthread&tid=652
======================
本来说,周末要好好整理下这个笔记,但是周末安排有变,就提前发来了,质量就差了。
over





ps: 特别说明:
这个里面的附件图上标识有误,经过群中朋友的指点已经查看出来了。由于针对的是TQ2440 4.3寸的TFT,所以我将不做修改了,如果有相同这款屏的这款屏,请根据你的电路手册 + 我的附件,进行修正下。谢谢!

醉月 发表于 2013-6-27 16:34:58

最后就是说,触摸屏这一块儿,线已经连了,在图上也已经标上了,但是还没有修改script.bin相关的地方。所以TFT触摸效果还没出来,另外由于是测试的原因,然后TFT的背光明亮当时是没连接的,是直接接了高电平。不过图上都已经做了修改的。

WindLand 发表于 2013-6-27 17:03:48

先顶再看~{:soso_e179:}

qiaoge 发表于 2013-6-27 20:24:53

看完顶一个,希望屏幕可以用一些比较薄的屏幕

醉月 发表于 2013-6-27 22:18:11

qiaoge 发表于 2013-6-27 20:24 static/image/common/back.gif
看完顶一个,希望屏幕可以用一些比较薄的屏幕

我的屏是拆下来的,测试嘛。如果是实际中用的话,就选购啦

unprince 发表于 2013-6-27 22:50:35

显示屏的接口实在是太混乱了,没有资料也没有标注基本上没有办法使用
我也有几块屏,可怜都不会用

醉月 发表于 2013-6-27 23:27:14

unprince 发表于 2013-6-27 22:50 static/image/common/back.gif
显示屏的接口实在是太混乱了,没有资料也没有标注基本上没有办法使用
我也有几块屏,可怜都不会用 ...

主要是拿到该屏的手册,看这个屏的引脚是怎么定义的,这个是最重要的,不然根本没法连接。

寒寒 发表于 2013-6-29 17:18:22

这样说,我手上一张stm32开发板上的TFT不能在这板子上面跑啦{:soso_e126:}

醉月 发表于 2013-6-29 23:51:29

寒寒 发表于 2013-6-29 17:18 static/image/common/back.gif
这样说,我手上一张stm32开发板上的TFT不能在这板子上面跑啦

因为项目比较忙,所以我没有继续鼓捣那块stm32的屏,所以,并不能断定,就一定不能用...   也许能,也许不能,需要试试..   因为当时比较忙,也许有的地方没搞正确就放弃了,也有可能。
页: [1] 2 3 4 5
查看完整版本: Cubieboard 点亮 4.3寸TFT-LCD笔记