• <tr id='OZmgNJ'><strong id='OZmgNJ'></strong><small id='OZmgNJ'></small><button id='OZmgNJ'></button><li id='OZmgNJ'><noscript id='OZmgNJ'><big id='OZmgNJ'></big><dt id='OZmgNJ'></dt></noscript></li></tr><ol id='OZmgNJ'><option id='OZmgNJ'><table id='OZmgNJ'><blockquote id='OZmgNJ'><tbody id='OZmgNJ'></tbody></blockquote></table></option></ol><u id='OZmgNJ'></u><kbd id='OZmgNJ'><kbd id='OZmgNJ'></kbd></kbd>

    <code id='OZmgNJ'><strong id='OZmgNJ'></strong></code>

    <fieldset id='OZmgNJ'></fieldset>
          <span id='OZmgNJ'></span>

              <ins id='OZmgNJ'></ins>
              <acronym id='OZmgNJ'><em id='OZmgNJ'></em><td id='OZmgNJ'><div id='OZmgNJ'></div></td></acronym><address id='OZmgNJ'><big id='OZmgNJ'><big id='OZmgNJ'></big><legend id='OZmgNJ'></legend></big></address>

              <i id='OZmgNJ'><div id='OZmgNJ'><ins id='OZmgNJ'></ins></div></i>
              <i id='OZmgNJ'></i>
            1. <dl id='OZmgNJ'></dl>
              1. <blockquote id='OZmgNJ'><q id='OZmgNJ'><noscript id='OZmgNJ'></noscript><dt id='OZmgNJ'></dt></q></blockquote><noframes id='OZmgNJ'><i id='OZmgNJ'></i>

                RK3399 双路mipi拼接屏+HDMI 三屏显示


                VOP

                Rockchip 平台的LCD Controller 称为VOP(Video Output Processor),芯片中一般集成1~2 个VOP。只有支持两个VOP 的芯片,才能支持双屏异显。
                RK3399 有两个VOP,分别为VOPB(4096x2160),VOPL(2560x1600),所以对于分辨率大∴于2560x1600 的应用,只能选择VOPB 作为输入。
                在这里插入图片⊙描述

                MIPI-DSI

                RK3399 VOP可以接单通道MIPI屏也可以接双通道MIPI屏。单通道一半对应的是4 lanes,双通道对应8 lanes。
                1) Single-channel
                在这里插入图片描述
                2) Dual-channel (RK3288/RK3399)
                ① 标准的dual-channel 接口MIPI 屏;
                在这里插入图片描述
                ② 分别接一样的屏,组合成dual-channel 接口MIPI 屏,panel0 显示左半屏,panel1 显示右
                半屏。
                在这里插入图片描述

                双路mipi拼接屏

                之所以可以做成双路mipi拼接显示,究其原因是RK3399的vop可以支持双通道mipi,借用这个特性,我们】才能进行拼接。
                我们选择了两个1080x1920分辨率的竖屏进行拼接,使用VOP BIG进行输出。

                软件修改

                reset引脚时序控制

                在这里插入图片描述
                根据手册提供的示意图可知,reset引脚需要先拉高,然后拉低保持tRESW时间,再拉高︼保持tREST时间,显示控制芯片就进入Initial Condition,这个时候我们就可以进行写初始化序列了。一般可以再找FAE确认一下reset的时序要求。

                reset引脚控制时序

                fdtdec_set_gpio(&panel->reset_gpio, 1);
                		msleep(panel->delay_init);
                		fdtdec_set_gpio(&panel->reset_gpio, 0);
                		msleep(panel->delay_reset);
                		fdtdec_set_gpio(&panel->reset_gpio, 1);
                		msleep(panel->delay_enable);

                初始化序列

                在设备树中配置mipi屏的初始化序列,在dsi节点中配置panel-init-sequence数组序列

                &dsi {
                	panel@0{
                		panel-init-sequence = [
                			39 10 04 B9 FF 83 99
                			39 10 10 B1 02 04 6D 8D 01 32 33 11 11 5A 5F 56 73 02 02
                			39 10 0C B2 00 80 80 AE 05 07 5A 11 10 10 00
                			...
                			15 10 02 D0 39
                			15 64 02 11 00
                			15 64 02 29 00
                		];
                	};
                };

                命令解析:

                39 10 04 B9 FF 83 99
                Data Type:0x39 (DCS Long Write)
                Delay:0x10 (16 ms)
                Payload Length:0x04 (4 Bytes)
                Payload:0xB9 0xFF 0x83 0x99

                进一步分析,该命令前3个字节属于命令格式,后面“B9 FF 83 99”才是要传输的指令。
                B9是要写→入的命令,“FF 83 99”是该命令后面的3个参数。
                在这里插入图片描述

                设置时钟参数

                &dsi {
                	panel@0{
                 		display-timings {
                 			native-mode = <&timing0>;
                			timing0: timing0 {
                				clock-frequency = <120000000>;
                				hactive = <1080>;
                				vactive = <1920>;
                				hback-porch = <32>;
                				hfront-porch = <32>;
                				vback-porch = <10>;
                				vfront-porch = <8>;
                				hsync-len = <32>;
                				vsync-len = <4>;
                				hsync-active = <0>;
                				vsync-active = <0>;
                				de-active = <0>;
                				pixelclk-active = <0>;
                			};
                		};
                	};
                };

                设置▲完这些,单个屏幕就可以正常点亮显示了,但这不是我们的目的,我们的目的是双屏拼接。

                dual-channel

                使能dsi1节点,配置“rockchip,dual-channel”、“dsi,lanes”属性。
                将horizontal方向上的◥显示参数增加一倍,并将时钟频率调高一倍。

                &dsi {
                	status = "okay";
                	rockchip,dual-channel = <&dsi1>;
                	
                	panel@0{
                		dsi,lanes = <8>;
                		display-timings {
                			native-mode = <&timing1>;
                			timing1: timing1 {
                				clock-frequency = <240000000>;
                				hactive = <2160>;
                				vactive = <1920>;
                				hback-porch = <64>;
                				hfront-porch = <64>;
                				vback-porch = <10>;
                				vfront-porch = <8>;
                				hsync-len = <64>;
                				vsync-len = <4>;
                				hsync-active = <0>;
                				vsync-active = <0>;
                				de-active = <0>;
                				pixelclk-active = <0>;
                			};
                		};
                	};
                };
                &dsi1 {
                	status = "okay";
                };

                修改完就可以点亮两块mipi屏了,效果如下:


                两个MIPI使用了VOP BIG,VOP LITTLE还可以再支持一路HDMI显示。再插入HDMI,显示效果如下:

                这样就可以实现瑞芯微教学视频中的三屏︼显示方案了,通过写app就可以做出三屏拼接显示或者三屏异显的方案。