This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DIX4192-Q1:用于通过端口A传输解码的SPDIF数据的编程序列

Guru**** 2343770 points
Other Parts Discussed in Thread: DIX4192-Q1, TLV320ADC3101
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/600211/dix4192-q1-programming-sequence-for-transfer-decoded-spdif-data-through-port-a

部件号:DIX4192-Q1
主题中讨论的其他部件: AM5728TLV320ADC3101

我正在尝试通过SPI协议使用Linux用户空间应用程序对DIX4192-Q1进行编程。 音频数据通过以下元素提供给该解码器:

麦克风-> TLV320ADC3101 -> DIX4192-Q1 (数据流编码为SPDIF)->  DIX4192-Q1 (来自SPDIF的数据流解码)-> Sitara Sitam5728处理器。

音频流采样为LRCLK=4.8万 Hz和BCLK=3.072MHz。 参考时钟来自RXCKI = 24.576MHz。

我正在按下一个序列对其进行编程(其中“w”表示写入,接下来的两个数字分别是以十六进制数字格式表示的reg addr和new reg值):

/*重置并关闭所有模块*/
w 0x7f 0x00
w 0x01 0x80
w 0x01 0x00

/* DIR configure */
w 0x0d 0x00
w 0x0E 0x05

/*设置端口A */
w 0x03 0x69
w 0x04 0x0B

/*设置PLL1*/
w 0x0F 0x22
w 0x10 0x00
w 0x11 0x00

/*取消端口A静音并打开所有模块的电源,端口B和DIT */除外
w 0x03 0x29
w 0x01 0x32

编程后,我可以在示波器上看到正确的LRCLK和BCLK,DIX输出。 但是没有任何数据,也没有任何输出。
但当我首先通过绕过PLL2分频器(将0x01值写入0x0E寄存器)对其进行编程时,数据流输出和时钟不正确。 然后,在更改了所需的除法器值后,DIX输出上的数据和时钟会得到预期结果。

通过Linux用户空间应用程序对其进行编程是一种非常奇怪和不舒服的方式,因为在这种情况下,我需要绕过除法器对DIX进行编程,然后通过arecord发送数据流,写入所需的除法器,并在每次开始录制时中止aplay。
我应该做什么来避免此步骤,并在单个编程序列后使系统正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 ,Ilya,

    我已请我的同事查看您的问题,他应该能够很快回复您。  

    此致,

     -Diego Mel é ndez López ñ a
      音频应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复,选择RXCKI恢复LRCLK并在端口A设置中设置diver=512,即可解决问题。