工具/软件: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
