From d1bdd3cfe84fd63cac38e21eab0d48d9ec3821f6 Mon Sep 17 00:00:00 2001 From: Karl Osterseher Date: Mon, 20 Jan 2025 21:54:13 +0100 Subject: [PATCH] fix #101 Signed-off-by: Karl Osterseher --- components/audio_hal/driver/es8388/es8388.c | 42 +++------------------ 1 file changed, 5 insertions(+), 37 deletions(-) diff --git a/components/audio_hal/driver/es8388/es8388.c b/components/audio_hal/driver/es8388/es8388.c index 2795142..02c58e5 100644 --- a/components/audio_hal/driver/es8388/es8388.c +++ b/components/audio_hal/driver/es8388/es8388.c @@ -340,8 +340,13 @@ esp_err_t es8388_init(audio_hal_codec_config_t *cfg) { ES8388_ADDR, ES8388_DACCONTROL24, 0x1E); // Set L1 R1 L2 R2 volume. 0x00: -30dB, 0x1E: 0dB, 0x21: 3dB res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL25, 0x1E); +#if defined(CONFIG_ESP_AI_THINKER_ES8388_BOARD) res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL26, 0x1E); res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL27, 0x1E); +#else + res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL26, 0x00); + res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL27, 0x00); +#endif res |= es8388_set_adc_dac_volume(ES_MODULE_DAC, 0, 0); // 0db int tmp = 0; if (AUDIO_HAL_DAC_OUTPUT_LINE2 == cfg->dac_output) { @@ -438,41 +443,18 @@ esp_err_t es8388_config_fmt(es_module_t mode, es_i2s_fmt_t fmt) { esp_err_t es8388_set_voice_volume(int volume) { esp_err_t res = ESP_OK; uint8_t reg = 0; - reg = audio_codec_get_dac_reg_value(dac_vol_handle, volume); res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL5, reg); res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL4, reg); ESP_LOGD(ES_TAG, "Set volume:%.2d reg_value:0x%.2x dB:%.1f", (int)dac_vol_handle->user_volume, reg, audio_codec_cal_dac_volume(dac_vol_handle)); - - /* Audio Settings can be checked here: - * https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf - * - * ES8388_DACCONTROL4 & ES8388_DACCONTROL5 - * 0 = 0dB - * 192 = -96dB - * - * ES8388_DACCONTROL24 - ES8388_DACCONTROL27 - * 0 = -45dB - * 33 = 4.5dB - */ - - // restrict range from 0-46 instead of 0-192 - // int inv_volume = -0.46 * volume + 46; - // if (volume == 0) { - // // if volume is 0, set to -96dB - // inv_volume = 192; - // } - // res = es_write_reg (ES8388_ADDR, ES8388_DACCONTROL5, inv_volume); - // res |= es_write_reg (ES8388_ADDR, ES8388_DACCONTROL4, inv_volume); return res; } esp_err_t es8388_get_voice_volume(int *volume) { esp_err_t res = ESP_OK; uint8_t reg = 0; - res = es_read_reg(ES8388_DACCONTROL4, ®); if (res == ESP_FAIL) { *volume = 0; @@ -485,20 +467,6 @@ esp_err_t es8388_get_voice_volume(int *volume) { } } ESP_LOGD(ES_TAG, "Get volume:%.2d reg_value:0x%.2x", *volume, reg); - - // else - // { - // // 0 = 0dB, 192 = -96dB - // // max is 0, min is 46 - // // interpolate to 0-100 - // if (reg == 192) { - // *volume = 0; - // } - // else { - // *volume = -(50/23) * reg + 100; - // } - // } - return res; }