CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 65014|回复: 42

Cubieboard 点亮 4.3寸TFT-LCD笔记

[复制链接]
发表于 2013-6-27 15:11:13 | 显示全部楼层 |阅读模式
本帖最后由 醉月 于 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:图像数据

(对于HSYNCVSYNC,我个人理解是它们俩组成了TFT屏上的像素点。)

由上面可以看出,我们可能接的线有时序线,当然,还有数据线。
更详细的资料,或者说更准确的资料,请移步google。下面写我的连线方式和需要修改的文件内容。
====================================================================
我的TFT 50p 3.4寸的,其实就是从ARM 9板子拆下来的。因为s3c2440内部也集成了LCD控制器,所以拿过来刚刚好用。然后连线的方式,我使用的是TFTRGB接口,因为TFT会带有RGB接口,同时以为我这个系统需要播放一些会动的物事。同时,同步RGB接口似乎又依据RGB565RGB666RGB656的方式来进行区分了,而我采用的是RGB565也就是16bit的,并行RGB方式。那么并行RGBA10连线方式如下图

注意了,我说的并行同步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分辨率,大小等等不同。且看下面操作:
------------
首先指定输出设备:
  1. [disp_init]
  2. disp_init_enable = 1
  3. disp_mode = 0

  4. screen0_output_type = 1
  5. screen0_output_mode = 4

  6. screen1_output_type = 1
  7. screen1_output_mode = 4

  8. fb0_framebuffer_num = 2
  9. fb0_format = 10
  10. fb0_pixel_sequence = 0
  11. fb0_scaler_mode_enable = 0

  12. fb1_framebuffer_num = 2
  13. fb1_format = 10
  14. fb1_pixel_sequence = 0
  15. fb1_scaler_mode_enable = 0
复制代码
再次去设定LCD的分辨率的东西,我直接是设的RGB 480X272的,如果看官是其他的,请按照自己的实际进行设置:
  1. ;RGB 480x272    module name: KD43G18-40NB-A11
  2. lcd_x                    = 480
  3. lcd_y                    = 272
  4. lcd_dclk_freq            = 9
  5. lcd_if                   = 0
  6. lcd_hbp                  = 2
  7. lcd_ht                   = 525
  8. lcd_vbp                  = 2
  9. lcd_vt                   = 572
复制代码
当然,有的人可能会看见有这么一长串的内容
  1. [lcd0_para]
  2. lcd_used = 1
  3. lcd_x = 800
  4. lcd_y = 480
  5. lcd_dclk_freq = 33
  6. lcd_pwm_freq = 1000
  7. lcd_pwm_pol = 0
  8. lcd_swap = 0
  9. lcd_if = 0
  10. lcd_hbp = 215
  11. lcd_ht = 1055
  12. lcd_vbp = 34
  13. lcd_vt = 1050
  14. lcd_hv_if = 0
  15. lcd_hv_smode = 0
  16. lcd_hv_s888_if = 0
  17. lcd_hv_syuv_if = 0
  18. lcd_hv_vspw = 0
  19. lcd_hv_hspw = 0
  20. lcd_hv_lde_used = 0
  21. lcd_hv_lde_iovalue = 0
  22. lcd_lvds_ch = 0
  23. lcd_lvds_mode = 0
  24. lcd_lvds_bitwidth = 0
  25. lcd_lvds_io_cross = 0
  26. lcd_cpu_if = 0
  27. lcd_cpu_da = 0
  28. lcd_frm = 0
  29. lcd_io_cfg0 = 0x10000000
  30. lcd_io_cfg1 = 0
  31. lcd_io_strength = 0
  32. lcd_bl_en_used = 1
  33. lcd_bl_en = port: PH07<1><0><default><1>
  34. lcd_power_used = 1
  35. lcd_power = port: PH08<1><0><default><1>
  36. lcd_pwm_used = 1
  37. lcd_pwm = port:PB02<2><default><default><default>
  38. lcd_gpio_0 =
  39. lcd_gpio_1 =
  40. lcd_gpio_2 =
  41. lcd_gpio_3 =
  42. lcdd0 = port:PD00<2><default><default><default>
  43. lcdd1 = port:PD01<2><default><default><default>
  44. lcdd2 = port:PD02<2><default><default><default>
  45. lcdd3 = port:PD03<2><default><default><default>
  46. lcdd4 = port:PD04<2><default><default><default>
  47. lcdd5 = port:PD05<2><default><default><default>
  48. lcdd6 = port:PD06<2><default><default><default>
  49. lcdd7 = port:PD07<2><default><default><default>
  50. lcdd8 = port:PD08<2><default><default><default>
  51. lcdd9 = port:PD09<2><default><default><default>
  52. lcdd10 = port:PD10<2><default><default><default>
  53. lcdd11 = port:PD11<2><default><default><default>
  54. lcdd12 = port:PD12<2><default><default><default>
  55. lcdd13 = port:PD13<2><default><default><default>
  56. lcdd14 = port:PD14<2><default><default><default>
  57. lcdd15 = port:PD15<2><default><default><default>
  58. lcdd16 = port:PD16<2><default><default><default>
  59. lcdd17 = port:PD17<2><default><default><default>
  60. lcdd18 = port:PD18<2><default><default><default>
  61. lcdd19 = port:PD19<2><default><default><default>
  62. lcdd20 = port:PD20<2><default><default><default>
  63. lcdd21 = port:PD21<2><default><default><default>
  64. lcdd22 = port:PD22<2><default><default><default>
  65. lcdd23 = port:PD23<2><default><default><default>
  66. lcdclk = port:PD24<2><default><default><default>
  67. lcdde = port:PD25<2><default><default><default>
  68. lcdhsync = port:PD26<2><default><default><default>
  69. lcdvsync = port:PD27<2><default><default><default>
复制代码
我自己觉得,如果是测试阶段的话,倒没必要按照这串这么复杂的来,就按照简单的方式设置起来就可以了。如果要修改某些引脚的顺序,那倒是需要修改这个完整的部分了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 3威望 +20 金钱 +20 贡献 +20 收起 理由
upszhang + 5 + 5 + 5 很给力!
LEON3 + 5 + 5 + 5 很给力!
cubieplayer + 10 + 10 + 10 很给力!很赞的资料

查看全部评分

回复

使用道具 举报

 楼主| 发表于 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的背光明亮当时是没连接的,是直接接了高电平。不过图上都已经做了修改的。
回复 支持 反对

使用道具 举报

发表于 2013-6-27 17:03:48 | 显示全部楼层
先顶再看~{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2013-6-27 20:24:53 | 显示全部楼层
看完顶一个,希望屏幕可以用一些比较薄的屏幕
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-27 22:18:11 | 显示全部楼层
qiaoge 发表于 2013-6-27 20:24
看完顶一个,希望屏幕可以用一些比较薄的屏幕

我的屏是拆下来的,测试嘛。如果是实际中用的话,就选购啦
回复 支持 反对

使用道具 举报

发表于 2013-6-27 22:50:35 | 显示全部楼层
显示屏的接口实在是太混乱了,没有资料也没有标注基本上没有办法使用
我也有几块屏,可怜都不会用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-27 23:27:14 | 显示全部楼层
unprince 发表于 2013-6-27 22:50
显示屏的接口实在是太混乱了,没有资料也没有标注基本上没有办法使用
我也有几块屏,可怜都不会用 ...

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

使用道具 举报

发表于 2013-6-29 17:18:22 | 显示全部楼层
这样说,我手上一张stm32开发板上的TFT不能在这板子上面跑啦{:soso_e126:}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-29 23:51:29 | 显示全部楼层
寒寒 发表于 2013-6-29 17:18
这样说,我手上一张stm32开发板上的TFT不能在这板子上面跑啦

因为项目比较忙,所以我没有继续鼓捣那块stm32的屏,所以,并不能断定,就一定不能用...   也许能,也许不能,需要试试..   因为当时比较忙,也许有的地方没搞正确就放弃了,也有可能。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 17:55 , Processed in 0.031104 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部