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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
[color=rgba(0, 0, 0, 0.75)]VOP( d8 i3 Q; @: ^' Y' q' y
[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 的芯片,才能支持双屏异显。
8 [& B4 w( r1 G* R; t3 w[color=inherit !important]RK3399
有两个VOP,分别为VOPB(4096x2160),VOPL(2560x1600),所以对于分辨率大于2560x1600 的应用,只能选择VOPB 作为输入。
3 ^7 l9 S! z0 j2 Z' P2 l" X+ `3 Y" ?2 `


" W& _5 S9 k( n9 O  D[color=rgba(0, 0, 0, 0.75)]MIPI-DSI8 {" x6 M. |6 I" `; W7 I6 |
[color=rgba(0, 0, 0, 0.75)]

RK3399 VOP可以接单通道MIPI屏也可以接双通道MIPI屏。单通道一半对应的是4 lanes,双通道对应8 lanes。
8 N% m7 v2 S% r# l: U1) Single-channel
! }5 P5 A2 e& i/ m* h3 E! M/ f' @
* z. I4 B( A$ U" j* ]" }/ Q2) Dual-channel (RK3288/RK3399)* X- U, G" K% s: f
① 标准的dual-channel 接口MIPI 屏;
4 o2 n0 t/ Z0 p8 C% `$ Y, @9 f" ]1 j* c1 w
② 分别接一样的屏,组合成dual-channel 接口MIPI 屏,panel0 显示左半屏,panel1 显示右
9 b  _) U6 I5 ]% }半屏。
) U% Q) v. Q" r5 `' ?. K: |0 O4 n


$ D( ^* @" @) {: ~[color=rgba(0, 0, 0, 0.75)]双路mipi拼接屏/ J# |# e9 C4 o
[color=rgba(0, 0, 0, 0.75)]

之所以可以做成双路mipi拼接显示,究其原因是RK3399的vop可以支持双通道mipi,借用这个特性,我们才能进行拼接。$ c! M, \0 x( l, @( i8 o' _6 V: F
我们选择了两个1080x1920分辨率的竖屏进行拼接,使用VOP BIG进行输出。


* W% k# Z0 s. K) Y8 P& P[color=rgba(0, 0, 0, 0.75)]软件修改( ]* a' _% ?8 J$ `9 f
[color=rgba(0, 0, 0, 0.75)]reset[color=inherit !important]引脚时序控制
1 x" L5 L+ y, ^/ _/ J% E! ^[color=rgba(0, 0, 0, 0.75)]

! h( l! g# X+ Q  j! d. d$ l
根据手册提供的示意图可知,reset引脚需要先拉高,然后拉低保持tRESW时间,再拉高保持tREST时间,显示控制芯片就进入Initial Condition,这个时候我们就可以进行写初始化序列了。一般可以再找F[color=inherit !important]AE
确认一下reset的时序要求。

; N/ ?$ R  Z$ i. r9 {9 r" L
[color=rgba(0, 0, 0, 0.75)]

reset引脚控制时序


) d: M+ x% c3 T4 o: V[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 Z% P- V0 `7 S! A0 k2 B" N3 ^[color=rgba(0, 0, 0, 0.75)]初始化序列  c6 @3 b9 ]4 F# J0 ?% T
[color=rgba(0, 0, 0, 0.75)]

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

  T4 A; t( Q. V* V( K' z; E$ o
[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 K3 k1 c" T; ^! b! v
[color=rgba(0, 0, 0, 0.75)]

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


1 [! `# A# ?4 v5 K& A) v1 Z[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
! t' E; p3 y& l$ v+ ][color=rgba(0, 0, 0, 0.75)]

进一步分析,该命令前3个字节属于命令格式,后面“B9 FF 83 99”才是要传输的指令。! q# o% M* ?% h9 `3 n0 Q
B9是要写入的命令,“FF 83 99”是该命令后面的3个参数。5 e: F# y1 l' e6 @& @1 G' f% m& W

7 k, P: @: t, J! {( U% P- `" I
[color=rgba(0, 0, 0, 0.75)]设置[color=inherit !important]时钟参数( n& N0 ]/ K4 U+ @- J
[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>;                        };                };        };};7 U6 I( _- M9 P) x# @! o7 ]" M3 r0 @
[color=rgba(0, 0, 0, 0.75)]

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


5 N* l6 k& a4 s& ~. {[color=rgba(0, 0, 0, 0.75)]dual-channel6 r4 h0 \" x+ E5 k* G8 N
[color=rgba(0, 0, 0, 0.75)]

使能dsi1节点,配置“rockchip,dual-channel”、“dsi,lanes”属性。
  z: x! g1 R5 z( d2 `+ H将horizontal方向上的显示参数增加一倍,并将时钟频率调高一倍。


/ g2 Z( h, b- L, i# f! K3 J1 j[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 _/ T/ W  g" U: \* Y1 T[color=rgba(0, 0, 0, 0.75)]

修改完就可以点亮两块mipi屏了,效果如下:
' G4 P# }( O+ ^8 T$ A2 a( E) @) A/ p: {3 d. H
4 P* X8 K8 N, ]$ t( o
两个MIPI使用了VOP BIG,VOP LITTLE还可以再支持一路HDMI显示。再插入HDMI,显示效果如下:# l$ u' v# i6 V* ^0 K

- ]3 v5 x1 @8 F; l这样就可以实现瑞芯微教学视频中的三屏显示[color=inherit !important]方案
了,通过写app就可以做出三屏拼接显示或者三屏异显的方案。

9 u3 j* n& Q) I1 j
- l% u! {( ~" _

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-29 07:51 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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