找回密码
 注册
关于网站域名变更的通知
查看: 667|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-6-15 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
[color=rgba(0, 0, 0, 0.75)]VOP
2 D* B& z, y8 D8 ]! v3 q/ F/ W[color=rgba(0, 0, 0, 0.75)]

Rockchip 平台的L[color=inherit !important]CD Controller 称为VOP(Video Output Processor),[color=inherit !important]芯片中一般集成1~2 个VOP。只有支持两个VOP 的芯片,才能支持双屏异显。/ v# k1 D# Z4 T8 X: z" T3 L( l8 f
[color=inherit !important]RK3399
有两个VOP,分别为VOPB(4096x2160),VOPL(2560x1600),所以对于分辨率大于2560x1600 的应用,只能选择VOPB 作为输入。  t# H, _/ X+ t: |% ~% x: `. F! H


, D' q) r' T% @; u- r[color=rgba(0, 0, 0, 0.75)]MIPI-DSI
- V7 V) T% i; R. A" t[color=rgba(0, 0, 0, 0.75)]

RK3399 VOP可以接单通道MIPI屏也可以接双通道MIPI屏。单通道一半对应的是4 lanes,双通道对应8 lanes。
. G' U3 K2 m& f, A/ {4 T1) Single-channel4 w( H3 H' |' F2 g8 f
7 r$ S& t% G/ d
2) Dual-channel (RK3288/RK3399)
1 F3 r. h5 G2 v% B① 标准的dual-channel 接口MIPI 屏;2 U* x  D3 T; s) o2 [/ t* _
& W4 D8 w9 g* L- `& ?% ?& ?
② 分别接一样的屏,组合成dual-channel 接口MIPI 屏,panel0 显示左半屏,panel1 显示右+ d: }& j+ M4 p: r6 u" m
半屏。, x1 F& `) K3 s) ~4 R

2 C; `, p, S" W  A' m! w. |
[color=rgba(0, 0, 0, 0.75)]双路mipi拼接屏8 |, U1 u# ]8 _" |' p
[color=rgba(0, 0, 0, 0.75)]

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

2 c& I# Y8 W8 ^9 D+ g0 W
[color=rgba(0, 0, 0, 0.75)]软件修改
7 c- q0 h3 ?; e& y5 g7 |[color=rgba(0, 0, 0, 0.75)]reset[color=inherit !important]引脚时序控制: u) f4 J  g# X3 z' u" h0 w
[color=rgba(0, 0, 0, 0.75)]


9 F& c0 x  H6 M; w2 {根据手册提供的示意图可知,reset引脚需要先拉高,然后拉低保持tRESW时间,再拉高保持tREST时间,显示控制芯片就进入Initial Condition,这个时候我们就可以进行写初始化序列了。一般可以再找F[color=inherit !important]AE
确认一下reset的时序要求。


8 @: v' Q6 y) d0 H2 J[color=rgba(0, 0, 0, 0.75)]

reset引脚控制时序


# `- g6 A1 @' R[color=rgba(0, 0, 0, 0.75)]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);7 q! D. w+ E6 j: h/ p+ t
[color=rgba(0, 0, 0, 0.75)]初始化序列
% N$ D: S, t" r  d[color=rgba(0, 0, 0, 0.75)]

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


) `# H& y/ b, o' \( E; m0 B[color=rgba(0, 0, 0, 0.75)]&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                ];        };};
2 u! a+ p( j+ f3 M[color=rgba(0, 0, 0, 0.75)]

[color=inherit !important]命令解析:


: U* i3 ~/ M0 g0 Y) C+ u[color=rgba(0, 0, 0, 0.75)]39 10 04 B9 FF 83 99Data [color=inherit !important]Type:0x39 (DCS Long Write)Delay:0x10 (16 ms)Payload Length:0x04 (4 Bytes)Payload:0xB9 0xFF 0x83 0x99
" Z- p5 A% S. D) `( o! q[color=rgba(0, 0, 0, 0.75)]

进一步分析,该命令前3个字节属于命令格式,后面“B9 FF 83 99”才是要传输的指令。
; N+ e; k$ a0 P) |4 y  jB9是要写入的命令,“FF 83 99”是该命令后面的3个参数。
. g, s  R; c, N% Q


( t6 @5 e! g4 y3 C2 b/ y[color=rgba(0, 0, 0, 0.75)]设置[color=inherit !important]时钟参数$ L6 ?, c- I) c# g1 b" H
[color=rgba(0, 0, 0, 0.75)]&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>;                        };                };        };};
0 S9 I- V2 z8 ]: k$ l' F' D* J  \3 A[color=rgba(0, 0, 0, 0.75)]

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


5 Z; L* X1 h' M7 c9 l[color=rgba(0, 0, 0, 0.75)]dual-channel$ ~# L) \4 |1 ?5 f& m9 P7 X! C
[color=rgba(0, 0, 0, 0.75)]

使能dsi1节点,配置“rockchip,dual-channel”、“dsi,lanes”属性。
% D7 |# W: H' f8 C) V将horizontal方向上的显示参数增加一倍,并将时钟频率调高一倍。

1 ?2 n- m; f: h3 @  e) j2 k# M- K
[color=rgba(0, 0, 0, 0.75)]&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";};
3 S) `1 J0 B2 ^) y; z/ R: @9 y: v[color=rgba(0, 0, 0, 0.75)]

修改完就可以点亮两块mipi屏了,效果如下:+ u6 ^3 f. o+ f' O6 r: Y
/ h  c/ z! a* J4 j/ j8 d. D; e: I
  {. c# q' X$ n7 j( a
两个MIPI使用了VOP BIG,VOP LITTLE还可以再支持一路HDMI显示。再插入HDMI,显示效果如下:
. R* b; p6 e9 N5 B; W" x8 C8 E2 z
8 |0 I: X  `3 C) p+ \, b这样就可以实现瑞芯微教学视频中的三屏显示[color=inherit !important]方案
了,通过写app就可以做出三屏拼接显示或者三屏异显的方案。

' r# E' t% V8 S2 n! C( T9 }* A3 a
- W: Z3 ^/ K' b; p' j4 L# n

该用户从未签到

2#
发表于 2021-6-15 19:21 | 只看该作者
很不错的分享,希望能继续分享更多!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-12 06:41 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表