欢迎光临散文网 会员登陆 & 注册

TQ3568开发板设置LVDS方法

2023-06-29 13:48 作者:天嵌-倪工  | 我要投稿

▲点击上方“广州天嵌”关注公众号后回复TQ3568获取板卡硬件资料

TQ3568支持lvds,mipi,edp,hdmi 4种不同的显示接口,其中mipi接口又分为mipi0与mipi1。TQ3568支持的显示功能有:(TQ3568-coreA不支持MIPI0显示)单屏:LVDS、MIPI0、MIPI1、eDP、HDMI双屏:(LVDS、MIPI1)、(LVDS、HDMI)、(LVDS、eDP)、(MIPI0、MIPI1)、(MIPI1、eDP)、(MIPI1、HDMI)三屏:(LVDS、MIPI1、eDP)、(LVDS、MIPI1、HDMI)。用户可以通过2种方法设置分辨率与显示接口,直接在u-boot菜单设置与在源码中设置,只需要选择其一即可,前者修改简单,但每次烧写镜像都要重新设置。如果想直接生成相关镜像,可以直接在源码中进行相应修改。        以下以LVDS为例,讲述如何通过源码修改对应的显示参数。    LVDS(Low Voltage Differential Signaling)是一种低振幅差分信号技术。它使用幅度非常低的信号传输数据。故产生极低的噪声,消耗非常小的功率,甚至不论频率高低功耗都几乎不变。此外,由于LVDS以差分方式传送数据,所以不易受共模噪音影响,是一种常见的显示接口。

相关dts文件  

Lvds的参数设置在文件kernel/arch/arm64/boot/dts/rockchip/rk3568-tqcoreX_BaseX_lvds.dtsi 不同的版本命名可能会有不同,具体可以在kernel/arch/arm64/boot/dts/rockchip/里执行grep -inr panel_lvds * 便可以找到对应的文件。一般相关的属性为:

panel_lvds: panel_lvds {        compatible = "simple-panel";        backlight = <&backlight_lvds>;        //power-supply = <&vcc3v3_lcd1_n>;        enable-delay-ms = <20>;        prepare-delay-ms = <20>;        unprepare-delay-ms = <20>;        disable-delay-ms = <20>;        //MEDIA_BUS_FMT_RGB666_1X7X3_SPWG, MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,        //MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA      //格式:6位与8位, JEIDA-日标 SPWG-美标        bus-format =;        width-mm = <217>;        height-mm = <136>;
       display-timings {            native-mode = <&timing0_lvds>;        //时序设置            timing0_lvds: timing-lvds@0 {                clock-frequency = <65000000>;                hactive = <1280>;                vactive = <800>;                hback-porch = <80>;                hfront-porch = <60>;                vback-porch = <20>;                vfront-porch = <10>;                hsync-len = <20>;                vsync-len = <8>;                hsync-active = <0>;                vsync-active = <0>;                de-active = <0>;                pixelclk-active = <0>;            };        };
       ports {            #address-cells = <1>;            #size-cells = <0>;
           port@0 {                reg = <0>;                dual-lvds-even-pixels;                panel_in_lvds: endpoint {                    remote-endpoint = <&lvds_out_panel>; //与下面两两对应                };            };        };    };
};
&lvds {    status = "okay";
   ports {        port@1 {            reg = <1>;            lvds_out_panel: endpoint {                remote-endpoint = <&panel_in_lvds>; //与上面两两对应            };        };    };};
&dsi0 {    status = "disabled";};
&video_phy0 {    status = "okay";};
//通路选择,将lvds打到vp2中//使能vp2中的lvds,并再打将lvds打到vp2,lvds可以使用vp1,vp2.//我司将vp1留给mipi1,vp2给lvds&route_lvds {    status = "okay";    connect = <&vp2_out_lvds>;};&lvds_in_vp1 {    status = "disabled";};
&lvds_in_vp2 {    status = "okay";};

时序设置  

时序相关配置主要修改上面dts中蓝色部分。一般在屏的手册中会找到类似:         

这个屏是1024*600的单路lvds屏。从时序图可以看到它支持de模式也支持sync模式。满足sync也会同满足de格式,满足de不一定同满足sync格式,所以如果有sync则会以sync格式设置。此处我们以sync模式来设置    

 //时序设置            timing0_lvds: timing-lvds@0 {                clock-frequency = <51200000>;     //Dot clk 时钟 51.2M                hactive = <1024>;               //行                vactive = <600>;                  //列                hback-porch = <140>;            //H Back Porch  水平后肩                hfront-porch = <160>;             //H Front Porch 水平前肩                vback-porch = <20>;               //V Back Porch  竖直后肩                vfront-porch = <12>;            //V Front Porch 竖直前肩                hsync-len = <20>;               //H Pulse Width                vsync-len = <8>;                  //V Pulse Width                hsync-active = <0>;               //水平同步是否要反相,0是不需要                vsync-active = <0>;               //竖直同步是否要反相
               de-active = <0>;                  //de信号是否要反相                pixelclk-active = <0>;            //时钟是否反相            }; 如果没有支持sync模式,则只要满足hback-porch + hfront-porch + hsync-le =H Blank Time就可以了,值可以随意设,但建议不要设置得太极端,不要有0的参数H/V Pulse Width 不宜太大。如上面可以设置成hback-porch = 150, hfront-porch=150, hsync-le=20。

格式设置  

Dts中与格式相关的参数是:

panel_lvds: panel_lvds {...........        unprepare-delay-ms = <20>;        disable-delay-ms = <20>;        //MEDIA_BUS_FMT_RGB666_1X7X3_SPWG, MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,        //MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA      //格式:6位与8位, JEIDA-日标 SPWG-美标        bus-format =;        width-mm = <217>;        height-mm = <136>;.............         
常用的格式有:MEDIA_BUS_FMT_RGB666_1X7X3_SPWG, MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA对应见下图。

一般芯片手册会有类似的:

通过上表找到对应显示格式的就可以了。

通路设置  

Dts中与通路相关的参数有:         

//通路选择,将lvds打到vp2中

//使能vp2中的lvds,并再打将lvds打到vp2,lvds可以使用vp1,vp2.

//我司将vp1留给mipi1,vp2给lvds&route_lvds {           

   status = "okay";    connect = <&vp2_out_lvds>;};

&lvds_in_vp1 {    status = "disabled";};
&lvds_in_vp2 {    status = "okay";};

Lvds可以连接到vp1或者vp2,设置route_lvds 中的connect ,然后打开/关闭对应的lvds_in_vpx即可,默认vp1连接到mipi,如果要将lvds连到vp1,要先关闭mipi显示。以下是连接vp1的例子:

&route_lvds

{              status = "okay";   

 connect = <&vp1_out_lvds>;};

&lvds_in_vp1 {    status = "ok";};
&lvds_in_vp2 {    status = "disabled";};


TQ3568开发板设置LVDS方法的评论 (共 条)

分享到微博请遵守国家法律