Firefly开源社区

123
发表新贴

【驱动入门】 FirePrime_rgb888_lcd_投影仪_光机

582

积分

10

威望

8

贡献

技术大神

Rank: 3Rank: 3

积分
582
QQ
发表于 2016-6-13 19:42:02     
本帖最后由 54zw 于 2016-6-13 20:14 编辑

                                
Fireprime外接RGB888投影仪(光机: opd01m)原理和外接LCD是一样的


1.先看下硬件框图LCD控制器引出的信号如下:
        需要将LCD_D0~LCD_D2324根管脚配置成LCD数据信号脚
        如下图所示:
snap0000.jpg
        



再加上LCD到行列同步信号:
        LCD_DEN,LCD_CLK, LCD_VSYNC, LCD_HSYNC

下面是光机到接口,红绿蓝分别是LCD_D0~LCD_D23,外加4个控制信号:
snap0001.jpg

2.软件上要这些管脚配置成相应到功能脚,且是在LCD控制器的DeviceTree中描述
下面看下LCD控制器在DeviceTree中的描述:
先来看下DeviceTreeLCD控制器的描述:
   lcdc:lcdc@1010e000 {
        compatible= "rockchip,rk312x-lcdc";
       rockchip,prop= <PRMRY>;
        reg= <0x1010e000 0x1000>;
        interrupts= <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
       pinctrl-names= "default";
       pinctrl-0= <&lcdc0_lcdc>;
        clocks= <&clk_gates6 0>, <&dclk_lcdc0>, <&clk_gates61>, <&sclk_lcdc0>, <&pd_vop>, <&clk_cpll>;
        clock-names= "aclk_lcdc", "dclk_lcdc", "hclk_lcdc","sclk_lcdc", "pd_lcdc", "sclk_pll";
       rockchip,iommu-enabled= <1>;
        status= "disabled";
    };

看到 pinctrl-0= <&lcdc0_lcdc> 这里就是配置LCD控制器上管脚到地方

           lcdc0_lcdc:lcdc0-lcdc{
               rockchip,pins=
                       <LCDC0_DCLK>,
                       <LCDC0_DEN>,
                       <LCDC0_HSYNC>,
                       <LCDC0_VSYNC>;
               rockchip,pull= <VALUE_PULL_DISABLE>;
            };
可以很明确到看到这里将上面提到到4个控制信号配置成了相应的功能管脚
但是没有看到配置LCD_D0~LCD_D23?
这里解释下:我没有找到RK3128关于所有PINMUX的配置文档,这样的文档在其他平台上都是会有很详细到说明的,所以我对各PINMUX的信息都是通过看代码知道的,在内核中rockchip-rk312x.h这个文件里用宏来描述,但是未发现有LCD_D0~LCD_D9到描述,所以猜测很可能这24PIN脚初始的功能就是LCD信号,所以只要不MUX成其他功能就可以正常使用。

3.根据光机芯片手册得到光机需要到LCD时序,根据这个时序来配置LCD控制器让其输出符合的时序:

光机需要的时序如下图:
snap0003.jpg

snap0002.jpg


根据这个时序配置,可以写出下面到时序描述文件OPD01M.dtsi
/{     
    disp_timings:display-timings {
        native-mode= <&timing0>;
        timing0:timing0 {
            screen-type= <SCREEN_RGB>;                           
            out-face   = <OUT_P888>;
            clock-frequency= <30240000>;               
             hactive= <854>;
             vactive= <480>;
            hback-porch= <40>;
            hfront-porch= <50>;
            vback-porch= <12>;
            vfront-porch= <30>;
            hsync-len= <16>;
            vsync-len= <3>;
            hsync-active= <1>;//active low
            vsync-active= <1>;//active low
            de-active= <0>;//active high
            pixelclk-active= <1>;//active low
             swap-rb= <0>;
             swap-rg= <0>;
             swap-gb= <0>;
        };
    };
};



4.如何使用这个新添加到时序
rk3128-fireprime.dtsinclude上面这个dtsi
#include"OPD01M.dtsi"

引用disp_timings这个节点即可
snap0004.jpg



注意:
        1.由于LCD信号和以太网信号复用,所以需要去掉对以太网管脚的配置        
        2.另外代码中有些摄像头驱动也会复用到LCD信号,需要去掉,否则无法正常显示
回复

使用道具 举报

72

积分

0

威望

0

贡献

技术小白

积分
72
发表于 2016-6-19 10:57:23     
谢谢分享
很好的经验
回复

使用道具 举报

133

积分

0

威望

0

贡献

技术小白

积分
133
发表于 2016-6-27 18:14:51     
支持一个
回复

使用道具 举报

80

积分

0

威望

0

贡献

技术小白

积分
80
发表于 2016-6-29 09:58:06     
dqfqfqf
回复

使用道具 举报

7

积分

0

威望

0

贡献

游客

积分
7
发表于 2016-7-14 11:10:42     
谢谢楼主
回复

使用道具 举报

36

积分

0

威望

0

贡献

游客

积分
36
发表于 2016-7-19 20:04:40     
很厉害啊,将的这么细,谢谢你
回复

使用道具 举报

76

积分

0

威望

0

贡献

技术小白

积分
76
发表于 2016-8-22 17:20:15     
不错,楼主能够分享经验,难能可贵。
回复

使用道具 举报

154

积分

0

威望

0

贡献

技术小白

积分
154
发表于 2016-11-8 09:51:42     
多谢楼主分享经验,mark
回复

使用道具 举报

56

积分

0

威望

0

贡献

技术小白

积分
56
发表于 2016-11-8 15:37:00     
回复

使用道具 举报

459

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
459
发表于 2017-4-10 10:32:08     
正在找这方面的资料 谢谢楼主分享 谢谢
回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表