Thread 中讨论的其他器件: PCM5102A
工具与软件:
您好!
我们正在尝试 使用 ESP-IDF 的 I2S 库将 TAS5828M 与 ESP32-S3集成。 为什么不能做到这一点、有什么原因吗?
我们在使用 I2C 命令设置芯片时遇到问题。 请查看我们使用的序列。
0x00、0x00 //更改页面
0x7F、0x00 //更改簿
0x00、0x00 //更改页面
0x01、0x11 //复位
<等待100ms >
0x01、0x00 //撤回复位
<等待100 ms >
0x03、0x18 // DSP 复位+静音+深度睡眠
<等待100 ms >
0x03、0x02 // HiZ 模式
<等待100 ms >
0x33、0x00 // I2S 格式和16位字大小
0x35、0x11 // L 和 R 通道有自己的数据
0x4C、0xFE // DIG_VOL 设置
0x54、0x1F //再次设置
0x03、0x03 //播放
ESP IDF 配置为48K 采样速率、16位字大小。 预期的 BCLK 为1.536MHz、并在示波器上对其进行验证。 48kHz 下的 LRCLK 也经过验证。
请参阅下面从 MCU 记录的寄存器。 音频通道寄存过流并在运行几秒钟后将芯片置于故障状态。 我们期望寄存器0x38的值为0x20 (十进制的32)、以便反映时钟速率、但芯片似乎检测到0x40 (十进制的64)。
E (6948) TAS5828M 寄存器0x00 0x00 0
E (6948) TAS5828M 寄存器0x01 0x00 0
E (6948) TAS5828M 寄存器0x02 0x00 0
E (6948) TAS5828M 寄存器0x03 0x03 3.
E (6958) TAS5828M 寄存器0x04 0x00 0
E (6968) TAS5828M 寄存器0x05 0x44 68
E (6968) TAS5828M 寄存器0x0F 0x00 0
E (6978) TAS5828M 寄存器0x28 0x00 0
E (6988) TAS5828M 寄存器0x29 0x7C 124
E (6988) TAS5828M 寄存器0x30 0x00 0
E (6998) TAS5828M 寄存器0x31 0x00 0
E (7008) TAS5828M 寄存器0x33 0x00 0
E (7008) TAS5828M 寄存器0x34 0x00 0
E (7018) TAS5828M 寄存器0x35 0x11 17
E (7018) TAS5828M 寄存器0x37 0x00 0
E (7028) TAS5828M 寄存器0x38 0x40 64
E (7038) TAS5828M 寄存器0x39 0x00 0
E (7038) TAS5828M 寄存器0x40 0x01 1
E (7048) TAS5828M 寄存器0x46 0x01 1.
E (7058) TAS5828M 寄存器0x4C 0xFE 254
E (7058) TAS5828M 寄存器0x4E 0x33 51
E (7068) TAS5828M 寄存器0x4F 0x30 48
E (7078) TAS5828M 寄存器0x50 0x00 0
E (7078) TAS5828M 寄存器0x51 0x55 85
E (7088) TAS5828M 寄存器0x53 0x00 0
E (7088) TAS5828M 寄存器0x54 0x1F 31.
E (7098) TAS5828M 寄存器0x5E 0x66 102
E (7108) TAS5828M 寄存器0x60 0x00 0
E (7108) TAS5828M 寄存器0x61 0x00 0
E (7118) TAS5828M 寄存器0x62 0x00 0
E (7128) TAS5828M 寄存器0x63 0x00 0
E (7128) TAS5828M 寄存器0x64 0x00 0
E (7138) TAS5828M 寄存器0x65 0x00 0
E (7148) TAS5828M 寄存器0x66 0x00 0
E (7148) TAS5828M 寄存器0x67 0x98 152
E (7158) TAS5828M 寄存器0x68 0x01 1
E (7158) TAS5828M 寄存器0x69 0x00 0
E (7168) TAS5828M 寄存器0x6A 0x00 0
E (7178) TAS5828M 寄存器0x6B 0x00 0
E (7178) TAS5828M 寄存器0x6C 0x00 0
E (7188) TAS5828M 寄存器0x6D 0xA0 160
E (7198) TAS5828M 寄存器0x6E 0x11 17
E (7198) TAS5828M 寄存器0x6f 0x24 36
E (7208) TAS5828M 寄存器0x70 0x01 1.
E (7218) TAS5828M 寄存器0x71 0x00 0
E (7218) TAS5828M 寄存器0x72 0x00 0
E (7228) TAS5828M 寄存器0x73 0x01 1.
E (7228) TAS5828M 寄存器0x74 0x00 0
E (7238) TAS5828M 寄存器0x75 0xF8 248
E (7248) TAS5828M 寄存器0x76 0x00 0
E (7248) TAS5828M 寄存器0x77 0x00 0
E (7258) TAS5828M 寄存器0x78 0x00 0
代码:
#define SAMPLE_RATE 48000
I2S_CHAN_CONFIG_t TX_CHAN_cfg = I2S_CHANNEL_DEFAULT_CONFIG (I2S_NUM_0、I2S_ROLE_MASTER);
esp_error_check (I2S_NEW_CHANNEL (&TX_CHAN_cfg、&TX_CHAN、NULL));
i2s_std_config_t tx_std_cfg ={
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG (SAMPLE_RATE)、
slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG (
I2S_DATA_BIT_WIDTH_16BIT、
I2S_SLOT_MODE_STEREO
)、
GPIO_cfg ={
.MCLK = STD_MCLK_IO1、//某些编解码器可能需要 MCLK 信号、此示例不需要
.bclk = STD_BCLK_IO1
.ws = STD_WS_IO1
.dout = STD_DOUT_IO1
.DIN = STD_DIN_IO1
.invert_FLAGS ={
.MCLK_INV = false、
.bclk_inv = false、
.ws_inv = false、
}、
}、
};
tx_std_cfg.clk_cfg.clk_src = I2S_CLK_SRC_PLL_160M;
tx_std_cfg.clk_cfg.MCLK_multiple = I2S_MCLK_multiple_1024;
tx_std_cfg.slot_cfg.slot_bit_width = i2s_slot_bit_width_16BIT;
esp_error_check (i2s_channel_init_std_mode (tx_chan、&tx_std_cfg));
esp_error_check (I2S_CHANNEL_ENABLE (TX_CHAN));