AnsweredAssumed Answered

HAL_ADC_Start_DMA acquire only a subset of channels

Question asked by Fede Rico on Sep 22, 2017
Latest reply on Sep 27, 2017 by Vangelis Fortounas

Hi there,

i'm working on a STM32F103 MCU and I want to acquire 9 channels with ADC1.


With STM32Cube I configured the ADC1 in this way:

  • Scan conversion mode: Enabled.
  • Enable regular conversion: Enable.
  • Number of conversion: 9


These is the channel list:

  1. Vref Int
  2. Temperature Sensor
  3. IN8
  4. IN9
  5. IN10
  6. IN11
  7. IN12
  8. IN13
  9. IN15


Also I configured the DMA to transfer the data from the ADC to a memory buffer.

  • Mode: Normal
  • Increment Address: Memory
  • Data Width: Word


To start the conversion I use:

HAL_ADC_Start_DMA( ADC1_ModuleHandler, ADC_1_Buffer, ADC_1_CH_MAX_VALUE )


  • ADC1_ModuleHandler: ADC Handler.
  • ADC_1_Buffer: uint32_t array with 9 elemets.
  • ADC_1_CH_MAX_VALUE: enum to identify the channel. It starts from 0 to 9.


The conversion works fine but into the ADC_1_Buffer only the first five elements contain a value different from 0. the other 4 elements contain 0.


Moreover if I convert to analog voltage the value of the first element ( Vref Int) I obtain 1.2V that correspond to the internal Vref. So I think that the ADC conversion works.


I don't know why only a subset of channels is converted.


Do I missing some configuration parameters?


Thanks in advance!