TI中文支持网
TI专业的中文技术问题搜集分享网站

DIX4192: Problems sending and receiving user data through SPDIF

Part Number:DIX4192

DIX4192 uses SPDIF's STATE bit to send and receive user data. Currently, data can be transmitted through SPDIF, but data cannot be received. Use oscilloscope capture can see the user data in STATE bit.

Configure GPO3 as RX BLOCK START,GPO2 as RX INT, and GPO1 as TX INT. Configure the corresponding register.

Open the interrupt of RBTI, receive the block start signal, set RXBTD to 1 after 2ms delay, wait for the interrupt of RBTI, read the user data and status register after entering. But now this RBTI is consistently low.

Amy Luo:

您好,

这里是中文论坛,您可以使用中文发帖;

你是否验证了寄存器可以正确读写?即写入后可以正确读出写入值?

配置的GPO 有 interrupt flag吗?你读取Receiver status 这三个寄存器分别是什么值?

,

guishan ran:

寄存器能够正常读写;

GPO3配置成RX块开始中断,GPO1配置成TX中断(打开RBTI中断);

RX块开始中断触发0.2ms后,设置TX快开始信号,在2ms后从RX状态寄存器中读出前12字节的数据(设置了相应的寄存器位);

当TX中断RBTI中断触发,向TX状态寄存器中读出数据(设置了相应的寄存器位);

目前遇到的问题是,主控制板发送的数据能够收到,DIX4192发送的数据,主控制板偶尔能够收到,这个是什么原因导致的?

,

guishan ran:

寄存器能够正常读写;

GPO3配置成RX块开始中断,GPO1配置成TX中断(打开RBTI中断);

RX块开始中断触发0.2ms后,设置TX快开始信号,在2ms后从RX状态寄存器中读出前12字节的数据(设置了相应的寄存器位);

当TX中断RBTI中断触发,向TX状态寄存器中读出数据(设置了相应的寄存器位);

目前遇到的问题是,主控制板发送的数据能够收到,DIX4192发送的数据,主控制板偶尔能够收到,这个是什么原因导致的?

,

guishan ran:

有没有可能是块开始信号的问题?,是按照这个置的发送块开始,

,

Amy Luo:

为更加有效地解决您的问题,我已将您的问题发布在E2E英文技术论坛上,请资深的英文论坛工程师为您提供帮助。帖子链接如下,您也可以关注帖子,以方便查看或追问后续疑问。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1236494/dix4192-problems-sending-and-receiving-user-data-through-spdif

,

Amy Luo:

应该是块开始时序存在问题,因为IC中的许多问题都与时序有关。

您可以附上时钟和DIT块开始时序图吗?以查看是否有问题

,

Amy Luo:

您的问题解决了没有,如果还没有请附上时钟和DIT块开始时序图以查看是否有问题

,

guishan ran:

还没有解决,不好意思,这么长时间才回复,发现板子有点问题,重新layout了,发现问题还是存在;

我将两个板子一个设置成主,另一个设置成从,LOCK脚接了一个LED灯,指示LOCk状态,发现主的LED显示不稳定,从的LED常亮的状态.

将MBTI中断打开,GPIO1设置成TX INT,下面是抓取的时序图

下面是第一个绿色框放大的时序,中间丢失一个TX INT触发

第二个绿色框放大的时序,中间丢失两个TX INT触发

我的TX BLOCK START放在了RX START BLOCK中断里面,下面是TX BLOCK START 处理

while(1) { switch(state) { case 0: if(TX_SYNC_Get()==1) { state=1; count=0; } else { count++; if(count>100000) { TX_BLS_Clear(); state=0; count=0; return; } } break; case 1: if(TX_SYNC_Get()==0) { state=2; TX_BLS_Set(); //TX_BLS_Clear(); count=0; } else { count++; if(count>100000) { TX_BLS_Clear(); state=0; count=0; return; } } break; case 2: if(TX_SYNC_Get()==1) { state=3; count=0; } else { count++; if(count>100000) { TX_BLS_Clear(); state=0; count=0; return; } } break; case 3: if(TX_SYNC_Get()==0) { TX_BLS_Clear(); state=0; count=0; return; } else { count++; if(count>100000) { TX_BLS_Clear(); state=0; count=0; return; } } break; default: break; } } }

麻烦帮忙看一下,是哪里的问题,怎么处理,谢谢.

,

guishan ran:

在补充一下,如果在RX BLOCK START中断中把TX BLOCK START屏蔽了,主端的LOCK 指示LED便能稳定

,

Amy Luo:

如果TX BLOCK START在RX BLOCK START中断期间被屏蔽,主端的LOCK指示灯LED便能稳定,这看起来设备是正常的。 另外,查看您附的图,发送到设备的指令中的某个内容可能导致了该问题。

由于我不确定所有这些状态和情况是什么意思,为了调试,我会对所有其他情况重复只改变一个情况,以看看问题是否与特定情况的指令有关。这需要多尝试几次,以查看其中一个案例中的特定指令是否导致临时中止

这种锁定输出仅在AES3解码器和PLL2都指示锁定状态时才处于有效状态。如果上面没有中断指令,请检查AES3解码器和PLL2可能未处于锁定状态的原因。

您可以检查的几个寄存器:Register 02: Global Interrupt Status (Read-Only) Field Descriptions

Register 11: Receiver PLL1 Configuration Register 3 Field Descriptions

这也请参见Figure 17. DIR Channel Status and User Data Serial Output Format Through the GPO Pin.

赞(0)
未经允许不得转载:TI中文支持网 » DIX4192: Problems sending and receiving user data through SPDIF
分享到: 更多 (0)