加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 硬件准备
    • 软件修改
    • ① reset引脚时序控制
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

人气方案推荐——RK3399 双路MIPI拼接屏+HDMI 三屏显示

2021/04/01
970
阅读需 9 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

飞凌嵌入式RK3399系列主板和核心板支持屏幕拼接显示,即同一内容分开两部分在两个屏幕上显示,支持横屏和竖屏显示,并支持双屏触控。适用于游戏机、收银机、多屏互动、智能广告机、医疗健康设备等应用场景。 

硬件准备

■ 飞凌OK3399-C开发板

■ 2个带触摸MIPI显示屏

■ 1个HDMI显示屏

PART1.场景实现前提

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进行输出。

PART2.实现步骤
 

软件修改

① 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就可以做出三屏拼接显示或者三屏异显的方案。

相关推荐

电子产业图谱

秉承专业态度,专注智能设备核心平台研发与制造,以技术研发创新为主导,以客户实用化,产品化为目标,把握嵌入式行业的前沿发展需求,利用核心技术为客户提供稳定、可靠、功能优异的高品质产品。合作联系:17713286011