Signed-off-by: Karl Osterseher <karli_o@gmx.at>
This commit is contained in:
Karl Osterseher
2025-01-20 21:54:13 +01:00
Unverified
parent 86958463f6
commit d1bdd3cfe8

View File

@@ -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, &reg);
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;
}