HDMI之HPD简述

术语,

HPD: Hot Plug Detect热插拔检测

Sink设备上电情况,

HDMI线缆未连接时,Sink端5V_DET有弱下拉为LOW,表示未插入cable,Source端HPD有弱下拉为低电平,表示未连接,未连接意味着可能cable未插,也可能cable已插但SINK端没有READY好。

HDMI线缆连接后,SINK端在没有检测到5V_DET前以及READY前都会保持输出HPD为LOW电平,SINK端在检测到5V_DET为高电平后,开始初始化,通常花费数百ms,然后切换HPD为高电平,Source端检测到Sink READY,开始初始化。

Sink设备下电情况,

SINK设备未上电情况下,线缆插入,Sink端5V_DET为高,通过一个上拉电阻连接HPD,同时Sink端由于未上电无法toggle HPD为低,所以最终HPD为高,回馈给Source端,Source端认为Sink READY,可以通过I2C读取Sink端的edid等数据,也可以使能CEC数据通信,因此即使Sink设备不上电也是可以完成基本的数据交互的。

Source端toggle HPD状态的条件,

  1. PLUG-IN, high
  2. PLUG-OUT, low持续100+ms

因此,在HPD为PLUG-IN状态时,HPD的短暂变化并不会影响HPD的toggle状态,可以用HPD来传输一些有用的自定义数据。

HPD电平平移情况,

Sink端和Source端使用的IO电压可能不一致,比如Sink端是5V,而Source端是1.8V, 此时要使用到电平平移电路,

  1. 电平缓冲IC,HPD极性一致。
  2. 使用单一三极管电路进行反向隔离,通常在Sink端设备实现,由于做了反相,因此三极管的输入(一般连接到Soc)HPD也要输出反向电平,比如要assert HPD时,Soc输出HPD低电平,那么在Source端的HPD就为高电平。下图就是这种情况,注意图中的Sink实际指Soc端输出HPD信号。
### RK3588 HDMI HPD 自定义配置方法 在 RK3588 芯片上实现 HDMI 的热插拔检测 (Hot Plug Detect, HPD) 功能,通常需要通过设备树 (Device Tree) 进行相应的 GPIO 配置以及驱动程序的支持。以下是具体的配置方式: #### 1. 设备树中的 HPD 配置 在设备树中,HDMI 接口的相关节点可以通过 `hpd-gpios` 属性来指定用于热插拔检测的 GPIO 引脚。以下是一个典型的设备树片段示例[^2]: ```dts &hdmi { pinctrl-names = "default"; pinctrl-0 = <&hdmi_hpd_pins>; // 定义 HPD 引脚的 pin 控制 hpd-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; // 假设 GPIO0_12 是分配给 HPD 的引脚 status = "okay"; ports { port@0 { reg = <0>; hdmi_out: endpoint { remote-endpoint = <&display_in>; }; }; }; }; ``` 在此配置中: - **`pinctrl-0`**: 指定 HPD 引脚的 Pin 控制组。 - **`hpd-gpios`**: 明确指定了哪个 GPIO 引脚被用来作为 HPD 输入信号。 #### 2. Pin 控制配置 Pin 控制的具体设置可以在 `.dtsi` 文件中完成。例如,在 Rockchip 提供的标准文件 `rockchip-pinconf.dtsi` 中可以找到类似的定义[^4]: ```dts hdmi_hpd_pins: hdmi-hpd-pins { pins = "GPIO0_12"; // 对应于上面使用的 GPIO0_12 function = "hdmi_hpd"; // 设置该引脚的功能为 HDMI HPD bias-disable; drive-strength = <4>; // 设置驱动强度为 4mA }; ``` 此部分确保了硬件层面的正确初始化,并使能了特定的 GPIO 引脚作为 HPD 使用。 #### 3. 驱动支持 除了设备树外,还需要确认内核驱动是否能够正常处理 HPD 事件。对于 RK3588 来说,其 DRM/DW-HDMI 驱动已经集成了基本的 HPD 处理逻辑[^3]。核心函数如下: - **`dw_hdmi_rockchip_probe()`**: 初始化过程中会调用 `pm_runtime_enable()` 和 `component_add()` 函数以注册组件并启用电源管理。 - **`dw_hdmi_rockchip_bind()`**: 绑定时进一步绑定 DRM 输出接口与 HDMI PHY。 如果默认行为不满足需求,则可能需要修改驱动源码以适配特殊场景下的 HPD 行为。 --- ### 总结 为了在 RK3588 上自定义 HDMIHPD 功能,主要涉及以下几个方面的工作: 1. 在设备树中明确指定 HPD 所需的 GPIO 引脚及其属性; 2. 利用 Pin 控制机制调整对应的电气特性; 3. 确认底层驱动已具备完善的 HPD 支持能力。 以上操作完成后即可实现对连接状态变化的有效监测。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值