diff --git a/arch/arm/src/stm32/stm32_adc.c b/arch/arm/src/stm32/stm32_adc.c index b6a26d06378..3b541dde8a9 100644 --- a/arch/arm/src/stm32/stm32_adc.c +++ b/arch/arm/src/stm32/stm32_adc.c @@ -1667,6 +1667,7 @@ static void adc_dmaconvcallback(DMA_HANDLE handle, uint8_t isr, FAR void *arg) } } } + /* Restart DMA for the next conversion series */ adc_modifyreg(priv, STM32_ADC_DMAREG_OFFSET, ADC_DMAREG_DMA, 0); diff --git a/arch/arm/src/stm32f7/stm32_adc.c b/arch/arm/src/stm32f7/stm32_adc.c index bc335bd5c62..14e0c58f922 100644 --- a/arch/arm/src/stm32f7/stm32_adc.c +++ b/arch/arm/src/stm32f7/stm32_adc.c @@ -1479,17 +1479,19 @@ static uint32_t adc_sqrbits(FAR struct stm32_dev_s *priv, int first, int last, static bool adc_internal(FAR struct stm32_dev_s * priv) { int i; + if (priv->intf == 1) { for (i = 0; i < priv->nchannels; i++) { - if (priv->chanlist[i] > ADC_LAST_EXTERNAL_CHAN) - { - return true; - } + if (priv->chanlist[i] > ADC_LAST_EXTERNAL_CHAN) + { + return true; + } } } + return false; }