diff --git a/drivers/adc/adc_ambiq.c b/drivers/adc/adc_ambiq.c index 07406707069..ce8ee479d16 100644 --- a/drivers/adc/adc_ambiq.c +++ b/drivers/adc/adc_ambiq.c @@ -119,6 +119,7 @@ static void adc_ambiq_isr(const struct device *dev) &Sample); *data->buffer++ = Sample.ui32Sample; } + am_hal_adc_disable(data->adcHandle); adc_context_on_sampling_done(&data->ctx, dev); } } @@ -185,9 +186,6 @@ static int adc_ambiq_start_read(const struct device *dev, const struct adc_seque } __ASSERT_NO_MSG(channels == 0); - /* Enable the ADC. */ - am_hal_adc_enable(data->adcHandle); - data->active_channels = active_channels; data->buffer = sequence->buffer; /* Start ADC conversion */ @@ -269,6 +267,8 @@ static void adc_context_start_sampling(struct adc_context *ctx) struct adc_ambiq_data *data = CONTAINER_OF(ctx, struct adc_ambiq_data, ctx); data->repeat_buffer = data->buffer; + /* Enable the ADC. */ + am_hal_adc_enable(data->adcHandle); /*Trigger the ADC*/ am_hal_adc_sw_trigger(data->adcHandle); }