Skip to main content
Visitor II
June 18, 2024
Solved

ADC in trigger+continuous configuration failing to perform conversions

  • June 18, 2024
  • 1 reply
  • 926 views
I’m using CubeIDE and I need to load a single memory location of the FMAC input buffer via DMA with readings from a single ADC channel that is triggered by a timer output compare.  DR register on the ADC shows a stuck value indicating conversions aren’t taking place. I’m using the same trigger for other things successfully, but I don’t see any conversions happening. I'm using HAL_ADC_START_DMA + Cube...are there more config steps for trigger mode?
 
As a possible substitute, I disabled the trigger option and kept continuous mode enabled. I can see a single conversion and DMA transfer take place at startup, but not continuous.  I read this can be due to overloading DMA with constant requests, so I set the sample time to 640 clock cycles, but it didn’t change anything. In this state, I can see ADSTART is 0. If I set it to 1, I get another single conversion and a DMA transfer and ADSTART goes back to zero. It looks like this is nearly working...but I'm likely just missing a setting.  I was also unsuccessful in getting continuous mode to work even without DMA, so I don’t think that’s the problem. What could I have missed?
 
 
    This topic has been closed for replies.
    Best answer by KHarb.1

    TIM20 is configured to have its trigger as OC1. If ADC has its trigger set to TIM 20 OC1, it will not sample. If ADC has its trigger set to TIM20 trigger, then things work as normal. TIM20 OC1 and trigger should be the same...but I guess not.

    1 reply

    KHarb.1AuthorAnswer
    Visitor II
    June 21, 2024

    TIM20 is configured to have its trigger as OC1. If ADC has its trigger set to TIM 20 OC1, it will not sample. If ADC has its trigger set to TIM20 trigger, then things work as normal. TIM20 OC1 and trigger should be the same...but I guess not.