Skip to main content
Explorer II
October 7, 2025
Question

STM32G431C + ADC + DMA

  • October 7, 2025
  • 2 replies
  • 256 views

I'm using ADC with DMA in a large project, and faced some very strange problem: 

If I'm using DMA2 Channel 6 - ADC works correctly 

If I'm using DMA2 Channel 1 - the SW end up in Hard Fault 

Screenshot 2025-10-07 125752.pngScreenshot 2025-10-07 125821.pngScreenshot 2025-10-07 124405.png

The configuration is default. 

This is how I start the conversation 

 HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);
 // Start the ADC in DMA mode
 HAL_ADC_Start_DMA(&hadc1, (uint32_t*) g_ADC_values, ADC_BUFFER_LENGTH);
    This topic has been closed for replies.

    2 replies

    Super User
    October 7, 2025

    What is the stack trace when the hard fault happens? What code is causing it to hard fault?

    AChas.1Author
    Explorer II
    October 7, 2025

    The random code, it depends when ADC triggers the DMA 

    Super User
    October 7, 2025

    I can't make sense of this answer.

    Using DMA doesn't cause a hard fault in itself. It's possible the DMA is misconfigured, or trying to write somewhere it cannot. Look for the reason it's hard faulting and go from there.

    Technical Moderator
    October 8, 2025

    Hello @AChas.1 ;

     

    I recommend you to look at How to debug a HardFault on an Arm® Cortex®-M STM32  - STMicroelectronics Community article may help you to debug faults on Arm Cortex®-M based STM32 devices.

     

    I hope this help you.

    Thank you.

    Kaouthar