RK3399|RK3399方案讲解如何实现双路mipi拼接屏+HDMI 三屏显示

voprockchip 平台的lcd controller 称为vop(video output processor),芯片中一般集成1~2 个vop。只有支持两个vop 的芯片,才能支持双屏异显。
rk3399 有两个vop,分别为vopb(4096x2160),vopl(2560x1600),所以对于分辨率大于2560x1600 的应用,只能选择vopb 作为输入。
mipi-dsirk3399 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 { clock-frequency = ; hactive = ; vactive = ; hback-porch = ; hfront-porch = ; vback-porch = ; vfront-porch = ; hsync-len = ; vsync-len = ; hsync-active = ; vsync-active = ; de-active = ; pixelclk-active = ; }; }; }; };
设置完这些,单个屏幕就可以正常点亮显示了,但这不是我们的目的,我们的目的是双屏拼接。
dual-channel使能dsi1节点,配置“rockchip,dual-channel”、“dsi,lanes”属性。
将horizontal方向上的显示参数增加一倍,并将时钟频率调高一倍。
&dsi { status = okay; rockchip,dual-channel = ; panel@0{ dsi,lanes = ; display-timings { native-mode = ; timing1: timing1 { clock-frequency = ; hactive = ; vactive = ; hback-porch = ; hfront-porch = ; vback-porch = ; vfront-porch = ; hsync-len = ; vsync-len = ; hsync-active = ; vsync-active = ; de-active = ; pixelclk-active = ; }; }; }; }; &dsi1 { status = okay; };
修改完就可以点亮两块mipi屏了,效果如下:
两个mipi使用了vop big,vop little还可以再支持一路hdmi显示。再插入hdmi,显示效果如下:
这样就可以实现瑞芯微教学视频中的三屏显示方案了,通过写app就可以做出三屏拼接显示或者三屏异显的方案。

宁波市新兴产业实现突破发展 制造业单项冠军居国内首位
5G移动签约数达到50亿还要多少年?丨爱立信发布最新《移动市场报告》
厉害了Word国!神威太湖之光实现三连冠,携手天河二号夺全球超级计算机500强一二名
如何在FPGA上快速构建PID算法
自学UI设计路上7点你要注意
RK3399|RK3399方案讲解如何实现双路mipi拼接屏+HDMI 三屏显示
新款Summit Lite是制造商模型的“入门版”
使用SiC提高工业应用的能源效率(1)
培育50个左右知名品牌,建立500家智能家居体验中心,四部门发布《推进家居产业高质量发展行动方案》
捷捷微电:新型片式元器件项目基础建设已完成50%
微软对Windows10新版本重新设计图标 并在未来会有更多应用获得图标升级
UWB定位技术在自动驾驶中的应用
反接制动的优缺点
Maxim推出最小尺寸同步整流DC/DC转换器MAX15058
铠侠日本晶圆6厂起火,或影响NAND Flash的供货与价格
亚马逊收购机器人公司,建立机器人帝国
CQCC 2023赞助及展览合作方案发布
立迪思新科技为搭配LDS120P LDO控制器 推出两款新产品
圆满收官!请查收今年份的虹科工博会精彩~
为什么不同品牌之间的空气净化器价格差别非常大