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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
VOP
$ \  B6 H7 ~! s3 uRockchip 平台的LCD Controller 称为VOP(Video Output Processor),芯片中一般集成1~2 个VOP。只有支持两个VOP 的芯片,才能支持双屏异显。 RK3399 有两个VOP,分别为VOPB(4096x2160),VOPL(2560x1600),所以对于分辨率大于2560x1600 的应用,只能选择VOPB 作为输入。
9 E2 K, \9 F7 a3 O! p* B7 _: V
2 J# F. X, ]- C! F- v, S! x. _4 H; I4 k. K. O" `" ~$ ]8 C
MIPI-DSI
1 j# |; |4 g' E2 L3 A7 ]  l" ORK3399 VOP可以接单通道MIPI屏也可以接双通道MIPI屏。单通道一半对应的是4 lanes,双通道对应8 lanes。 1) Single-channel/ c9 f1 k7 v7 m6 X' T) n

& B" x5 `- o, H1 s3 M# F2) Dual-channel (RK3288/RK3399) ① 标准的dual-channel 接口MIPI 屏;
5 J. F8 \; q% g7 }& I( y1 V& `. c) N8 Z  {) |6 D
② 分别接一样的屏,组合成dual-channel 接口MIPI 屏,panel0 显示左半屏,panel1 显示右 半屏。  |8 o! s9 ~/ Q* C0 E
5 c; E7 ]$ M$ z' B  b% D2 \

/ N) z/ j7 v6 n# j4 i7 j9 m/ N8 G5 }双路mipi拼接屏3 f& c( f5 k7 e. W; X$ I
之所以可以做成双路mipi拼接显示,究其原因是RK3399的vop可以支持双通道mipi,借用这个特性,我们才能进行拼接。 我们选择了两个1080x1920分辨率的竖屏进行拼接,使用VOP BIG进行输出。
; u5 z9 e$ V- s6 r# p/ I软件修改
& i; V4 a; ]+ S+ z6 J) {2 ?reset引脚时序控制, \$ Z' A8 u; e7 v5 n& y% `: p" L4 I

# x& M) u, z3 `& d, m& b7 L: k7 {( [5 \
根据手册提供的示意图可知,reset引脚需要先拉高,然后拉低保持tRESW时间,再拉高保持tREST时间,显示控制芯片就进入Initial Condition,这个时候我们就可以进行写初始化序列了。一般可以再找FAE确认一下reset的时序要求。
: s9 r6 Z8 ~/ ]! Y9 X3 x0 ^reset引脚控制时序% W0 t7 \! E+ ~
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);+ f" B+ ^# |1 l5 b: ?% G
初始化序列
, p1 o- T) \- b" _在设备树中配置mipi屏的初始化序列,在dsi节点中配置panel-init-sequence数组序列
  I! p* P! R* h  M9 h2 U: Z& O&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                ];        };};
5 H+ b+ l" M& n* v+ @命令解析:  @/ |7 d3 [1 C- ^6 n6 Q1 V
39 10 04 B9 FF 83 99Data Type:0x39 (DCS Long Write)Delay:0x10 (16 ms)Payload Length:0x04 (4 Bytes)Payload:0xB9 0xFF 0x83 0x99
+ y) F+ N2 |+ L& ]/ B进一步分析,该命令前3个字节属于命令格式,后面“B9 FF 83 99”才是要传输的指令。 B9是要写入的命令,“FF 83 99”是该命令后面的3个参数。
0 {# r% A8 j5 @* y& E
9 P1 Z/ i0 H: @7 ~( x! _9 j0 N( W; `
- Q! Z- k6 A, Z设置时钟参数
" R3 j5 a& V$ G" c' h: u* K% P&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>;                        };                };        };};
) X6 V4 n$ a* R设置完这些,单个屏幕就可以正常点亮显示了,但这不是我们的目的,我们的目的是双屏拼接。
  a" _' C) Z; r7 ?* ~# hdual-channel( R; \5 J: m9 a$ b& G
使能dsi1节点,配置“rockchip,dual-channel”、“dsi,lanes”属性。 将horizontal方向上的显示参数增加一倍,并将时钟频率调高一倍。; Q6 J8 `: `5 A9 F
&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";};
9 }/ z. _' W3 G/ V8 ^; A修改完就可以点亮两块mipi屏了,效果如下:
& f7 e8 B5 |; H9 E! n
3 t8 p5 ]" o7 F9 q1 h
' o" e5 X0 |& L& b两个MIPI使用了VOP BIG,VOP LITTLE还可以再支持一路HDMI显示。再插入HDMI,显示效果如下:, m; q  h' d( |0 X  f, V+ a
2 F" t- y! L) J% J
这样就可以实现瑞芯微教学视频中的三屏显示方案了,通过写app就可以做出三屏拼接显示或者三屏异显的方案。, O% w5 f: R" A0 s

$ ]; _. L- L& J: }( {

该用户从未签到

2#
发表于 2021-4-25 16:01 | 只看该作者
看看,了解一下  
! r" R& y; ?+ x# z$ K

该用户从未签到

3#
发表于 2021-4-25 17:13 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 17:11 , Processed in 0.203125 second(s), 23 queries , Gzip On.

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

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

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