Skip to content

Commit

Permalink
add:8311支持pa控制
Browse files Browse the repository at this point in the history
  • Loading branch information
Dozingfiretruck committed Jan 25, 2024
1 parent 0dc59a5 commit b056983
Showing 1 changed file with 18 additions and 12 deletions.
30 changes: 18 additions & 12 deletions components/multimedia/luat_audio_es8311.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
#define ES8311_MAX_REGISTER 0xFF

static uint8_t es8311_dacvol_bak,es8311_adcvol_bak;

static luat_rtos_timer_t pa_delay_timer;
typedef struct{
uint32_t mclk; // mclk frequency
uint32_t rate; // sample rate
Expand Down Expand Up @@ -419,13 +419,18 @@ static int es8311_codec_channels(luat_audio_codec_conf_t* conf,uint8_t channels)
return 0;
}

static LUAT_RT_RET_TYPE pa_delay_timer_cb(LUAT_RT_CB_PARAM){
luat_audio_codec_conf_t* conf = (luat_audio_codec_conf_t*)param;
luat_gpio_set(conf->pa_pin, conf->pa_on_level);
}

#define IS_DMIC 0
static int es8311_codec_init(luat_audio_codec_conf_t* conf,uint8_t mode){
uint8_t temp1 = 0, temp2 = 0, temp3 = 0;
if (conf->pa_pin != LUAT_CODEC_PA_NONE){
luat_gpio_mode(conf->pa_pin, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, !conf->pa_on_level);
luat_gpio_set(conf->pa_pin, !conf->pa_on_level);
luat_rtos_timer_create(&pa_delay_timer);
}
temp1 = es8311_read_reg(conf,ES8311_CHD1_REGFD);
temp2 = es8311_read_reg(conf,ES8311_CHD2_REGFE);
Expand Down Expand Up @@ -504,21 +509,22 @@ static int es8311_codec_init(luat_audio_codec_conf_t* conf,uint8_t mode){
}

static int es8311_codec_deinit(luat_audio_codec_conf_t* conf){

if (conf->pa_pin != LUAT_CODEC_PA_NONE){
luat_gpio_close(conf->pa_pin);
}
return 0;
}

static void es8311_codec_pa(luat_audio_codec_conf_t* conf,uint8_t on){
// if (conf->pa_pin == LUAT_CODEC_PA_NONE) return;
// if (on){
// if (conf->dummy_time_len)
// luat_rtos_task_sleep(conf->dummy_time_len);
// luat_gpio_set(conf->pa_pin, conf->pa_on_level);
// if (conf->pa_delay_time)
// luat_rtos_task_sleep(conf->pa_delay_time);
// }else{
// luat_gpio_set(conf->pa_pin, !conf->pa_on_level);
// }
if (conf->pa_pin == LUAT_CODEC_PA_NONE) return;
if (on){
if (conf->after_sleep_ready_time)
luat_rtos_timer_start(pa_delay_timer,conf->after_sleep_ready_time,0,pa_delay_timer_cb,(void*)conf);
else
luat_gpio_set(conf->pa_pin, conf->pa_on_level);
}else{
luat_gpio_set(conf->pa_pin, !conf->pa_on_level);
}
}

static int es8311_codec_control(luat_audio_codec_conf_t* conf,luat_audio_codec_ctl_t cmd,uint32_t data){
Expand Down

0 comments on commit b056983

Please sign in to comment.