如何使用RK3562点亮闲置的MIPI屏幕-定昌DC-YM562评测篇(三)
既然板子复活了(可以看评测篇(二)复活记),接下来当然开始折腾它,我不是从业者,我只是刚开始玩板子的爱好小白,写下来是自己作为个笔记,记录一下整体的流程,逻辑肯定会有不对,或者用词描述不准确是正常的,请看客们对我宽容些哈。
据我所知MIPI屏每家开发板的定义都不一样,定昌DC-YM562这次用的31PIN MIPI屏幕引脚定义是相对规范一些的,比如我在泰山派RK3566也看到了同样的定义,刚好手上的闲置MIPI屏也是这个定义。所以直接接上大概率就能用。我们来看下原理图。

要注意的是板子自带背光驱动,我们可以从开发板规格书上看到屏幕的背光电流可以按需求进行调整。

接下来,我们到官网下载SDK,官网的WIKI 也有丰富的环境搭建教程。

当然本期主要是在配屏幕这一块,配置环境的内容,我们就先跳过了。有兴趣的同学可以到官网上看教程。
开始吧,板子的主DTS路径在:/rk3562sdk/kernel/arch/arm64/boot/dts/rockchip# vi rk3562-dc-ym162-linux.dts,我们打开可以看到以下引用dtsi的内容,我们看最下面的,发现屏幕引用的dtsi在ztl-lcd的文件夹下面。自己的屏幕dtsi要在顶级的dts里引用哦,不然不会被编译进去。

于是我们打开文件夹看到里面的屏幕模板

我们先cp 一份ztl-lcd-mipi-7-1024x600.dtsi作为模板,比如修改为arc-lcd-mipi-7-1280x800.dtsi 按屏幕规格进行命名或者自己好记就行。
然后vi arc-lcd-mipi-7-1280x800.dtsi 我们开始配置dtsi

首先看到背光这一块,在用板上的MIPI口定义的背光PWM是固定的,所以无需更改它。

接下来是屏幕的供电部分,包括使能引脚GPIO的定义。按需要修改,当然我们这次是不需要修改使能引脚的。你又不更改它的使能引脚,你又不是自己画板子。抄就完事了。

接下来是正题了,我的屏幕是块旧屏
所以rockchip,lane-rate = <600>; 我拉到600 。这个操作主要是看规格书的需要。
模板是直接把,lane-rate给注释掉的。
reset-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>;这个是屏幕的复位引脚,低电平有效。
接下来的这些参数都是可以从屏幕的规格书里获取。
我的是旧屏幕,所以我是从屏幕原来的机子的DTB里反编译后提取的。说说这些参数的作用吧。
1. 复位时序参数
reset-delay-ms = <100>;
作用:复位信号保持时间
含义:拉低复位引脚后需要保持的时间,确保屏幕芯片完全复位
调试要点:
如果屏幕初始化不稳定,可适当增加到
150-200过短可能导致复位不彻底,出现花屏或无法点亮
2. 初始化时序参数
init-delay-ms = <120>;
作用:复位完成后到开始发送初始化命令的等待时间
含义:给屏幕电源和内部电路足够的稳定时间
调试要点:
屏幕点亮后显示异常时可调整此参数
通常范围在
100-200ms之间
3. 使能控制参数
enable-delay-ms = <500>;
prepare-delay-ms = <500>;
作用:电源使能和准备阶段的延迟
含义:
enable-delay-ms:背光使能后的稳定等待时间prepare-delay-ms:屏幕电源准备完成后的等待时间
调试要点:
背光闪烁或亮度不稳定时可调整
快速响应的屏幕可减少到
200-300ms
4. 关闭时序参数
unprepare-delay-ms = <60>;
disable-delay-ms = <60>;
作用:屏幕关闭时的清理时间
含义:
unprepare-delay-ms:停止数据传输后的等待时间disable-delay-ms:关闭电源前的延迟
修改完这部分后
dsi,lanes = <4>; 我们得确认屏幕是4lane的还是2lane填写进正确的数字。比如我的MIPI屏就是4lane的。得看自己屏幕的规格。没规格书?没规格书或者能逆向的DTB就很困难咯。
接下来是最难的panel-init-sequence 这一长串东东叫初始化序列,规格书里也有是比较原始的格式,你可以让AI来帮忙你处理这一部分。因为我是从DTB里反编译的,所以我只要将原来16进制的数值转回10进制就好了。


接下来是panel-exit-sequence 这是熄屏的命令,如果屏幕能正常关闭,就不要去动它。
接下来的这一连串东东让AI来解释一下,总的来说,就是从规格书里抄就完事了。
参数解释:
clock-frequency: 像素时钟频率,单位Hz。这个频率用于计算整个屏幕的像素传输速率。
公式:像素时钟 = (hactive + hfront-porch + hback-porch + hsync-len) (vactive + vfront-porch + vback-porch + vsync-len) 刷新率
但是,通常我们根据屏幕规格书设置这些参数,然后驱动会计算出所需的像素时钟。hactive: 水平有效像素,即一行中有效的像素数量,也就是屏幕的水平分辨率。
vactive: 垂直有效像素,即一列中有效的像素数量,也就是屏幕的垂直分辨率。
hback-porch: 水平后廊,在水平同步信号结束到有效像素开始之间的像素数。
hfront-porch: 水平前廊,在有效像素结束到水平同步信号开始之间的像素数。
vback-porch: 垂直后廊,在垂直同步信号结束到有效行开始之间的行数。
vfront-porch: 垂直前廊,在有效行结束到垂直同步信号开始之间的行数。
hsync-len: 水平同步脉冲的宽度,以像素计。
vsync-len: 垂直同步脉冲的宽度,以行计。
hsync-active: 水平同步信号的极性,0表示低电平有效,1表示高电平有效。
vsync-active: 垂直同步信号的极性,0表示低电平有效,1表示高电平有效。
de-active: 数据使能信号的极性,0表示低电平有效,1表示高电平有效。
pixelclk-active: 像素时钟的边沿选择,0表示在上升沿采样,1表示在下降沿采样。
这些参数必须严格按照屏幕的数据手册来设置,否则屏幕可能无法正常显示。
首先,从屏幕的数据手册中获取准确的时序参数,包括前后廊、同步脉冲宽度以及同步信号的极性。
计算像素时钟:根据上述参数,可以计算出像素时钟的频率。但是,在DTS中我们直接设置clock-frequency,驱动会根据这个频率来设置PLL。注意,这个频率必须与屏幕要求的像素时钟一致。
极性参数:同步信号和数据使能信号的极性非常重要,如果设置错误,屏幕可能无法同步。
如果出现显示位置偏移、不同步、闪烁等问题,首先检查前后廊和同步脉冲宽度是否与手册一致。

这一部分我们先不要动它,我们来看看AI怎么说。
在RK3562芯片上开启 &video_phy、&dsi_in_vp0 和 &route_dsi 这三个节点,是为了协同配置MIPI DSI显示通路。下面这个表格总结了它们各自的核心作用:
节点核心作用角色定位&video_phy使能MIPI D-PHY物理层,负责高速串行数据传输物理基础&dsi_in_vp0将VP0 (Video Processor) 的视频流输出至DSI控制器数据通路连接&route_dsi管理显示数据从VP到DSI接口的完整传输路径显示路径管理
简单来说,如果把显示数据比作水流,&video_phy是水管,&dsi_in_vp0是连接水泵和主管道的阀门,而&route_dsi就是确保水流正确流向的调度系统。
真琐碎。。接下来我们:wq 保存并退出Vi
回到SDK 根目录下 执行./build.sh 开始全局编译

编译的结果会在/rockdev目录生成一个Update包,比如这样。接下来就是愉快的刷机了。

调试屏幕只更改DTB,所以只要先刷个Ubuntu,接下来每次测试只要刷一个Boot.img就好了。比如这样。

接下来就是物理操作了,将这31PIN的排线接好。然后板子一通电。

debug杜邦线接好。看log 。
嘿嘿,亮了。

PS:哪有这么简单一点就亮,前前后后刷了几十次机。。。不断的调整时序,最后才亮的。流程可以参考一下,细节还是得需要自己把控和掌握。情况就是这么个情况,一起加油吧!
作者提示含AI生成内容。作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
