diff --git a/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.c b/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.c index 53a5439cd..e1513a9b9 100644 --- a/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.c +++ b/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.c @@ -255,6 +255,9 @@ void adc_lld_start(ADCDriver *adcp) { osalDbgAssert(adcp->dmastp != NULL, "unable to allocate stream"); dmaStreamSetPeripheral(adcp->dmastp, &ADC1->DR); rccEnableADC1(true); +#if STM32_DMA_SUPPORTS_DMAMUX + dmaSetRequestSource(adcp->dmastp, STM32_DMAMUX1_ADC1); +#endif } #endif /* STM32_ADC_USE_ADC1 */ @@ -267,6 +270,9 @@ void adc_lld_start(ADCDriver *adcp) { osalDbgAssert(adcp->dmastp != NULL, "unable to allocate stream"); dmaStreamSetPeripheral(adcp->dmastp, &ADC2->DR); rccEnableADC2(true); +#if STM32_DMA_SUPPORTS_DMAMUX + dmaSetRequestSource(adcp->dmastp, STM32_DMAMUX1_ADC2); +#endif } #endif /* STM32_ADC_USE_ADC2 */ @@ -279,6 +285,9 @@ void adc_lld_start(ADCDriver *adcp) { osalDbgAssert(adcp->dmastp != NULL, "unable to allocate stream"); dmaStreamSetPeripheral(adcp->dmastp, &ADC3->DR); rccEnableADC3(true); +#if STM32_DMA_SUPPORTS_DMAMUX + dmaSetRequestSource(adcp->dmastp, STM32_DMAMUX1_ADC3); +#endif } #endif /* STM32_ADC_USE_ADC3 */ diff --git a/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.h b/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.h index 5202f946b..9db5da960 100644 --- a/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.h +++ b/os/hal/ports/STM32/LLD/ADCv2/hal_adc_lld.h @@ -256,6 +256,10 @@ #error "ADC driver activated but no ADC peripheral assigned" #endif +#if STM32_DMA_SUPPORTS_DMAMUX + +#else /* !STM32_DMA_SUPPORTS_DMAMUX */ + #if STM32_ADC_USE_ADC1 && \ !STM32_DMA_IS_VALID_ID(STM32_ADC_ADC1_DMA_STREAM, STM32_ADC1_DMA_MSK) #error "invalid DMA stream associated to ADC1" @@ -271,6 +275,8 @@ #error "invalid DMA stream associated to ADC3" #endif +#endif /* !STM32_DMA_SUPPORTS_DMAMUX */ + /* ADC clock related settings and checks.*/ #if STM32_ADC_ADCPRE == ADC_CCR_ADCPRE_DIV2 #define STM32_ADCCLK (STM32_PCLK2 / 2)