09 屏幕
1 主流显示接口介绍
嵌入式设备和消费电子产品中。MIPI DSI、eDP 和 HDMI 是三种主流的显示接口,用于在主机(如 SoC、电脑、手机主板)和显示器(屏幕)之间传输视频数据和指令。 它们各有侧重,应用于不同的领域。下面我将为您详细介绍这三种显示方式。
1.1 MIPI屏幕
MIPI(Mobile Industry Processor Interface,移动产业处理器接口)是一个由 MIPI 联盟 制定的、专为移动设备(如智能手机、平板电脑、笔记本电脑、物联网设备、汽车等)设计的一系列开放标准,具备低功耗,高集成度和抗干扰能力强的特点。
MIPI接口不是单一接口,MIPI 联盟主要是为移动处理器定制标准接口和规范,开发的接口广泛应用于处理器、相机、显示屏、基带调制解调器等设备。常见的接口是MIPI DSI(显示屏接口) 和 MIPI CSI(摄像头接口),本文只介绍MIPI DSI

RK3568 有一个 MIPI DSI 接口,所以也有一个 MIPI DSI 主控外设,用于完成 MIPI DSI 屏幕的驱动。此 MIPI DSI HOST 内核符合 MIPI 协议, MIPI DSI HOST 用于连接内核和 D-PHY, RK3568 的 MIPI DSI HOST 接口支持 1~4Lane。
RK3568 的 MIPI DSI HOST 控制器支持的特性如下:
- 兼容 MIPI 联盟标准
- 支持 DPI 接口颜色映射,支持 16/18/24bit 色深
- 所有 DPI 接口信号极性可编程
- 最高支持 4Lane 的 D-PHY 数据 Lane
- Data0 支持双线通信和 Escape 模式
- 可以传输所有的 Generic 命令
- 支持 EOTP 包
RK3568 的 MIPI DSI HOST 控制器框图如下图所示:

1.2 HDMI屏幕
HDMI 全称为 High Definition Multimedia Interface,也就是高清多媒体接口,是一个纯数字的音视频传输接口,通过一根线同时发送音视频数据。目前在电视、显示器、电脑、机顶盒等领域得到了广泛的使用。
瑞芯微的 RK3568 芯片原生自带了 HDMI外设接口,可以用来连接 HDMI 显示器,本章我们就来学习一下如何使用 RK3568 的 HDMI 接口。
HDMI的结构框图如下所示:

图中的几个通道实现的功能是:
- TMDS:传输音视频数据
- CEC:实现遥控器功能
- DDC:实现屏幕分辨率自适应,通过 DDC 获取不同屏幕的参数信息
- HPD:实现热插拔 HDMI一共有五种接口如下:

最常用的接口类型是Type A 口,我们的M4-R1开发板搭载的也是Type A 口
下面介绍一下Type A 接口,其对应的引脚图和引脚定义如下图所示:

①、视频格式:
- CEA-861-E 标准所支持视频格式, 1080p@60Hz 或者 720p/1080i@120Hz
- HDMI 1.4b 支持的视频格式有:
- CEA-861-E 视频格式最高到 1080p@120Hz
- 支持 4K× 2K
- 支持 3D 视频(TMDS 时钟最高 340MHz)
- 支持 HDMI 2.0 视频格式
②、色彩支持: RGB 4:4:4
③、像素时钟: 13.5MHz-600MHz
④、最高支持 IEC60958 标准的 192KHz 音频采样率
⑤、支持 I2C DDC、 EDID 块读取模式
⑥、最高支持 2160p@60Hz, RGB 4:4:4
(关于更详细的介绍或对以上内容存疑问,请以官网数据为准:https://www.hdmi.org/)
1.3 eDP屏幕
eDP(Embedded DisplayPort,嵌入式 DisplayPort)是一种专为内部连接设计的数字显示接口标准。它由视频电子标准协会(VESA)制定,旨在作为笔记本电脑、平板电脑、一体机等设备中主板与内置显示屏之间的主要互联标准。eDP接口通常使用FPC 接口,连接在主板上面,笔记本电脑通常采用eDP屏幕,并且屏幕上面还有数字麦克风和摄像头,屏幕也可以选择触摸功能。

简单来说,eDP 就是 DisplayPort 标准在嵌入式领域的优化和延伸版本。它继承了 DisplayPort 的高性能特性,并针对嵌入式设备的空间、功耗和成本要求进行了增强。

eDP接口组成:
- Main-Link(主通道):用于传输 视频/音频 数据,高速差分对构成(TX0~TX3),最多 4 通道(Lane),但有些屏只用 2 Lane
- AUX CH(辅助通道):低速单对差分线(AUX+/-),用于传输配置命令和参数
- HPD(Hot Plug Detect):表示热插拔检测通道,用于检测HPD信号由Sink端(屏幕)驱动,通知 Source 端是否有设备接入(选配)
RK3568 eDP 支持的特性如下:
特性 | 规格 |
---|---|
支持版本 | eDP 1.3 |
最大分辨率 | 2560x1600 @ 60Hz |
数据通道(Lane) | 最多4条物理通道 |
色彩深度 | 最高支持 10bit RGB 输出 |
辅助通道(AUX) | 支持 AUX CH 通信 |
热插拔检测(HPD) | 支持 Hot Plug Detect |
面板自刷新(PSR) | 支持 Panel Self Refresh |
(关于更详细的介绍或对以上内容存疑问,请以官网数据为准:https://www.edp.com/zh-hans/node)
1.4 总结
以上三种显示接口就是目前最主流的高性能屏幕接口,如果要从三者中进行选择的话,最大的区别可能就是接口大小了:
- MIPI DSI 接口:如果你的设备是手机屏幕这类小型设备,那么毫无疑问推荐小巧的MIPI DSI 接口
- eDP接口:如果是笔记本电脑这类稍大的移动设备,那就选择接口大小适中的eDP接口屏幕
- HDMI接口:如果是台式电脑显示器、电视等个人使用的固定大屏设备,就推荐使用HDMI、DP 这类体积较大但速度不俗的接口
2 三种屏幕的板卡接口
2.1 MIPI DSI接口

2.2 HDMI接口

2.3 eDP接口

3 屏幕DTS配置与切换方式介绍
3.1 原理介绍
由于rk3568的三款屏幕接口(MIPI DSI、HDMI、eDP)的设备树过于复杂,往往一个外设涉及好几个设备树文件,受限于篇幅以及考虑到各位朋友大部分是入门选手,所以本章以及后续部分章节我们将只对部分板级配置文件进行分析,总结出一些核心内容给大家进行讲解,致力于让大家能够了解这些相对复杂的外设模块,未能为大家提供文件地址。
在此之前,先给大家介绍2个基础概念:
1 VOP(Video Output Processor) 是RK3568的视频输出处理器,负责管理所有显示输出,一共有三个视频端口vp0、vp1、vp2。 VOP路由决定哪个视频管道连接到哪个显示接口,具体内容如下表所示:
视频端口 | 路由配置 | 目标接口 |
---|---|---|
vp0 | vp0_out_dsi0 | MIPI DSI0 |
vp0 | vp0_out_dsi1 | MIPI DSI1 |
vp0 | vp0_out_edp | eDP |
vp0 | vp0_out_hdmi | HDMI |
vp1 | vp1_out_dsi0 | MIPI DSI0 |
vp1 | vp1_out_dsi1 | MIPI DSI1 |
vp1 | vp1_out_edp | eDP |
vp1 | vp1_out_hdmi | HDMI |
vp1 | vp1_out_lvds | LVDS |
vp2 | vp2_out_lvds | LVDS |
vp2 | vp2_out_rgb | RGB |
2 PHY(Physical Layer) 是物理层接口,负责数字信号与物理传输介质之间的转换,不同的屏幕接口需要不同的PHY,具体内容如下表所示。
PHY类型 | 节点名称 | 基地址 | 功能描述 |
---|---|---|---|
Video PHY | video_phy0 | 0xfe850000 | 用于MIPI DSI接口的物理层信号处理 |
Video PHY | video_phy1 | 0xfe860000 | 用于MIPI DSI接口的物理层信号处理 |
eDP PHY | edp_phy | 0xfdcb0000 | 专门用于eDP接口的物理层处理 |
HDMI PHY | 内置PHY | - | HDMI控制器内置PHY功能,通过rockchip,phy-table配置不同频率下的PHY参数 |
3.2 MIPI DTS 配置
&dsi0 {
status = "okay";
dsi0_panel: panel@0 {
compatible = "simple-panel-dsi";
reg = <0>;
backlight = <&backlight>;
prepare-delay-ms = <2>;
reset-delay-ms = <100>;
init-delay-ms = <20>;
enable-delay-ms = <120>;
disable-delay-ms = <50>;
unprepare-delay-ms = <20>;
width-mm = <68>;
height-mm = <121>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
dsi,lanes = <4>;
pinctrl-names = "default";
pinctrl-0 = <&mipi_power_en>;
enable-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>;
panel-init-sequence = [
05 64 01 11
39 00 04 FF 98 81 03
/* ... 更多初始化命令 ... */
];
};
};
&dsi0_in_vp1 {
status = "okay";
};
&route_dsi0 {
status = "okay";
connect = <&vp1_out_dsi0>;
};
- compatible = "simple-panel-dsi" : 通用DSI面板驱动
- dsi,lanes = <4> : 4通道数据传输
- dsi,format = <MIPI_DSI_FMT_RGB888> : RGB888颜色格式
- dsi,flags : DSI工作模式(视频模式、突发模式等)
- enable-gpios : 面板使能GPIO控制
- panel-init-sequence : 面板初始化命令序列
- connect = <&vp1_out_dsi0> : 连接到VOP的VP1端口
3.3 EDP DTS 配置
&edp {
status = "okay";
force-hpd;
ports {
port@1 {
reg = <1>;
edp_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
&route_edp {
status = "okay";
connect = <&vp1_out_edp>;
};
&edp_phy {
status = "okay";
};
&edp_in_vp0 {
status = "disabled";
};
&edp_in_vp1 {
status = "okay";
};
&edp_panel {
power-supply = <&vcc3v3_lcd0_n>;
};
&backlight {
status = "okay";
enable-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&backlight_en>;
};
- 控制器启用 : status = "okay" 启用eDP控制器
- 热插拔检测 : force-hpd 强制热插拔检测
- 端口连接 :通过 ports 节点定义输出端点,连接到面板输入
- VOP路由 : route_edp 配置连接到VOP1输出( vp1_out_edp )
- 物理层 :启用eDP PHY( edp_phy )
- 输入端点 :禁用VOP0输入( edp_in_vp0 ),启用VOP1输入( edp_in_vp1 )
- 电源管理 :面板电源供应配置为 vcc3v3_lcd0_n
- 背光控制 :通过GPIO3_PB5控制背光使能
3.4 HDMI DTS 配置
&hdmi {
status = "okay";
rockchip,phy-table =
<92812500 0x8009 0x0000 0x0270>,
<165000000 0x800b 0x0000 0x026d>,
<185625000 0x800b 0x0000 0x01ed>,
<297000000 0x800b 0x0000 0x01ad>,
<594000000 0x8029 0x0000 0x0088>,
<000000000 0x0000 0x0000 0x0000>;
};
&hdmi_in_vp0 {
status = "okay";
};
&hdmi_in_vp1 {
status = "disabled";
};
&hdmi_sound {
status = "okay";
};
&route_hdmi {
status = "okay";
connect = <&vp0_out_hdmi>;
};
控制器启用
: status = "okay" 启用HDMI控制器PHY参数表
: rockchip,phy-table 定义了不同频率下的PHY配置参数- 支持92.8MHz到594MHz的频率范围
- 每行包含:频率、配置寄存器1、配置寄存器2、配置寄存器3
VOP路由
:启用VOP0输入( hdmi_in_vp0 ),禁用VOP1输入( hdmi_in_vp1 )音频支持
:启用HDMI音频( hdmi_sound )路由配置
: route_hdmi 连接到VOP0输出( vp0_out_hdmi )
3.5 切换屏幕显示方式
目前M4-R1支持MIPI0,EDP,HDMI,3种显示方式,默认显示为MIPI0+HDMI同显。
需要切换屏幕使用时,修改文件 out/kernel/src_tmp/linux-5.10/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux.dts
:
使用MIPI0:
/dts-v1/;
#include "rk3568.dtsi"
#include "rk3568-linux.dtsi"
#include "rk3568-toybrick-x0.dtsi"
#include "rk3568-toybrick-mipi-tx0-beiqicloud.dtsi"
//#include "rk3568-toybrick-mipi-tx1.dtsi"
//#include "rk3568-toybrick-edp.dtsi"
使用EDP:
/dts-v1/;
#include "rk3568.dtsi"
#include "rk3568-linux.dtsi"
#include "rk3568-toybrick-x0.dtsi"
//#include "rk3568-toybrick-mipi-tx0-beiqicloud.dtsi"
//#include "rk3568-toybrick-mipi-tx1.dtsi"
#include "rk3568-toybrick-edp.dtsi"