HDMI状态检测——学习笔记

来源:互联网 发布:怎样用手机制作软件 编辑:程序博客网 时间:2024/06/14 19:02

以前没研究过HDMI接口。因业务逻辑需要,被要求检测LCD屏是否连接。趁着这个机会,学习一下HDMI接口的相关知识,同时,对HDMI的状态检测方法总一个整理。

Android系统(4.4以上版本)也提供了一个switch模块用于检测GPIO状态、耳机和HDMI的插拔。某些CPU(比如我们使用的硬件平台是瑞星微的RK3288)的datasheet提供了HDMI热插拔的检测方法。

本文先罗列四种HDMI接口的引脚定义,再分析HDMI热插拔的硬件原理;然后分析使用switch模块检测HDMI状态的方法;最后顺便提一下RK3288的官方HDMI热插拔检测方法。

1.HDMI接口知识

高清晰度多媒体接口(英文:High Definition MultimediaInterface,HDMI)是一种数字化视频/音频接口技术,是适合影像传输的专用型数字化接口,其可同时传送音频和影像信号,最高数据传输速度为18Gbps(2.0版)。

接口定义:

Fig.1接口引脚定义对照表

2.HDMI状态检测的硬件原理

如Fig.2(来自参考文献[1])所示,当插上HDMI接口时,主机会对显示器的DDC(display data channel)提供5V电压;这个电压经18脚、显示器,再从19脚返回主机;三极管Q1导通,使得HPD脚检测到高电平(大于2V),此时,则认为显示器已连接。若HPD脚检测到低电平(小于0.8V)则认为显示未连接。

Fig.2 HPD信号接线图(主机侧)

3.基于switch模块的HDMI状态检测

Android的switch模块是一个用于检测一些开关量(比如耳机插入、USB设备插入)的驱动。默认地,在系统中它包含两部分:switch_class和switch_gpio。前者是作为一个module来实现的,可用于动态加载。后者则是基于switch_class的一个具体的针对gpio的switch设备。源码位置分别是:/drivers/switch/switch_class.c和/drivers/switch/switch_gpio.c。

源码分析请看参考文献[2]。

要实现HDMI的状态检测,则需要仿照switch_gpio.c,写出一个基于switch_class的针对HDMI的驱动。参考文献[3]给出了一个范例。(笔者还没来得及测试和调试。)

4.RK3288的HDMI热插拔检测

RK3288在其官方手册中提供了HDMI的状态检测方法。原文如Fig.3所示。

Fig.3 RK3288 Hot Plug Detection

5.参考文献

[1]http://www.360doc.com/content/13/0125/11/329103_262297514.shtml

[2]http://blog.csdn.net/baimingyong007/article/details/8448547

[3]http://blog.csdn.net/liujun502589075/article/details/38160717

0 0
原创粉丝点击