嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏
eDP是嵌入式显示端口,具有高数据传输速率,高带宽,高分辨率、高刷新率、低电压、简化接口数量等特点。现大多数笔记本电脑都是用的这种接口。整个eDP是很复杂的,这里我们不讲底层原理,我们先掌握如何用泰山派来驱动各种常见的eDP屏幕,eDP在使用上来讲也会比上面的HDMI复杂很多,HDMI屏幕基本不需要适配即插即用,虽然大多数eDP屏幕参数基本差不多,但是有些eDP还是需要我配置屏参的,如果屏幕参数不正确可能无法点亮。泰山派eDP接口位于板载顶部位置。
分辨率与尺寸:
最大支持分辨率是主控决定的,通过数据手册可知RK3566的eDP接口最大支持2560x1600@60Hz,所以所选的eDP屏幕分辨率不大于这个分辨率就行,大于了点不亮,
常见的尺寸有11.6寸,13.3寸,15.6寸等,屏幕对尺寸没有太大要求可以根据自己的项目和喜好来选择。
引脚接口:
接口线序要和板载资源一样,否则需要自己画转接板,泰山派的eDP接口用的是30Pin 0.5mm的FPC座,30Pin引脚大多数线序都是通用的,但大家不能盲目的看见一个30Pin的eDP屏幕就直接怼上去,还需要确定一下它的引脚顺序他用的排线是正排线还是反排线,电源电源是否匹配,还有背光供电电压是否匹配等。
上图就是我们的板载资源的硬件图示了,接口不要搞错了,这边用的是泰山派。
上图就是我们买的一款edp屏幕的参数。
屏幕调试
要调试eDP屏幕我们首先要找到泰山派user设备树linux/kernel/arch/arm64/boot/dts/tspi-rk3566-user-v10-linux.dts
,并打开tspi-rk3566-user-v10-linux.dts
设备树头文件,这里面主要是和我们edp相关的设备树配置。
tspi-rk3566-edp-v10.dtsi
设备树分析
edp相关的设备树tspisdk/kernel/arch/arm64/boot/dts/rockchiptspi-rk3566-edp-v10.dtsi
,我们要修改的其实就13行-21行屏幕就参数正确屏幕就能点亮这些参数后续也会讲到,这里作为一个引子。
/ {edp_panel: edp-panel {compatible = "simple-panel"; //上节我们讲过的edp驱动通过这个来匹配设备树backlight = <&backlight>; // 引用背光,在下面背光是一个PWM信号enable-gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; // 激活GPIO引脚enable-delay-ms = <120>; // 开启延迟时间(毫秒)pinctrl-0 = <&edp_en_gpio>; // 引脚控制器edp_disp_timings: display-timings {native-mode = <&edp_timing0>;/*开始:这一部分就是我们要调试的屏幕参数了*/edp_timing0: edp_timing0 {clock-frequency = <150000000>; // 像素时钟频率hactive = <1920>; // 水平像素数vactive = <1080>; // 垂直像素数hfront-porch = <150>; // 水平前肩期hsync-len = <5>; // 水平同步长度hback-porch = <5>; // 水平后肩期vfront-porch = <3>; // 垂直前肩期vsync-len = <1>; // 垂直同步长度vback-porch = <9>; // 垂直后肩期hsync-active = <0>; // 水平同步有效状态vsync-active = <0>; // 垂直同步有效状态de-active = <0>; // DE有效状态pixelclk-active = <0>; // 像素时钟有效状态};/*结束:这一部分就是我们要调试的屏幕参数了*/};ports {panel_in_edp: endpoint {remote-endpoint = <&edp_out_panel>; // 引用端点连接};};};/*这是我们的背光*/backlight: backlight {compatible = "pwm-backlight";pwms = <&pwm4 0 25000 0>; // PWM参数设置brightness-levels = < // 亮度级别0 20 20 21 21 22 22 23// 其他亮度级别...254 255>;default-brightness-level = <200>; // 默认亮度级别};
};&pwm4 { //背光引脚使用的是PWM4status = "okay"; // PWM状态为正常
};&pinctrl {edp {edp_en_gpio: edp-en-gpio { //这个是edp对应的使能引脚rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; // GPIO设置};};
};&edp {status = "okay";force-hpd; // 强制HPD,这里非常重要哟,因为我们硬件上面是没有去做检测的所以要强制ports {edp_out: port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;edp_out_panel: endpoint@0 {reg = <0>;remote-endpoint = <&panel_in_edp>; // 远程端点连接};};};
};&edp_phy {status = "okay"; // EDP PHY状态为正常
};&route_edp {status = "okay"; // EDP线路状态为正常//注意我们前面有讲到rk3566有两个vop,我们这里就是来链接vop的,你可以选择1或者0这里我们选择0connect = <&vp0_out_edp>; // 连接设置// connect = <&vp1_out_edp>;
};
//注意我们前面有讲到rk3566有两个vop,我们这里就是来链接vop的,你可以选择1或者0这里我们选择0
&edp_in_vp0 {status = "okay"; // EDP输入VP0状态为正常
};
//注意我们前面有讲到rk3566有两个vop,我们这里就是来链接vop的,我们前面选择了vp0所以这里vp1就关掉
&edp_in_vp1 {status = "disabled"; // 禁用EDP输入VP1
};&edp_panel {status = "okay"; // 打开edp面板,这个一定要打开哟如果用edp屏幕
};
edp背光电路
/ {edp_panel: edp-panel {compatible = "simple-panel"; //上节我们讲过的edp驱动通过这个来匹配设备树backlight = <&backlight>; // 引用背光,在下面背光是一个PWM信号/*这是我们的背光*/backlight: backlight {compatible = "pwm-backlight";pwms = <&pwm4 0 25000 0>; // PWM参数设置brightness-levels = < // 亮度级别0 20 20 21 21 22 22 23// 其他亮度级别...254 255// 如果你在安卓里面调背光发现是反的可以把这个数组倒过来>;default-brightness-level = <200>; // 默认亮度级别};
};&pwm4 { //背光引脚使用的是PWM4status = "okay"; // PWM状态为正常
};
edp使能引脚
/ {edp_panel: edp-panel {compatible = "simple-panel"; //上节我们讲过的edp驱动通过这个来匹配设备树pinctrl-0 = <&edp_en_gpio>; // 引脚控制器.......
};&pinctrl {edp {edp_en_gpio: edp-en-gpio { //这个是edp对应的使能引脚rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; // GPIO设置};};
};
.......
GPIO0_A6_d这个引脚就是普通的GPIO,通过高低电平来控制edp屏幕打开与关闭
屏幕参数调试
水平像素参数:Hor Active = 1366,表示水平活动像素为 1366 个。
水平空白参数:Hor Blanking = 160,表示水平空白像素为 160 个。
垂直像素参数:Ver Active = 768,表示垂直活动像素为 768 个。
垂直空白参数:Ver Blanking = 22,表示垂直空白像素为 22 个。
水平同步参数:Hor Sync Offset = 48,表示水平同步偏移量为 48;H Sync Pulse Width = 32,表示水平同步脉冲宽度为 32。
垂直同步参数:V sync Offset = 3 line,表示垂直同步偏移量为 3 行;V Sync Pulse width = 6 line,表示垂直同步脉冲宽度为 6 行。
对应到我们设备树中
clock-frequency:可以对应上面提到的主时钟频率,即 72.3 MHz。
hactive:可以对应上面提到的水平活动像素,即 Hor Active = 1366。
vactive:可以对应上面提到的垂直活动像素,即 Ver Active = 768。
hfront-porch、hsync-len 和 hback-porch:可以对应上面提到的水平同步参数,即 Hor Sync Offset、H Sync Pulse Width 和 Hor Blanking。
vfront-porch、vsync-len 和 vback-porch:可以对应上面提到的垂直同步参数,即 V sync Offset、V Sync Pulse width 和 Ver Blanking。
/*************************************************11.6寸1366x768
**************************************************/
&edp_timing0 {clock-frequency = <72300000>;hactive = <1366>;vactive = <768>;hfront-porch = <48>;hsync-len = <32>;hback-porch = <160>;vfront-porch = <3>;vsync-len = <6>;vback-porch = <32>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;
};
相关文章:

嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏
eDP是嵌入式显示端口,具有高数据传输速率,高带宽,高分辨率、高刷新率、低电压、简化接口数量等特点。现大多数笔记本电脑都是用的这种接口。整个eDP是很复杂的,这里我们不讲底层原理,我们先掌握如何用泰山派来驱动各种…...

在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。
在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。以下是关于这两种方法的详细解释: 一、虚方法(Virtual Method) 定义:虚方法是指在运行时由实例的实际类型决定的方法。在Java中,所有的非私有、非静态、非final方法都是虚方法。当调用一个虚方法时,JVM会根据实…...

【windows】sonarqube起不来的问题解决
1. 现象与本质 因JDK的问题(比如版本太低或者太高,推荐JDK17)或者其他环境因素,导致sonarqube启动后自动关闭了。 从日志来看,根本看不出来什么,只有警告,没有ERROR,警告也不是本质问题&#…...

golang异常
panic如果不处理会导致应用进程挂掉 defer recover可以处理这种情况 一个recover只处理自己协程 产生panic的情况 空指针 数组越界 空map中添加键值对 错误,error接口,不严重 error.wrapof解决嵌套问题或者error.unwrap erroe.is方法,判断是…...

搭建MongoDB
title: 搭建MongoDB date: 2024-11-30 23:30:00 categories: - 服务器 tags: - MongoDB - 大数据搭建MongoDB 环境:Centos 7-2009 1. 创建MongoDB的国内yum源 # 下载Centos7对应最新版7.0.15的安装包 cat >> /etc/yum.repos.d/mongodb.repo << &quo…...

Android中坐标体系知识超详细讲解
说来说去都不如画图示意简单易懂啊!!!真是的! 来吧先上张图! (一)首先明确一下android 中的坐标系统: 屏幕的左上角是坐标系统原点(0,0) 原点向右延伸是X轴正…...

不需要服务器,使用netlify快速部署自己的网站
Netlify简介 1.1 Netlify的功能与特点 Netlify 是一个功能强大的静态网站托管平台,它不仅提供了简单的网站部署功能,还集成了许多现代化的开发工具和服务,帮助开发者更高效地构建、部署和管理网站。Netlify 的核心功能包括: 自动…...

Swin transformer 论文阅读记录 代码分析
该篇文章,是我解析 Swin transformer 论文原理(结合pytorch版本代码)所记,图片来源于源paper或其他相应博客。 代码也非原始代码,而是从代码里摘出来的片段,配上简单数据,以便理解。 当然&…...

信息安全概论
文章目录 预测题重要考点1.遇到什么威胁有什么漏洞怎么缓解分析题2.网络安全现状分析 2.网络安全亮点 时间信息安全概论期末简答题软件学院实验室服务器安全风险分析与PDRR策略 1.1 信息时代的特点1.2 信息安全威胁1.3信息安全趋势1.4 研究网络与信息安全的意义2.1安全风险分析…...

2024年12月16日Github流行趋势
项目名称:PDFMathTranslate 项目维护者:Byaidu reycn hellofinch Wybxc YadominJinta项目介绍:基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/Docker。项目star数…...

Go 1.24即将到来!
Go 1.24 尚未发布。以下是正在撰写中的发布说明,预计 Go 1.24 将于 2025 年 2 月发布。 语言改进 Go 1.24 现在全面支持 泛型类型别名:类型别名可以像定义类型一样被参数化。详情请参阅语言规范。目前,可通过设置 GOEXPERIMENTnoaliastypep…...

FFmpeg库之ffplay
文章目录 FFmpeg环境搭建ffplay使用通用选项视频选项音频选项快捷键使用滤镜直播拉流 FFmpeg环境搭建 FFmpeg官网 FFmpeg环境搭建 ./configure \--prefix"$HOME/ffmpeg" \--extra-cflags"-I$HOME/ffmpeg/include" \--extra-ldflags"-L$HOME/ffmpeg…...

scala中模式匹配的应用
package test34object test6 {case class Person(name:String)case class Student(name:String, className:String)// match case 能根据 类名和属性的信息,匹配到对应的类// 注意:// 1 匹配的时候,case class的属性个数要对上// 2 属性名不需…...

WebRTC搭建与应用(一)-ICE服务搭建
WebRTC搭建与应用(一) 近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC、ICE信令协议等有了初步了解,在此记录一下,以防遗忘。 第一章 ICE服务搭建 文章目录 WebRTC搭建与应用(一)前言一、ICE是什么?二、什么…...

【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解
本文将深入介绍鲜花分类数据集的加载与处理方式,同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向,为读者提供从数据组织、预处理、加载到可视化展示的完整过程,并为后续模型训练打下基础。 前言 在计算机视觉的深…...

Kafka学习篇
Architecture 系统间解耦,异步通信,削峰填谷 Topic 消息主题,用于存储消息 Partition 分区,通过扩大分区,可以提高存储量 Broker 部署Kafka服务的设备 Leader kafka主分区 Follwer kafka从分区 高性能之道:…...

冬日养仓鼠小指南:温暖与陪伴同行
随着冬日的脚步悄然来临,家中可爱的小仓鼠也需要我们给予更多的关怀与呵护。仓鼠虽小,但它们的冬日养护却大有学问,关乎着这些小生命能否健康快乐地度过寒冷季节。 保暖是冬季养仓鼠的首要任务。我们可以为仓鼠的小窝增添一些保暖材料&#…...

【计算机视觉基础CV】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用
引言 在上一篇文章中,我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型,特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤,读…...

Python爬虫之代理的设置
【1】urllib中使用公开代理 import urllib.requesturl http://www.baidu.com/s?wdipheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 }# 请求对象的定制 request urllib.req…...

Canoe E2E校验自定义Checksum算法
文章目录 一、添加 DBC文件二、导入要仿真的ECU节点三、编写 CAPL脚本1. 创建 .can 文件2. 设置counter递增3. 设置 CRC 算法,以profile01 8-bit SAE J1850 CRC校验为例 四、开始仿真五、运行结果CRC在线校验 当E2E的 CRC算法非常规算法,则需要自己编写代…...

[HNCTF 2022 Week1]你想学密码吗?
下载附件用记事本打开 把这些代码放在pytho中 # encode utf-8 # python3 # pycryptodemo 3.12.0import Crypto.PublicKey as pk from hashlib import md5 from functools import reducea sum([len(str(i)) for i in pk.__dict__]) funcs list(pk.__dict__.keys()) b reduc…...

端到端自动驾驶大模型:视觉-语言-动作模型 VLA
模型框架定义、模型快速迭代能力是考查智驾团队出活能力的两个核心指标。在展开讨论Vision-Language-Action Models(VLA)之前,咱们先来讨论端到端自动驾驶大模型设计。 目录 1. 端到端自动驾驶大模型设计 1.1 模型输入设计 1.2 模型输出设计 1.3 实现难点分析 …...

druid与pgsql结合踩坑记
最近项目里面突然出现一个怪问题,数据库是pgsql,jdbc连接池是alibaba开源的druid,idea里面直接启动没问题,打完包放在centos上和windows上cmd窗口都能直接用java -jar命令启动,但是放到国产信创系统上就是报错…...

【xxl-job】XXL-Job源码深度剖析:分布式任务调度的艺术与实践
XXL-Job源码深度剖析 核心概念1、调度中心2、执行器3、任务 来个Demo1、搭建调度中心2、执行器和任务添加3、创建执行器和任务 从执行器启动说起1、初始化JobHandler2、创建一个Http服务器3、注册到调度中心 任务触发原理⭐⭐⭐1、任务如何触发?调度线程scheduleThr…...

图漾相机-ROS1_SDK_ubuntu版本编译(新版本)
文章目录 官网编译文档链接官网SDK下载链接1、下载 Camport ROS1 SDK1.下载git2、下载链接 2、准备编译工作1、安装 catkin2、配置环境变量3. 将Camport3中的linux库文件拷贝到 user/lib目录下4、修改lunch文件制定相机(可以放在最后可以参考在线文档)**…...

项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%
资料查找: 01 方案选择 使用单片机测量电阻有多种方法,以下是一些常见的方法及其原理: 串联分压法(ADC) 原理:根据串联电路的分压原理,通过测量已知电阻和待测电阻上的电压,计算出…...

【NLP 17、NLP的基础——分词】
我始终相信,世间所有的安排都有它的道理;失之东隅,收之桑榆 —— 24.12.20 一、中文分词的介绍 1.为什么讲分词? ① 分词是一个被长期研究的任务,通过了解分词算法的发展,可以看到NLP的研究历程 ② 分词…...

uniapp blob格式转换为video .mp4文件使用ffmpeg工具
前言 介绍一下这三种对象使用场景 您前端一旦涉及到文件或图片上传Q到服务器,就势必离不了 Blob/File /base64 三种主流的类型它们之间 互转 也成了常态 Blob - FileBlob -Base64Base64 - BlobFile-Base64Base64 _ File uniapp 上传文件 现在已获取到了blob格式的…...

【无标题】 [蓝桥杯 2024 省 B] 好数
[蓝桥杯 2024 省 B] 好数 好数 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。 给定一…...

Leecode刷题C语言之同位字符串连接的最小长度
执行结果:通过 执行用时和内存消耗如下: bool check(char *s, int m) {int n strlen(s), count0[26] {0};for (int j 0; j < n; j m) {int count1[26] {0};for (int k j; k < j m; k) {count1[s[k] - a];}if (j > 0 && memcmp(count0, cou…...