DVI和HDMI的EDID设计小结

本文介绍了DVI和HDMI接口中EDID数据的存储和编写注意事项,包括选用24C02作为存储器,遵循EDID 1.3和CEA-861B协议,以及数据校验的重要性。对于HDMI设备,需要扩展128字节的CEA EDID数据,并提供了一段通过验证的EDID数据示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     最近接触了一下DVI高清数字接口这个东东,开始感觉没什么,因为只做简单的应用,不涉及深层编码那些研究。不过一直对它的EDID数据的存储感到一丝神秘,研究了一段时间之后,现在将一些注意事项归纳一下,也算是一个小小的经验吧,其实这东西根本没啥技术含量,只要按照规定的协议格式写入数据就OK了的。

  首先,在硬件方面一般是不会出什么问题的,这个我一开始还一直在怀疑,结果证明基本没必要。一般选用24C02作为EDID数据的存储器,连接也很简单,注意将三根地址线接地就可以了。选用24C02的原因是可以存256个字节的数据,刚好符合普通HDMI的需求,当然,如果是DVI设备的话只要128字节的容量就可以了。但这个不敢保证对以后一些扩展协议的支持了。

  硬件有了之后就是怎样将数据写入的问题了,其实这也不是什么问题,就按照通常的操作方法,通过IIC总线的操作方式写就OK。最主要的问题还是改写什么数据,在查阅了多篇相关文章之后,终于搞明白一个问题。对于HDM I设备, ED ID 的第一个128Byte必须是符合EDID1.3的数据结构, 第二个128Byte必须是符合EIA/CEA-861B的CEA ED ID时序扩展数据结构。

    这些字节的具体含义是很容易查到的,需要说明的是0x12, 0x13两个字节存储ED ID 的版本。例如, 0x12, 0x13 两个字节分别为″01h″″03h″, 代表当前为113版本。以及0x7E地址处的扩展数据的数量,如果是普通DVI设备则不需要扩展(对于目前的情况而言,以后可能需要扩展)。填入0x00即可,若是HDMI设备则要扩展一个数据块(128字节),就需要写成0x01。最后一位的校验和,是将这128个字的数加起来(不考虑进位)为零就行了。这个很重要,开始就是没注意这个问题,随便找了一个别人的模板数据写进去,一直调不通,后来自己验证一下,发现校验值不对,改过之后立即ok。

   对于HDMI设备就需要再扩展128字节的数据,具体情况也有很多资料说明,也是注意最后的校验值就行了。下面列出一组我调试通过的EDID数据:

             unsigned charCode_EDID[256]={0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0C,0xA1,0x00,0x00,0x00,0x00,0x00,0x00,
                                                                          0x00,0x0F,0x01,0x03,0x80,0x50,0x2D,0x78,0x0A,0x0D,0xC9,0xA0,0x57,0x47,0x98,0x27,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值