本帖最后由 醉月 于 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]
- 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
复制代码 当然,有的人可能会看见有这么一长串的内容- [lcd0_para]
- 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>
复制代码 我自己觉得,如果是测试阶段的话,倒没必要按照这串这么复杂的来,就按照简单的方式设置起来就可以了。如果要修改某些引脚的顺序,那倒是需要修改这个完整的部分了。
|