HDMI如何进行插入检测
当HPD引脚电压大于2V时,判断显示器与主机连接:当检测到HPD引脚电压小于0.8V时,则判断显示器与主机连接已经断开。
✅ 方式一:通过Hot Plug Detect(HPD)引脚
HDMI 标准接口中有一个专用引脚用于检测插入事件,叫做 HPD(Hot Plug Detect),它是第19号引脚。
原理:
-
HPD信号由接收端设备(如显示器/电视)提供。
-
当接收端准备就绪并且电缆已插入时,HPD 引脚会拉高(一般为 5V 电平)。
-
主机(发送端,如电脑或嵌入式设备)可以监测这个引脚的高电平,判断是否插入了显示器。
应用方式:
-
MCU 或 SoC 检测这个 GPIO 引脚的电平。
-
也可以设置中断触发,当 HPD 电平变化时通知系统处理。
✅ 方式二:通过 I2C 读取 DDC/EDID 数据
HDMI 中的 15号(SCL)和 16号(SDA)引脚用于 DDC 通信,用于读取显示器的 EDID(Extended Display Identification Data)。
原理:
-
若 HDMI 显示设备插入并供电,主机就可以通过 DDC 读取到 EDID。
-
如果读取失败,则可能没有连接设备或设备未上电。
缺点:
-
通常作为确认手段,用于验证是否连接的是有效显示设备。
-
不如 HPD 检测直接且实时。
5V的HDMI电压来之后,HDMI_RX_DET引脚电平会被拉低:
HDMI接口的引脚定义:
HDMI的19号pin是一个热插拔检测pin。协议通过这根线进行检测是否热插拔。
HDMI接口通过EDID(Extended Display Identification Data,扩展显示标识数据)来获取显示设备的详细信息,确保正确的信号传输和显示。EDID是显示器的身份证,其中包含有关显示器及其性能的参数,例如供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等。 (EDID具体可以参考兄弟篇 blog.csdn.net/essencelite/article/details/138427780)
当信号源成功连接到显示器时,显示器会将HPD(Hot Plug Detect,热插拔检测)电压拉高,表示连接成功。HPD电压的变化可以触发显示器的自动配置,以适应所连接的信号源的分辨率和其他显示设置。
在连接成功后,I2C进行通信。通过SDA(Serial Data Line,串行数据线)和SCL(Serial Clock Line,串行时钟线)两条数据线与显示器进行通信,以请求读取显示器的EDID信息。
EDID信息结构:
EDID由128个字节组成:
0-7字节:头信息,8个字节,由00 FF FF FF FF FF FF 00组成
8-9字节:厂商ID
10-11字节:产品ID
12-15字节:32-bit序列号
16-17字节:制造日期
18-19字节:EDID版本
20-24字节:显示器的基本信息
25-34字节:显示器的颜色特征
35-37字节:显示器的基本时序,定时,分辨率
38-53字节:显示器的标准时序及定时
54-125字节:显示器的详细时序及定时
126字节:扩展标志位
127字节:求和验证值
参考:https://blog.csdn.net/essencelite/article/details/139051666