ADI 技术
直播中

樊忠甫

7年用户 217经验值
私信 关注
[问答]

adv7441 HDMI/DVI PORTB不能识别信号

专家好:
        我使用adv7441A 采集DVI/HDMI信号。PORTA采集DVI信号,PORTB采集HDMI信号

        当使用porta采集DVI信号时,可以正常识别并采集到信号。但是使用portb采集HDMI信号时,portb无法探测到信号。
        我使用的是内部共用edid模式(ksv 0x73:0x06)。但是portb无法探测到hdmi信号。但是我将hdmi信号接显示器,可以正常显示。

         hw文档提到配置port b的edid需要配置spa_location、spa_portb,请问spa_location、spa_portb如何配置???
          请专家帮忙讨论下,port b无法探测hdmi信号的原因??

         谢谢!!!!!!

回帖(4)

卢兰凤

2019-3-11 15:34:09
先分析EDID里物理地址在哪里放着, 比如放在0X91等, 然后就把0X91写到SPA LOCATION里去, 还要把具体的PORT B的物理地址写到相应的寄存器上去;
原始的EDID是给PORT A的, PORT B与PORT EDID的不同之处在于物理地址的值不一样(物理地址在EDID MAP中所放的位置是一样的),还有BLOCK1 的CHECKSUM,这些您都需要检查一下。
举报

樊忠甫

2019-3-11 15:49:23
引用: yweyerwq 发表于 2019-3-11 17:31
先分析EDID里物理地址在哪里放着, 比如放在0X91等, 然后就把0X91写到SPA LOCATION里去, 还要把具体的PORT B的物理地址写到相应的寄存器上去;
原始的EDID是给PORT A的, PORT B与PORT EDID的不同之处在于物理地址的值不一样(物理地址在EDID MAP中所放的位置是一样的),还有BLOCK1 的CHECKSUM,这些您都需要检查一下。 ...

您好!
        PORTB的物理地址如何确定,我现在设置的spa_location(0x72):0x82,spa_portb(0x70):0x01.
        但是还是无法探测到信号,将HDMI信号转换为DVI信号,接porta,接口a可以采集信号。
        以下是我的配置,专家帮忙看下,为什么端口B无法探测信号??谢谢~~~
        
__raw_writeb(0x3,HPDCT);//DISABLE HDMI/DVI HPD
write_add_hdmi(0x1,0x68);//disable port a/b clock
write_add_ksv(0x73,0x0);//disable edida/edidb
 
write_add_hdmi(0x0,0x1);//选择端口b
write_add_hdmi(0x41,0x50);
write_add_hdmi(0x15,0x0);//关闭audio
write_add_hdmi(0x1C,0x0);//关闭audio
 
write_add_ksv(0x70,0x1);//spa_portb
write_add_ksv(0x71,0x0);//
write_add_ksv(0x72,0x82);//spa_location
 
 
write_add_edid//写edid 128字节
{
  0x00  ,0xFF  ,0xFF  ,0xFF  ,0xFF  ,0xFF  ,0xFF  ,0x00  ,0x41  ,0x0C,
                     0xCF  ,0x08  ,0x04  ,0x00  ,0x00  ,0x00  ,0x0A  ,0x17  ,0x01  ,0x03,
                     0x80  ,0x3C  ,0x22  ,0x78  ,0x2A  ,0x2C  ,0xC5  ,0xA5  ,0x55  ,0x54,
                     0xA1  ,0x27  ,0x0C  ,0x50  ,0x54  ,0xB1  ,0x08  ,0x00  ,0xD1  ,0xC0,
                     0xB3  ,0x00  ,0x95  ,0x00  ,0x81  ,0x80  ,0x81  ,0xC0  ,0x01  ,0x01,
                     0x01  ,0x01  ,0x01  ,0x01  ,0x02  ,0x3A  ,0x80  ,0x18  ,0x71  ,0x38,
                     0x2D  ,0x40  ,0x58  ,0x2C  ,0x45  ,0x00  ,0x56  ,0x50  ,0x21  ,0x00,
                     0x00  ,0x1E  ,0x00  ,0x00  ,0x00  ,0xFF  ,0x00  ,0x41  ,0x55  ,0x34,
                     0x31  ,0x33  ,0x31  ,0x30  ,0x30  ,0x30  ,0x30  ,0x30  ,0x30  ,0x34,
                     0x00  ,0x00  ,0x00  ,0xFC  ,0x00  ,0x50  ,0x48  ,0x4C  ,0x20  ,0x43,
                     0x32  ,0x37  ,0x31  ,0x50  ,0x34  ,0x0A  ,0x20  ,0x20  ,0x00  ,0x00,
                     0x00  ,0xFD  ,0x00  ,0x38  ,0x47  ,0x1E  ,0x53  ,0x11  ,0x00  ,0x0A,
                     0x20  ,0x20  ,0x20  ,0x20  ,0x20  ,0x20  ,0x01  ,0xEA
}
 
write_add_ksv(0x73,0x04);//ENable edidb
write_add_hdmi(0x1,0x48);//ENable port b clock
__raw_writeb(0x1,HPDCT);//ENABLE HDMI HPD
 
write_add(0x3,0x9);
write_add(0x1D,0x40);
write_add1(0x9a,0xff);
write_add(0x68,0xF0);//ypbpr out
write_add(0x6B,0xF3);
write_add(0xBA,0xA0);//Enable HDMI and Analog in
write_add(0x73,0xCD);//
write_add(0x74,0xC4);//
write_add(0x75,0x01);//
write_add(0x76,0x00);//
write_add(0x7B,0x2f);//Outputs progressive timing
write_add(0x81,0xD0);//Enable GR_AV_BL_EN
 
write_add2(0xF0,0x10);
write_add2(0xF1,0x0F);
write_add2(0xF4,0x20);
举报

樊忠甫

2019-3-11 16:02:06
引用: yweyerwq 发表于 2019-3-11 17:31
先分析EDID里物理地址在哪里放着, 比如放在0X91等, 然后就把0X91写到SPA LOCATION里去, 还要把具体的PORT B的物理地址写到相应的寄存器上去;
原始的EDID是给PORT A的, PORT B与PORT EDID的不同之处在于物理地址的值不一样(物理地址在EDID MAP中所放的位置是一样的),还有BLOCK1 的CHECKSUM,这些您都需要检查一下。 ...

请专家帮忙分析下,谢谢~
举报

卢兰凤

2019-3-11 16:11:55
引用: aixi162852 发表于 2019-3-11 17:59
请专家帮忙分析下,谢谢~

你的HDMI源是什么? 从现在现象看十分可能你的HDMI源根本就没有送出信号. 你可以利用HDMI Map, 0x04[2]看看有没有clock送进来. 利用HDMI Map, 0x07[4]可以检测HDMI有没有锁住.
另外HDMI需要256的EDID, 而不是128的.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分