Просмотр исходного кода

adc: fix adc invalid data issue by update adc_reset

Armando 5 лет назад
Родитель
Сommit
2b737c1927

+ 4 - 2
components/driver/esp32c3/adc.c

@@ -293,11 +293,13 @@ esp_err_t adc_digi_start(void)
 
     //enable in suc eof intr
     adc_hal_digi_ena_intr(&s_adc_digi_ctx->hal_dma, &s_adc_digi_ctx->hal_dma_config, IN_SUC_EOF_BIT);
-    //start DMA
-    adc_hal_digi_rxdma_start(&s_adc_digi_ctx->hal_dma, &s_adc_digi_ctx->hal_dma_config);
+
     //start ADC
     adc_hal_digi_start(&s_adc_digi_ctx->hal_dma, &s_adc_digi_ctx->hal_dma_config);
 
+    //start DMA
+    adc_hal_digi_rxdma_start(&s_adc_digi_ctx->hal_dma, &s_adc_digi_ctx->hal_dma_config);
+
     return ESP_OK;
 }
 

+ 2 - 0
components/hal/adc_hal.c

@@ -109,6 +109,8 @@ void adc_hal_digi_start(adc_dma_hal_context_t *adc_dma_ctx, adc_dma_hal_config_t
     adc_ll_digi_dma_enable();
     //enable sar adc timer
     adc_ll_digi_trigger_enable();
+    //reset the adc state
+    adc_ll_digi_reset();
 }
 
 void adc_hal_digi_stop(adc_dma_hal_context_t *adc_dma_ctx, adc_dma_hal_config_t *dma_config)

+ 1 - 1
examples/peripherals/adc/adc_dma/main/adc_dma_example_main.c

@@ -121,7 +121,7 @@ static void single_read(void *arg)
     }
 }
 
-void app_main()
+void app_main(void)
 {
     single_read(NULL);
     continuous_read(NULL);