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.

[参考译文] Linux/PCM1774:配置 PCM1774、以便通过 I2S 音频接口与 DRA74x J6处理器连接

Guru**** 2468560 points
Other Parts Discussed in Thread: PCM1774

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/788643/linux-pcm1774-configuring-pcm1774-for-connection-with-dra74x-j6-processor-over-i2s-audio-interface

器件型号:PCM1774

工具/软件:Linux

您好!

在我们的系统中、J6处理器连接到 PCM1774 DAC 芯片。 J6和 PCM1774芯片之间的通信通过两个通道:

。 I2C

。  I2S

 I2C 用于配置 DAC 芯片。  I2S 连接到 J6处理器中的 McASP2子系统。 Linux 软件堆栈如下所示:

多媒体应用程序-> ALSA ->驱动程序-> PCM1774

要测试整个堆栈、我使用的是这条非常简单的命令:

 扬声器测试-C2 -t wav

但是、任何左右扬声器上都没有声音。 为了查看硬件上的情况、我将示波器连接到 PCM1774的引脚以及 TPA6211差分音频功率放大器。 当我运行扬声器测试应用时、我看到 PCM1774的 I2S 输入定期提供新数据。  但是、它在任何左声道或右声道上的输出都具有非常弱的信号(大约毫伏)。 此外、连接到扬声器的差分音频放大器的差分输出具有恒定电压。 在 PCM1774内部、没有任何机制来生成出现在输出上的测试图形(如正弦波)、作为一个尝试、我将一个外部函数发生器(一个1V P 至 P 的脉冲波形)连接到了芯片的模拟输入(麦克风)。 我使用以下脚本配置了片上的内部开关和多路复用器、现在我可以听到两个扬声器上的脉冲。 我的配置脚本使用 I2C 工具与 PCM1774通信、如下所示(PCM1774位于 I2C 总线0的地址0x46):

########################################

# Config PCM1774 (配置 PCM1774)

########################################

回显"写入..."

# PCM1774_SYS_RESET
i2cset -f -y 0 0x46 0x55 0x80 b
# PCM1774_VOL_HPA_L
i2cset -f -y 0 0x46 0x40 0x3f b
# PCM1774_VOL_HPA_R
i2cset -f -y 0 0x46 0x41 0x3f b
# PCM1774_DAC_MUTE_L
i2cset -f -y 0 0x46 0x44 0x27 b
# PCM1774_DAC_MUTE_R
i2cset -f -y 0 0x46 0x45 0x27 b
# PCM1774_DAC_SAMPLE
i2cset -f -y 0 0x46 0x46 0x0d b
# PCM1774_DAC_PWR
i2cset -f -y 0 0x46 0x49 0xec b
# PCM1774_CLK_RATE
i2cset -f -y 0 0x46 0x56 0x21 b
# PCM1774_AMIX_PWR
i2cset -f -y 0 0x46 0x48 0x03 b
# PCM1774_AMIX_SELECT
i2cset -f -y 0 0x46 0x58 0x33 b
# PCM1774_DAC_PWR
i2cset -f -y 0 0x46 0x49 0xec b
# PCM1774_AOUT_CFG
i2cset -f -y 0 0x46 0x4a 0x01 b
# PCM1774_PG_PWR
i2cset -f -y 0 0x46 0x52 0x30 b
# PCM1774_AIN_SELECT
i2cset -f -y 0 0x46 0x57 0x11 b
# PCM1774_AIN_GAIN
i2cset -f -y 0 0x46 0x59 0x77 b
# PCM1774_MASTER_MODE
i2cset -f -y 0 0x46 0x54 0x01 b
# PCM1774_DAC_MUTE_L
i2cset -f -y 0 0x46 0x44 0x3F b
# PCM1774_DAC_MUTE_R
i2cset -f -y 0 0x46 0x45 0x3F b

回显"读..."
回波"PCM1774_SYS_REST"
i2cget -f -y 0 0x46 0x55
回波"PCM1774_VOL_HPA_L"
i2cget -f -y 0 0x46 0x40
回波"PCM1774_VOL_HPA_R"
i2cget -f -y 0 0x46 0x41
回波"PCM1774_DAC_MUTE_L"
i2cget -f -y 0 0x46 0x44
回波"PCM1774_DAC_MUTE_R"
i2cget -f -y 0 0x46 0x45
回波"PCM1774_DAC_SAMPLE"
i2cget -f -y 0 0x46 0x46
回波"PCM1774_DAC_PWR"
i2cget -f -y 0 0x46 0x49
回波"PCM1774_CLK_RATE "
i2cget -f -y 0 0x46 0x56
回波"PCM1774_AMIX_PWR"
i2cget -f -y 0 0x46 0x48
回波"PCM1774_AMIX_SELECT"
i2cget -f -y 0 0x46 0x58
回波"PCM1774_DAC_PWR"
i2cget -f -y 0 0x46 0x49
回波"PCM1774_AOUT_CFG"
i2cget -f -y 0 0x46 0x4a
回波"PCM1774_PG_PWR"
i2cget -f -y 0 0x46 0x52
ECHO "PCM1774_AIN_SELECT"
i2cget -f -y 0 0x46 0x57
回波"PCM1774_MASTER_MODE"
i2cget -f -y 0 0x46 0x54
回波"PCM1774_DAC_MUTE_L"
i2cget -f -y 0 0x46 0x44
回波"PCM1774_DAC_MUTE_R"
i2cget -f -y 0 0x46 0x45

由于我可以听到两个扬声器上注入 AIN1L 和 AIN1R 的输入脉冲、因此看起来内部级的所有配置都是如此、例如 PG、SWS、MXL、MXR、HPL、 并且通过 I2C 的 HPR 成功并且芯片已正确加电。 根据这一证据 、我想 I2S 音频接口无法正常工作、无法为 DAC 提供处理器的新数据。 随附的是我的示波器的屏幕截图、其中展示了 I2C 通信的波形图(黄色:LRCK、绿色:DIN、蓝色:BCK、红色:HPO/LO)。 PCM1774的输入系统时钟具有11.2896MHz 时钟。 J6处理器以正确的方式向 PCM1774发送输入数字数据、这是不是吗?

您是否对我如何解决此问题有任何想法? 如何进一步调试音频接口?

谢谢。

Armin

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

    您能否共享系统原理图? 此外、您似乎要将数字衰减设置为-24dB、这是正确的吗?
    # PCM1774_DAC_MUTE_L
    i2cset -f -y 0 0x46 0x44 0x27 b
    # PCM1774_DAC_MUTE_R
    i2cset -f -y 0 0x46 0x45 0x27 b

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

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

    尊敬的 Paul:

    非常感谢 您的认真考虑。 实际上、我注意到问题是在硬件上。 我用另一个硬件平台替换了我的硬件平台、现在我可以听到左右扬声器发出的声音。
    非常感谢您的支持。
    谢谢、此致、
    Armin