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.

[参考译文] PCM1681:通道输出映射似乎不正确

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1202073/pcm1681-channel-output-mapping-does-not-seem-to-be-correct

器件型号:PCM1681

设置:ESP32以双立体声 I2S 模式连接至 PCM1681 (即在 ESP32上使用两个 I2S 外设来提供四通道输出)。 ESP32正在以512x 的采样率通过 APLL 生成 MCLK。

这是我的初始寄存器配置:

#ifndef _PCM1681_REG_CFG_
#define _PCM1681_REG_CFG_

#ifdef __cplusplus
extern "C"
{
#endif

#define DAMS_BIT_OFFSET (0x80)
#define DEFAULT_ATTENUATION (0xFF) // 0 dB

    typedef struct
    {
        uint8_t address;
        uint8_t data;
    } pcm1681_cfg_reg_t;

    static const pcm1681_cfg_reg_t pcm1681_reg_defaults[] = {
        {0x01, DEFAULT_ATTENUATION},
        {0x02, DEFAULT_ATTENUATION},
        {0x03, DEFAULT_ATTENUATION},
        {0x04, DEFAULT_ATTENUATION},
        {0x05, DEFAULT_ATTENUATION},
        {0x06, DEFAULT_ATTENUATION},
        {0x07, 0x00},
        {0x08, 0x00},
        {0x09, 0x04}, /* format config; 4: I2S stereo 16-bit to 24-bit */
        {0x0A, 0x00},
        {0x0B, 0xff},
        {0x0C, 0x0f},
        {0x0D, DAMS_BIT_OFFSET}, // DAMS = 1
        {0x10, DEFAULT_ATTENUATION},
        {0x11, DEFAULT_ATTENUATION},
        {0x12, 0x00},
        {0x13, 0x00},
    };

#ifdef __cplusplus
}
#endif

#endif // _PCM1681_REG_CFG_

启动后、我接触的唯一寄存器是在关断时软静音、以避免弹出。

发送 DATA1 24位立体声 I2S 音频、DAC 似乎只是在 VOUT1和 VOUT2上输出正确通道

同样、DATA2立体声似乎只是在 VOUT3和 VOUT4上输出正确的通道

在我的应用程序中有一种测试模式、在每个通道上输出一个语音词(即有人录制了"one"、"two"、"three"和"four")、我只听到前面的扬声器和后面的扬声器分别输出"two"和"four"。

从数据表中可以看出、我希望分别在 VOUT1和 VOUT2上听到左右音频、VOUT3和 VOUT4也是如此。 基本上、我希望在测试运行时听到的数字与 VOUT 数字相同。

我做错了吗?

我将监听 I2S 数据、并再次检查是否不仅仅是意外地在两个时隙中发送了正确的通道、而且我非常确信该部件能够正常工作。 大概90%的确定性。

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

    您好、您能否确认 您是以 TDM 的形式发送数据  、还是您的输入已经独立于所使用的4个通道的输入? 从我读到的信息来看、这听起来像是 TDM、但请确认。

    请您将此信息与所有输入和时钟的屏幕截图一起发送。

    谢谢。

    Arash

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

    有一个原因、我只有90%的把握。 我的确在指示 ESP32仅向两个通道发送正确的通道数据(意外地、由于旧的已弃用驱动程序和不匹配的配置枚举)。 抱歉出现错误警报。

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

    很高兴听到问题已得到解决。

    谢谢。此致、

    Arash