I would like to record signal peaks from an ADC to a DMA buffer.
I have this working in continuous and software triggered modes to circular buffers.
I have a adc watchdog interrupt working to detect a "high signal".
I am trying to put them together to record "high" peaks in the signal to a buffer.
what i cant figure out is how to start the DMA on event for a ADC that is already running in continuous mode with interrupts for the high level watchdog.
in am use HAL libraries.
currently i have been starting the ADC with DMA with;
HAL_ADC_Start_DMA(&hadc1,(uint32_t*) &ADC_Data, 5000);
i know i can start ADC with interrupts for watchdog using;
what do i need in my watchdog interrupt to start DMA transfer?
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc)
if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_AWD1) != RESET)
//Start DMA here
i don't need continuous DMA or a circular buffer.
I can have a fixed buffer size. Filling to the end and stopping is fine.
I can controlled ADC triggering rate with timer to give peak sampling rate and duration
Basically, i need to know what HAL_ADC_Start_DMA(&hadc1,(uint32_t*) &ADC_Data, 5000); does
in addition too what HAL_ADC_Start_IT(&hadc1); does; and put that in my watchdog interrupt handler.
Sorry i an really new to the STM32 world. Hope one of you gurus can help.