rk3568点亮LCD(mipi)

news2024/10/6 8:33:37

rk3568 Android11/12 适配 mipi 屏

MIPI (Mobile Industry Processor Interface) 是2003年由ARM, Nokia, ST ,TI等公司成立的一个联盟,目的是把手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性。MIPI设备接口分为两种:摄像头接口CSI(Camera Serial Interface)和显示接口DSI(Display Serial Interface)。

  1. MIPI 不仅能够传输视频数据,还能传输控制指令;
  2. MIPI DSI 接口是按照特定的握手顺序和指令规则传输屏幕控制所需的视频数据和控制数据;
  3. MIPI 接口的模组,相较于并口具有速度快,传输数据量大,功耗低,抗干扰好。并且专门为移动设备进行的优化,因而更适合手机和智能平板的连接。

提示:rk3568 设计时预留两路MIPI-DSI,其中一路与lvds复用,两路可同时使用,即支持8lane mipi屏。

文章目录

  • rk3568 Android11/12 适配 mipi 屏
  • 圈重点 看想学
  • 1. rk3568 适配mipi屏
    • 1.1 核查理图,适配 DSI-0连接MIPI屏
    • 1.2 核查理图,适配 DSI-1连接MIPI屏
    • 1.3 适配 8lane MIPI屏
  • 2 调试过程异常情况
    • 2.1 开机只亮背光,休眠唤醒后正常显示
    • 2.2 开机只亮背光,休眠唤醒后仍然黑屏
    • 2.3 开机无 logo
    • 2.4 屏幕闪烁、偏位
  • Tips
  • 总结


圈重点 看想学

a) rk3568 适配 mipi 屏幕
b) rk3568 适配 8lane mipi 屏幕
c) rk3568 适配过程异常情况


1. rk3568 适配mipi屏

经过翻阅屏幕手册,屏幕亮起前须适配屏的 LCD_VDD、LCD_STABY、LCD_RST 和背光的使能 IO、PWM 信号。
在这里插入图片描述仔细核对原理图发现控制信号与屏幕对应关系:
MIPI 4 lanes --> MIPI_DSI_TX0
LCD_RST --> GPIO3_D1
LCD_STABY --> GPIO3_D2
LCD_EN_H --> GPIO3_D3
发现LCD_EN_H 为供电控制,LCD_STABY实则为屏幕使能控制。
背光PWM信号,pwm4 与 rk3568-evb.dtsi中声明 backlight 相同;只是增加一个背光控制GPIO2_D5。

1.1 核查理图,适配 DSI-0连接MIPI屏

在这里插入图片描述当前设备树引用 rk3568-evb.dtsi,恰好在其中有声明 vcc3v3_lcd0_n 和 backlight;仅仅作简单的覆写即可。rk3568 的 MIPI-DSI0 屏需要同时启用 dsi0、video_phy0、vp1_out_dsi0(本篇使用 vop 中 vp1,vp0预留给HDMI)。需要开机显示 logo图片则要额外配置 route_dsi0。
MIPI 屏一般需要初始化代码和屏参,这块屏幕很好无例外。屏供应厂商提供的屏幕相关资料时同时提供屏幕手册和初始化代码;初始化代码大多为点屏幕治具使用,经过简单转化即可在rk3568上应用。

&backlight {
	enable-gpios = <&gpio2 RK_PD5 GPIO_ACTIVE_HIGH>;
};

&vcc3v3_lcd0_n {
	gpio = <&gpio3 RK_PD3 GPIO_ACTIVE_HIGH>;
};

/*
 * video_phy0 needs to be enabled
 * when dsi0 is enabled
 */
&dsi0 {
	status = "okay";
};

&dsi0_in_vp0 {
	status = "disabled";
};

&dsi0_in_vp1 {
	status = "okay";
};

&dsi0_panel {
	power-supply = <&vcc3v3_lcd0_n>;
	enable-gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>;
	reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>;
	panel-init-sequence = [
		15 05 02 8F A5
		15 14 02 01 00
		15 05 02 8F A5
		39 00 03 83 AA 11
		15 00 02 A9 4B
		39 00 03 83 00 00
		15 00 02 8F 00
		05 00 01 11
		05 05 01 29
	];

	panel-init-sequence = [
		05 00 01 28
		05 00 01 10
	};

	disp_timings0: display-timings {
		native-mode = <&dsi0_timing0>;
		dsi0_timing0: timing0 {
			clock-frequency = <150000000>;
			hactive = <1200>;
			hfront-porch = <80>;
			hback-porch = <60>;
			hsync-len = <1>;
			vactive = <1920>;
			vfront-porch = <35>;
			vback-porch = <25>;
			vsync-len = <1>;
			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <0>;
			pixelclk-active = <0>;
		};
	};
};

接下来是 video_phy0 和 route_dsi0。根据描述此时需要开启 video_phy0。

&video_phy0 {
	status = "okay";
};

&video_phy1 {
	status = "disabled";
};

&route_dsi0 {
	status = "okay";
	connect = <&vp1_out_dsi0>;
};

到此DSI-0 设备树匹配基本完成,如有无法点亮可查看 章节2 调试过程异常情况。

1.2 核查理图,适配 DSI-1连接MIPI屏

在这里插入图片描述当前设备树引用 rk3568-evb.dtsi,恰好在其中有声明 vcc3v3_lcd1_n 和 backlight1;仅仅作简单的覆写即可。rk3568 的 MIPI-DSI1 屏需要同时启用 dsi1、video_phy1、vp1_out_dsi1(本篇使用 vop 中 vp1,vp0预留给HDMI)。需要开机显示 logo图片则要额外配置 route_dsi1。
DSI1与DSI0使用相同的屏幕,屏参和初始化代码与上一个块相同。仔细核对原理图控制信号与屏幕对应关系如下:
MIPI 4 lanes --> MIPI_DSI_TX1
LCD_RST --> GPIO4_C2
LCD_STABY --> GPIO4_C5
LCD_EN_H --> GPIO4_C6
发现LCD_EN_H 为供电控制,LCD_STABY实则为屏幕使能控制。
背光PWM信号,pwm5 与 rk3568-evb.dtsi中声明 backlight 相同;只是增加一个背光控制GPIO2_D6。

&backlight {
	enable-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
};

&vcc3v3_lcd0_n {
	gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
};

/*
 * video_phy0 needs to be enabled
 * when dsi0 is enabled
 */
&dsi0 {
	status = "okay";
};

&dsi0_in_vp0 {
	status = "disabled";
};

&dsi0_in_vp1 {
	status = "okay";
};

&dsi0_panel {
	power-supply = <&vcc3v3_lcd0_n>;
	enable-gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
	reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
	panel-init-sequence = [
		15 05 02 8F A5
		15 14 02 01 00
		15 05 02 8F A5
		39 00 03 83 AA 11
		15 00 02 A9 4B
		39 00 03 83 00 00
		15 00 02 8F 00
		05 00 01 11
		05 05 01 29
	];

	panel-init-sequence = [
		05 00 01 28
		05 00 01 10
	};

	disp_timings1: display-timings {
		native-mode = <&dsi1_timing0>;
		dsi1_timing0: timing0 {
			clock-frequency = <150000000>;
			hactive = <1200>;
			hfront-porch = <80>;
			hback-porch = <60>;
			hsync-len = <1>;
			vactive = <1920>;
			vfront-porch = <35>;
			vback-porch = <25>;
			vsync-len = <1>;
			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <0>;
			pixelclk-active = <0>;
		};
	};
};

接下来是 video_phy1 和 route_dsi1。根据描述此时需要开启 video_phy1。

&video_phy0 {
	status = "disabled";
};

&video_phy1 {
	status = "okay";
};

&route_dsi1 {
	status = "okay";
	connect = <&vp1_out_dsi1>;
};

到此DSI-1 设备树匹配基本完成,如有无法点亮可查看 章节2 调试过程异常情况。

1.3 适配 8lane MIPI屏

rk3568 硬件设计2组 DSI,单屏模式可分别点亮2个屏幕;也可双通道模式点亮一块屏幕或者左右两块相同屏幕。

  1. 单通道模式(1~4 lane MIPI 单屏)
VOP
MIPI-DSI
Panel
  1. 双通道模式(5~8lane MIPI 单屏)
left
right
VOP
MIPI-DSI-0
MIPI-DSI-1
Panel

设配设备树时需要增加对dsi0的引用,支持此种模式还有rk3288/rk3399/rk3566。

&dsi0 {
	rockchip,dual-channel = <&dsi1>;
};

&dis1 {
	status = "okay";
};

注意:引用DSI-1同样需要启用 video_phy1。
3) 双通道双屏幕(1~4lane MIPI 双屏)
每个通道分别接相同的屏,组合成 dual-channel 接口 MIPI 屏,panel0 显示左半屏,panel1 显示右半屏。需要注意上电时须和初始化代码。

left
right
left
right
VOP
MIPI-DSI-0
MIPI-DSI-1
Panel 0
Panel 1

设备树配置与双通道模式相同。
4) 双链路模式
RK3566/RK3568 独立的 MIPI_PHY_TX0 和 MIPI_PHY_TX1,panel 0/1没有相同屏幕限制。但是rk3399 因 MIPI_PHY0/1共用PLL锁相环始终,需要两块屏幕使用相同的 mipi总线速率。调试时这点有点费脑细胞。

left
right
VOP0
MIPI-DSI-0
VOP1
MIPI-DSI-1
Panel 0
Panel 1

此种模式下与分别点亮度两块屏幕,唯一区别就是多占用一路 VP。VOP需要如下配置:

&video_phy0 {
	status = "okay";
};

&video_phy1 {
	status = "okay";
};

&route_dsi0 {
	status = "okay";
	connect = <&vp0_out_dsi0>;
};

&route_dsi1 {
	status = "okay";
	connect = <&vp1_out_dsi1>;
};

2 调试过程异常情况

与eDP屏幕相比增加MIPI下载初始化代码,上电时许要求更为严苛。出现问题硬件电路检查必不可少哦。首先是屏幕各个电压是否正常,然后上电过程无电源塌陷、时许是否符合要求;最后是上电时许和总线信号。硬件核验完成且异常基本都可正常点亮屏幕,除非屏幕损坏或者SOC mipi模块损坏。接下来分享几个简单现象。

2.1 开机只亮背光,休眠唤醒后正常显示

这种情况处理起来比较简单,查硬件上电时许就可以发现问题;或者休眠唤醒时对比GPIO状态。

adb shell
su
cat /d/gpio

如果开机后立即查看GPIO状态,发现 LCD-RST 是低电平,而经过休眠唤醒恢复正常。
LCD-RST 所在那组GPIO电源域配置出错,可根据"IO-Domain"文档详细排查。

2.2 开机只亮背光,休眠唤醒后仍然黑屏

  1. 核查各路供电电压:MIPI_AVDD_1V8、MIPI_AVDD_0V9、vdd_lcd、avdd_lcd;
    如果发现异常供电,可在设备树中修正或者硬件修复。
  2. 核查GPIO状态:GPIO 申请是否正常,GPIO 是否可控。
    核查方法与 2.1 中相同,对比 /d/gpio 生情编号和休眠唤醒前后GPIO高低电平变化。如GPIO未被申请,需要核查设备树是否正确填写申请GPIO;被其它功能复用在内核 dmesg 信息中会出现 GPIO 申请异常的错误提示。
    出现复用就要根据DTS排查,去掉被复用的位置。
  3. 核查 video_phy 是否正常开启
video_phy0
MIPI-DSI-0
video_phy1
MIPI-DSI-1
Panel
Panel

内核设备树排查请参考核查原理图,适配DSI连接MIPI屏
4. 核查 mipi 信号 ESD 是否异常,或短路
万用表排查ESD两端对比电阻,都接近0恭喜ESD损坏。
可以用简单粗暴方法,直接拆除MIPI差分信号上的 ESD。
5. 屏幕已烧
可拿同款其它样品,或者换到正常主板上做交叉验证。

2.3 开机无 logo

开机时黑屏一段时间,然后是正常开机动画。这种情况缺少类似如下配置:

&route_dsi0 {
	status = "okay";
	connect = <&vp1_out_dsi0>;
};

2.4 屏幕闪烁、偏位

出现这种情况,排除上电时许和排线接触不良;很大概率时屏参不对,可找屏幕厂家核对参数。

Tips

a) 每种表象背后都有原因,或一种或多种;仔细核查会发现
b) mipi 信号是否不良时,使用参数设定mipi总线速率 rockchip,lane-rate = <500>;
c) LCD的使能、复位信号控制GPIO需要匹配电平,屏幕电源域要与GPIO电源域电压相同

总结

懂得经验总结积累,方可不重蹈覆辙。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java版oj】day27不用加减乘除做加法、三角形

目录 一、不用加减乘除做加法 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、三角形 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、不用…

Midjourney V5太炸裂:逼真到颤抖!“有图有真相”时代彻底过去 画画创作者 模特一键淘汰

** ** 文章目录1、Midjourney V51.1、许多人纷纷惊呼&#xff1a;人类画师别活了。1.2、通用模型2、midjourney是什么3、midjourney 的使用方式4、Midjourney新手入门描述词5、一些疑难杂症1、Midjourney V5 继GPT-4发布之后&#xff0c;Midjourney V5上线。网友纷纷试玩&…

java学习之局部内部类

目录 一、内部类简介 二、内部类的分类 三、局部内部类 第一点 第二点 第三点 第四点 第五点 第六点 第七点 一、内部类简介 类的五大成员&#xff1a;属性、方法、构造器、代码块、内部类 package com.hspedu.innerclass;public class InnerClass01 {public static…

2023 年嵌入式世界的3 大趋势分析

目录 大家好&#xff0c;本文讲解了嵌入式发展的3个大趋势&#xff0c;分享给大家。 趋势#1 – Visual Studio Code Integration 趋势#2 –支持“现代”软件流程 趋势 #3 – 在设计中利用 AI 和 ML 结论 大家好&#xff0c;本文讲解了嵌入式发展的3个大趋势&#xff0c;分享…

1、Git使用不完全指南:GitHub的使用详解

GitHub 是一个以开源为基础的社交化编程平台&#xff0c;开发者可以在上面分享代码、协同开发、交流等。下面我们来讲一下如何使用 GitHub。 1. 注册 GitHub 账号 首先&#xff0c;我们需要在 GitHub 上注册一个账号&#xff0c;访问GitHub官网&#xff1a;GitHub: Let’s bui…

IDEA win11安装flutter环境

1.环境说明 操作系统&#xff1a;win11编辑器&#xff1a;Idea 2022.2.1Flutter&#xff1a;3.7.7JDK&#xff1a;17 2.安装 Flutter SDK 2.1安装flutter sdk flutter中文网 2.2配置环境变量 1&#xff09;在环境变量path中加入flutter的安装路径&#xff1a;D:\DevelopT…

结合PCA降维的DBSCAN聚类方法(附Python代码)

目录 前言介绍&#xff1a; 1、PCA降维&#xff1a; &#xff08;1&#xff09;概念解释&#xff1a; &#xff08;2&#xff09;实现步骤&#xff1a; &#xff08;3&#xff09;优劣相关&#xff1a; 2、DBSCAN聚类&#xff1a; &#xff08;1&#xff09;概念解释&a…

关于镜头畸变问题的总结

1、问题背景最近在做的项目有畸变校正的需求&#xff0c;但测试镜头畸变时&#xff0c;发现畸变的形态不太正常。如下图所示中间向内凹、四周向外凸&#xff0c;感觉像是曲线型的。但常见的畸变就两种&#xff0c;一种是向内收的枕形畸变&#xff0c;另一种是向外凸的桶形畸变&…

SpringCloud:ElasticSearch之DSL查询文档

elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。例如…

第04章_IDEA的安装与使用(上)

第04章_IDEA的安装与使用&#xff08;上&#xff09; 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 本章专题与脉络 【Why IDEA ?】 【注】JetBrains官方说明&#xff1a; 尽管我们采取了多种…

从二叉树角度看归并排序

归并排序本质上可以看作二叉树的后序遍历 里面用到的核心思想 > 分治 分&#xff1a;二叉树算法思想中的分解问题思想 治&#xff1a;链表中双指针技巧&#xff08;将两条链表合并成一条有序链表&#xff09; sort首先将数组分成左半边和右半边 > 然后分别对左右两…

Log库和配置系统结构

Log库&#xff1a; 类关系 首先有3个大类&#xff1a;LogEvent、LogAppender、Logger、LogFormat&#xff1b; 关系如下&#xff1a; Logger&#xff1a;具体log的实现 LogAppender&#xff1a;将Log信息传输到不同的目的地&#xff0c;根据不同的需求派生出不同的类 LogF…

Java 系列 Nacos

Java 系列文章 文章目录Java 系列文章前言一、Nacas 介绍及安装1. 什么是Nacos2. 为什么使用Nacos3. Nacos 下载和安装二、Nacos服务提供者注册1. Nacos代替Eureka2. Nacos服务注册中心3. Nacos Discovery引入1. 创建新项目2. POM3. YML文件4. 启动类5. 业务类6. 测试&#xff…

Git如何推送当前代码到远程仓库

第一种方法 &#xff08;建立在已经配置好用户变量和ssh基础上&#xff09; 在本地创建git仓库 git init 绑定远程仓库&#xff0c;origin是给远程仓库起的别名&#xff0c;也可以起其他名字&#xff0c;但是如果用origin&#xff0c;git push时可以不指出名字&#xff0c;如果…

【2023 · CANN训练营第一季】昇腾AI入门课(Pytorch)——第一章学习笔记

第一章 昇腾AI基础知识介绍 第2节 昇腾AI全栈架构 昇腾 AI 全栈可以分成四个大部分&#xff1a; 1&#xff0e;应用使能层面&#xff0c;此层面通常包含用于部署模型的软硬件&#xff0c;例如 API 、 SDK 、部署平台&#xff0c;模型库等等。 2. AI 框架层面&#xff0c;此层…

【C语言】 程序员的自我修养之(程序编译过程)

在ANSI C(标准C)的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境&#xff0c;它用于实际执行代码。 今天我们就讲解他们在这环境过程都做了什么。 文章目录详解编译链接翻译环境编…

【数据库原理 • 七】数据库并发控制

前言 数据库技术是计算机科学技术中发展最快&#xff0c;应用最广的技术之一&#xff0c;它是专门研究如何科学的组织和存储数据&#xff0c;如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进&#xff0c;最常用的技术。 当前…

【19】核心易中期刊推荐——人工智能 | 遥感信息处理

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

redis——优化

键值设计bigKey例子批处理单机 pipeline集群服务器持久化慢查询安全内存集群问题集群完整性集群带宽数据倾斜客户端性能命令的集群兼容性lua和事务&#xff1a;集群下不支持键值设计 长度 < 44 节省内存。string的底层数据结构中&#xff0c;编码格式embstr&#xff08;连续…

LeetCode:455. 分发饼干——贪心算法

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340;算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 贪心算法是在每个阶段选取局部最优解&#xff0c;最终得到全局最优解的一种思想。贪心算法…