前几天做的fpga控制ad9889通过hdmi输出给电视/显示器的板子,被发现一个bug:在显示器或skyworth的电视上能够显示图像,在sharp及philips的电视上则不行。
板子一共2快,就叫A,B吧
之前其他项目积累过类似的经验:hdmi接口上有一个5v的供电pin,如果连接到板子的5v供电,则任何电视都可以正常工作,如果不连,或企图从显示器获取5v供电给hdmi芯片,如9889,则电视可能会无法显示图像。一般来说国产电视要求低一些,如果板子不给他5v,电视内部也能自己完成供电。国外电视大概是为了防止电视自己也供电,板子也有5v,可能会烧毁之类,不提供这个5v。
但是我检查了原理图,发现5v供过去了。
pcb上测量距离hdmi接插件最近的一个5v网络的过孔,正常,插到电视上也是5v,并没有被拉低,所以排除了电源供电不足或pcb设计错误的可能。
对比我这块板子的原理图和其他项目中用到hdmi芯片的部分,发现如下差异
我是用2.2k上拉ddc i2c(hdmi专用i2c)到3.3,其他项目用1.8上拉到5。
其他项目的hdmi.hpd脚通过47k接gnd,我没有。
全部照此改过来了。
还是不行。--1
拿着这个板子去找别人讨论问题,结果在人家的电视上居然显示正常。--2
回来测试我自己手头的另一块板,还是不行,插到他的电视上也是不行。--3
于是找猫画虎的改我手头这块板,修改hpd及ddci2c电路,仍然不行。。。
回想之前关于5v接法的经验,仔细观察了一下hdmi接插件,发现可能是松了,就换了个新的,重新焊了一下--果然好了。
反过头来检查,发现1的时候不行,是由于我用的是一款07年产的sharp电视,hdmi协议用的比较旧,我对与9889的寄存器配置可能比较简单,导致其不认。
2里用的是09年的sharp及新型号的philip
3里不行的原因是hdmi接插件松了,导致5v没供过去
最终问题解决之后,把ddci2c及hpd改了回去,发现还是好的。。。说明根本与其无关,之前一个板好一个板坏,只是由于5v供电问题,但是被迷惑了
用户377235 2012-12-29 21:44
对于Source端设备来说,需提供5V供电给sink设备(即电视或显示器),用于电视机待机关断电源时读取EDID以及拉高HPD,另外,你的DDC上拉电阻以及上拉电压都有问题,HDMI规范定义上拉电阻介于1.5K至2.0K之间,为了兼容DVI1.0规范,需上拉至5V供电。关于07年的Sharp总是不行,可能是因为其电视机不支持EDID读取,你需要量DDC看电视剧机没有EDID返回,如果读不到EDID,源端是无法输出正常的视频格式的(不过这一点可以通过软件一旦检测到HPD,即强制送出一个通用视频格式即可在电视机上正常显示,当然了,这么做是不符合HDMI规范以及兼容性测试规范的)。好好研究研究HDMI规范吧。
用户375620 2011-9-13 17:08