文章目录
1、环境介绍
硬件:飞凌ok3568-c开发板
软件:原厂rk356x sdk
HDMI屏:我买的是7寸的HDMI便携屏,带USB触摸,带耳机接口
2、HDMI介绍
2.1、HDMI 类型
- 按连接器类型分:
Type A
:标准型 HDMI 连接器,是最常用的类型,有 19 针,插头尺寸为 13.9×4.45mm,广泛应用于电视、电脑显示器、游戏机等设备。
Type B
:有 29 针,主要用于一些专业设备或者早期高分辨率显示设备,在 HDMI 1.3 标准发布后,其使用场景逐渐减少。
Type C
:Mini-HDMI,也是 19 针,尺寸较小,插头尺寸为 10.42×2.42mm,常用于便携式设备如数码相机、平板电脑等。
Type D
:Micro-HDMI,同样是 19 针,尺寸更小,插头尺寸为 6.4×2.8mm,主要用于智能手机等更小的便携式设备。
Type E
:随 HDMI 1.4 标准引入,专为高速汽车应用而设计,具有抗振动和冲击的特性,其先进的设计还包括一个可承受振动的锁定片和一个可防止连接内部受潮和脏污的金属外壳。
- 按公对母锁定机制分:
直式 HDMI 连接器
:常用的直式 HDMI 连接器,公接头和母接头直接插入连接。
直角 HDMI 连接器
:在连接处有一个 90 度的锐角弯曲,可节省连接点的空间。
2.2、HDMI引脚定义
以 Type A 接口为例,以下是其引脚的详细定义:
引脚 | 信号 | 引脚 | 信号 | 引脚 | 信号 |
---|---|---|---|---|---|
1 | 数据2+ | 2 | 数据2屏蔽 | 3 | 数据2- |
4 | 数据1+ | 5 | 数据1屏蔽 | 6 | 数据1- |
7 | 数据0+ | 8 | 数据0屏蔽 | 9 | 数据0- |
10 | 时钟+ | 11 | 时钟屏蔽 | 12 | 时钟- |
13 | CEC | 14 | 保留 | 15 | SCL |
16 | SDA | 17 | DDC/CEC地 | 18 | +5V电源 |
19 | 热插拔检测 |
TMDS 数据传输引脚
:1-9 号引脚为 TMDS 数据传输引脚,分为 0、1、2 三组,用于传输视频像素数据、音频数据包、图像信息包等。TMDS 时钟信号引脚
:10-12 号引脚为 TMDS 时钟信号引脚,为 TMDS 数据传输提供时钟同步信号,确保数据的正确传输和接收。CEC 引脚
:13 号引脚为 CEC(Consumer Electronics Control)引脚,类似一种扩展的 HDMI 功能,供厂家自己定制 HDMI 消息,可实现通过一个遥控器控制多个连接的设备。保留引脚
:14 号引脚为保留引脚,未使用,部分情况下也可作为 CEC 的备用引脚。DDC 引脚
:15-16 号引脚为 I2C 引脚,用于 DDC(Display Data Channel)传输,主要用于 EDID(Extended Display Identification Data)与 HDCP(High-bandwidth Digital Content Protection)的传输,设备通过 DDC 来获取对方设备的 EDID 等信息。接地引脚
:17 号引脚为接地引脚,提供电路的参考电位,保证信号传输的稳定性和安全性。5V AC 引脚
:18 号引脚为 5V 的 AC 引脚,为连接的 HDMI 设备提供电源。热插拔检测引脚
:19 号引脚为 Hotplug(热拔插)引脚,用于监测 HDMI 设备有没有存在,当设备连接时,该引脚会发出信号,以便设备能够正确地识别和配置 HDMI 接口。
3、RK3568显示接口
RK3568显示接口如下,其中有1个原生的HDMI2.0接口:
RK3568显示接口最大输出分辨率:
4、RK3568 VOP
VOP 是视频输出处理器。它主要负责处理视频信号的输出,将经过处理(如解码、图形渲染等)后的视频数据转换为适合显示设备(如显示器、电视等)接收的格式,并输出到物理接口(如 HDMI、eDP 等)。
4.1、RK3568 VOP基础特性
4.2、RK3568 VP
RK3568 VOP2.0有3个Video Post接口,分别是VP0、VP1、VP2。
下图是RK3568 VP接口和各显示接口的连接关系,其中支持HDMI输出的有VP0、VP1接口:
5、原理图查看
ok3568-c开发板原理图HDMI部分:
6、显示调试
6.1、dts配置
6.1.1、使能HDMI
&hdmi {
status = "okay";
};
6.1.2、绑定VP
当使能HDMI接口后,其支持HDMI的所有VP接口默认会打开,我们只能选择一个,这里我们使用VP0,那么VP1就要关掉:
/* 使能vp0 */
&hdmi_in_vp0 {
status = "okay";
};
/* 关闭vp1 */
&hdmi_in_vp1 {
status = "disabled";
};
/* 配置hdmi使用vp0输出 */
&route_hdmi {
status = "okay";
connect = <&vp0_out_hdmi>;
};
同时,关闭其它暂时用不到的显示接口和VP接口:
/* edp */
&edp {
status = "disabled";
};
&edp_in_vp0 {
status = "disabled";
};
&edp_in_vp1 {
status = "disabled";
};
&route_edp {
status = "disabled";
};
/* dsi0 */
&dsi0 {
status = "disabled";
};
&dsi0_in_vp0 {
status = "disabled";
};
&dsi0_in_vp1 {
status = "disabled";
};
&route_dsi0 {
status = "disabled";
};
/* dsi1 */
&dsi1 {
status = "disabled";
};
&dsi1_in_vp0 {
status = "disabled";
};
&dsi1_in_vp1 {
status = "disabled";
};
&route_dsi1 {
status = "disabled";
};
/* lvds */
&lvds {
status = "disabled";
};
&lvds_in_vp1 {
status = "disabled";
};
&lvds_in_vp2 {
status = "disabled";
};
&route_lvds {
status = "disabled";
};
/* rgb */
&rgb {
status = "disabled";
};
&rgb_in_vp2 {
status = "disabled";
};
&route_rgb {
status = "disabled";
};
6.2、验证
6.2.1、观察启动logo
正常情况下,接入HDMI屏幕后,系统启动过程中,屏幕会显示logo。
6.2.2、查看VOP接口状态
cat /sys/kernel/debug/dri/0/summary
6.2.3、查看Connector状态
/sys/class/drm 目录下可以看到驱动注册的各个显卡:
ls /sys/class/drm
以 card0-HDMI-A-1 为例,其目录下有以下文件:
ls /sys/class/drm/card0-HDMI-A-1
- enabled:使能状态
- status:连接状态
- modes:连接设备支持的分辨率列表
6.2.4、查看HDMI工作状态
cat /sys/kernel/debug/dw-hdmi/status
6.2.5、查看HDMI CEC工作状态
cat /sys/kernel/debug/dw-hdmi/status
- configured 表示 cec adapter 是否配置完毕,1 为配置完毕,0 为未完毕。
- configuring 表示 cec adapter 是否正在配置,1 为正在,0 为配置完毕或未开始配置。
- phys_addr 表示 cec 的物理地址,未获取物理地址时为 f.f.f.f。
- number of LAs 表示该 cec 设备的逻辑地址数量,大部分设备为 1,极少数为 2。
- LA mask 表示当前绑定的逻辑地址,具体取值为(1 << 绑定的逻辑地址)。如:取值为 0x0010 时,右移 4 位后为 1,则说明当前的逻辑地址为 4,取值为 0x0800 时,右移 11 位后为 1,则说明当前的逻辑地址为11.如未绑定任何逻辑地址时为 0x0000。
- pending transmits 表示当前还有多少待发送的 cec 消息。
6.2.6、强制使能/禁用HDMI
强制使能 HDMI:
echo on > /sys/class/drm/card0-HDMI-A-1/status
强制禁用 HDMI:
echo off > /sys/class/drm/card0-HDMI-A-1/status
恢复检测热插拔:
echo detect > /sys/class/drm/card0-HDMI-A-1/status
7、触摸调试
本次调试的屏幕带USB触摸,在板卡适配好USB Host的情况下(RK3568 bsp 9 - USB调试记录-CSDN博客),使用一根USB转Type-C的线连接屏幕和板卡对应的接口。上电后,USB控制器驱动会枚举设备,当发现是一个HID设备后,会为其加载HID设备驱动,HID设备驱动会根据报告描述符将其注册进输入子系统,分配inputEvent节点。
查看原始触摸数据:
hexdump /dev/input/event5
8、总结
嵌入式Linux学习交流群:424571391
参考文章:
《Rockchip_Developer_Guide_HDMI_CN.pdf》