Skip to main content
nico 2010
Associate
October 12, 2017
Question

Nucleo F410RB ADC dilema

  • October 12, 2017
  • 2 replies
  • 685 views
Posted on October 12, 2017 at 08:50

Hello,

I'm newbie with STM32 microcontrollers.

I want to read ADC in regular mode conversion but triggered by TIM1 Capture Compare event with a period of 100us.

Despite the fact that TIM1 Capture Compare on channel 2 has an event (interruption) at every 100us - tested by toggling LD2 on board - ADC does not trigger.

Instead, if I use injected mode conversion ADC trigger and it achieve values.

I checked 'stm32f4xx_hal_adc.c' to see if is any reference about start conversion with external trigger/timer trigger but I didn't find something.

What can I have to do to make the project work?

In attachment is CubeMX project settings and main.c file.

    This topic has been closed for replies.

    2 replies

    S.Ma
    Principal
    October 13, 2017
    Posted on October 13, 2017 at 04:41

    Get the ADC trigger pin for normal channel manually wired to a timer channel.

    To make sure things works fine, check the setup: If the trigger is launching a multichannel sweep or not?

    If yes, you'll need a DMA to read all the values from a single ADC DR and expand them on a RAM array for reading.

    Make sure the channel sweep is done in one shot mode.

    nico 2010
    nico 2010Author
    Associate
    October 13, 2017
    Posted on October 13, 2017 at 09:20

    Hello,

    thank you for advices. I checked your advice and nothing is happening.

    But if I place this:     hadc1.Instance->CR2 |= ADC_CR2_SWSTART; in stm32f4xx_it.c where TIM IRQ is handling everything works like charm.

    I read in any direction stm32f4xx_hal_adc.c but nowhere is written what happens if there is an external/timer trigger, only if no external trigger/timer trigger exists. I guess it is a bug in this library.

    Thank you again and best regards.