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以差分方式传送数据,所以不易受共模噪音影响,是一种常见的显示接口。
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中蓝色部分。一般在屏的手册中会找到类似:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
//时序设置 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";};
联系客服