Skip to main content
Visitor II
November 1, 2024
Question

Timer direct input capture dma to memory buffer on stm32H503

  • November 1, 2024
  • 2 replies
  • 795 views

I am trying to launch a dma of the input capture of the timer2 ch2 latched captured register to a memory buffer. I am using the DMA to allow me to record 75 captures so as to be able to determine the time for  75 cycles of a 500 KHz input signal. Set up is - 

TIM2 - internal clock (250MHz) - ch2 input capture direct mode

IC CH2 - rising edge - direct - no division - filter 0

GPDMA1 CH0 - standard - circular disable - request TIM2_CH2 - DMA Handle hdma(TIM_DMA_ID_CC2) - Block single - Priority low - Transaction normal - Dir p to m - Source increment disable - Width word - Burst 1 - Port 0 - Destination increment enabled - Width word - Burst 1 - Data handling disable - Trigger disable - Transfer event half end

At the moment Icache is disabled but I have tested in all three options. I am using HAL_TIM_IC_Start_DMA(&htim2, TIM_CHANNEL_2, periods, SAMPLE_SIZE) called from an interrupt routine triggered by a separate timer. Periods is my memory buffer and SAMPLE_SIZE is set to 75. 

When run, the memory buffer is left in its initialized state and no capture data is transferred. This scheme worked correctly when using a STM32f411 target with the classic dma controller.  Any and all help is appreciated.

    This topic has been closed for replies.

    2 replies

    ST Employee
    November 4, 2024

    This post has been escalated to the ST Online Support Team for additional assistance. We'll contact you directly.

    Visitor II
    December 29, 2025

    Hello,
    I have a similar problem. Did you manage to solve it?