设置: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%的确定性。