diff --git a/src/main/drivers/adc.h b/src/main/drivers/adc.h index 90d7825843..5ba4b999da 100644 --- a/src/main/drivers/adc.h +++ b/src/main/drivers/adc.h @@ -46,6 +46,10 @@ uint16_t adcGetChannel(uint8_t channel); bool adcIsFunctionAssigned(uint8_t function); int adcGetFunctionChannelAllocation(uint8_t function); -#if !defined(USE_ADC_AVERAGING) -#define ADC_AVERAGE_N_SAMPLES 1 +#if defined(USE_ADC_AVERAGING) +#if !defined(ADC_AVERAGE_N_SAMPLES) +#define ADC_AVERAGE_N_SAMPLES 20 +#endif +#else +#define ADC_AVERAGE_N_SAMPLES 1 #endif diff --git a/src/main/drivers/adc_stm32f7xx.c b/src/main/drivers/adc_stm32f7xx.c index 3b7020b7ea..4b5aae8838 100644 --- a/src/main/drivers/adc_stm32f7xx.c +++ b/src/main/drivers/adc_stm32f7xx.c @@ -110,7 +110,7 @@ static void adcInstanceInit(ADCDevice adcDevice) adc->DmaHandle.Init.Channel = adc->channel; adc->DmaHandle.Init.Direction = DMA_PERIPH_TO_MEMORY; adc->DmaHandle.Init.PeriphInc = DMA_PINC_DISABLE; - adc->DmaHandle.Init.MemInc = adc->usedChannelCount > 1 ? DMA_MINC_ENABLE : DMA_MINC_DISABLE; + adc->DmaHandle.Init.MemInc = ((adc->usedChannelCount > 1) || (ADC_AVERAGE_N_SAMPLES > 1)) ? DMA_MINC_ENABLE : DMA_MINC_DISABLE; adc->DmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; adc->DmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; adc->DmaHandle.Init.Mode = DMA_CIRCULAR; @@ -152,7 +152,7 @@ static void adcInstanceInit(ADCDevice adcDevice) //HAL_CLEANINVALIDATECACHE((uint32_t*)&adcValues[adcDevice], configuredAdcChannels); /*##-4- Start the conversion process #######################################*/ - if (HAL_ADC_Start_DMA(&adc->ADCHandle, (uint32_t*)&adcValues[adcDevice], adc->usedChannelCount) != HAL_OK) + if (HAL_ADC_Start_DMA(&adc->ADCHandle, (uint32_t*)&adcValues[adcDevice], adc->usedChannelCount * ADC_AVERAGE_N_SAMPLES) != HAL_OK) { /* Start Conversation Error */ } diff --git a/src/main/target/common.h b/src/main/target/common.h index 5685009fb2..90cf0ab087 100755 --- a/src/main/target/common.h +++ b/src/main/target/common.h @@ -45,11 +45,7 @@ #define SKIP_CLI_RESOURCES #endif -#if defined(STM32F3) || defined(STM32F4) #define USE_ADC_AVERAGING -#define ADC_AVERAGE_N_SAMPLES 20 -#endif - #define USE_64BIT_TIME #define USE_BLACKBOX #define USE_GPS