TI中文支持网
TI专业的中文技术问题搜集分享网站

AM335 LCD 部分的硬件设计及软件配置

AM335X作为一颗高性价比的cortex-a8芯片,其广泛应用的一个应用就是人机界面。而在人机界面中,LCD接口是必不可少的。

这里,我们就讨论一下关于LCD接口设计的一些问题。

首先,介绍下AM335X的LCD controller的一些feature。详细的feature,大家可以参考AM335X technical reference manual(TRM) 的第13章节。

简单来说,其大致概况一下特点:

(1)有24条LCD数据线,所以支持RGB888,RGB565。当然也支持RGB666。不支持LVDS(TI有高性价比的RGB转LVDS的芯片可以配套)

(2)TRM上写的最大分辨率支持2048×2048。而实际受限于总线带宽等因素,最大分辨率为1366×768。

(3)支持Active mode(TFT屏)和passive mode(STN屏)

接下来以目前常用的TFT屏进行讨论。

TFT屏:

(1)目前常见的屏有4.3寸,5寸,7寸,10寸屏,而其模式通常有sync模式,DE模式。(有些屏sync和DE模式都兼容,通过管脚进行配置选择)

(2)驱动电路。对于我所了解的常见4.3寸屏来说,其驱动比较简单。只需要3.3v或5v作为LCD供电。同时搭配背光电路即可。

而7寸屏则会复杂一些。基本上看到常用的7寸屏,都需要偏置电路进行驱动。 其偏置(bias)电路会提供多种电压,如AVDD(10v),VDDG(18V),VEFG(-7V),VCOM(6V)。这些电压要求都可以在LCD屏的数据手册中查阅到。

对于上述bias和backlight电路,有如下TI的方案可供推荐。

TPS61040 Low cost biasTPS65150 high cost performance

tps61165 backlight

(3)LCD信号

典型的,除了RGB或者BGR信号排列外,sync模式下还有会vsync、hsync、PCLK、EN, DE 模式下会有PCLK, DE信号。

在此,需要有两个问题需要注意:

1)由于AM335X LCD部分的bug,此在勘误表中有列出。其RGB888和RG565两种模式下,LCD信号线的分组不同。设计时需要注意。

2)如果需要RGB666的模式,此时可以设置LCD为RGB888模式,硬件设计时,RGB的低2位接地。

驱动:

由于TI SDK已更新至SDK08.00(内含的Linux为3.14)。且今后会长期维持在此版本(LTS)。所以建议新设计的朋友使用该版本。

该版本下linux使用device-tree进行板级配置。其中LCD部分的配置比较简单。

配置可以参考linux/arch/arm/boot/dts/am335x-evm.dts中的LCD配置(7寸屏,800×480)

或者参考该路径下的am335x-evmsk.dts(4.3寸屏,480×272)

配置主要包含两部分:

1)参数部分:具体参考可以直接在LCD屏的数据手册上查阅到。

2)pinmux部分。

以下列出am335x-evm.dts中关于LCD的部分供参考。

lcd_pins_default: lcd_pins_default {
pinctrl-single,pins = <
0x20 0x01 /* gpmc_ad8.lcd_data16, OUTPUT | MODE1 */
0x24 0x01 /* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
0x28 0x01 /* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
0x2c 0x01 /* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
0x30 0x01 /* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
0x34 0x01 /* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
0x38 0x01 /* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
0x3c 0x01 /* gpmc_ad15.lcd_data23, OUTPUT | MODE1 */
0xa0 0x00 /* lcd_data0.lcd_data0, OUTPUT | MODE0 */
0xa4 0x00 /* lcd_data1.lcd_data1, OUTPUT | MODE0 */
0xa8 0x00 /* lcd_data2.lcd_data2, OUTPUT | MODE0 */
0xac 0x00 /* lcd_data3.lcd_data3, OUTPUT | MODE0 */
0xb0 0x00 /* lcd_data4.lcd_data4, OUTPUT | MODE0 */
0xb4 0x00 /* lcd_data5.lcd_data5, OUTPUT | MODE0 */
0xb8 0x00 /* lcd_data6.lcd_data6, OUTPUT | MODE0 */
0xbc 0x00 /* lcd_data7.lcd_data7, OUTPUT | MODE0 */
0xc0 0x00 /* lcd_data8.lcd_data8, OUTPUT | MODE0 */
0xc4 0x00 /* lcd_data9.lcd_data9, OUTPUT | MODE0 */
0xc8 0x00 /* lcd_data10.lcd_data10, OUTPUT | MODE0 */
0xcc 0x00 /* lcd_data11.lcd_data11, OUTPUT | MODE0 */
0xd0 0x00 /* lcd_data12.lcd_data12, OUTPUT | MODE0 */
0xd4 0x00 /* lcd_data13.lcd_data13, OUTPUT | MODE0 */
0xd8 0x00 /* lcd_data14.lcd_data14, OUTPUT | MODE0 */
0xdc 0x00 /* lcd_data15.lcd_data15, OUTPUT | MODE0 */
0xe0 0x00 /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
0xe4 0x00 /* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
0xe8 0x00 /* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
0xec 0x00 /* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
>;
};

panel {
compatible = "ti,tilcdc,panel";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&lcd_pins_default>;
panel-info {
ac-bias = <255>;
ac-bias-intrpt = <0>;
dma-burst-sz = <16>;
bpp = <32>;
fdd = <0x80>;
sync-edge = <0>;
sync-ctrl = <1>;
raster-order = <0>;
fifo-th = <0>;
};

display-timings {
800x480p62 {
clock-frequency = <30000000>;
hactive = <800>;
vactive = <480>;
hfront-porch = <39>;
hback-porch = <39>;
hsync-len = <47>;
vback-porch = <29>;
vfront-porch = <13>;
vsync-len = <2>;
hsync-active = <1>;
vsync-active = <1>;
};
};
};

leo chen:

hfront-porch = <39>;hback-porch = <39>;hsync-len = <47>;vback-porch = <29>;vfront-porch = <13>;vsync-len = <2>;hsync-active = <1>;vsync-active = <1>;

对这几个参数的配置很迷糊

LCD手册上都没有明确给出,有的时候全靠猜

Steven Liu1:

回复 leo chen:

这几个参数的配置要根据LCD屏幕的手册来进行的。

我帮客户配的时候,有些屏幕的手册上确实给的很模糊,不过至少还是会给消影timing的总时间,所以保证前后消影总和在允许范围内,剩下的只能实测了。

zeming chen:

请问,在RG565模式下,如何做RGB to LVDS的转接,帮忙推荐下转接芯片。

lu wei:

请问3.1.1里面的两张图在哪个手册里,我从官网下载的5000页的手册里面没有找到这两张图

赞(0)
未经允许不得转载:TI中文支持网 » AM335 LCD 部分的硬件设计及软件配置
分享到: 更多 (0)