@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user