Skip to main content
Senior
June 24, 2024
Solved

ADC Initialization Function Generated From IOC

  • June 24, 2024
  • 2 replies
  • 1110 views

STM32CubeIDE 1.15.1, Windows, STM32H563 MCU

When MX_ADC2_Init() generated by saving IOC file I get the wrong sampling time and rank for Vddcore. The IOC file shows 640.5 cycles and rank 3 but MX_ADC2_Init() shows 2.5 cycles and rank 1:

 

/**
 * @brief ADC2 Initialization Function
 * None
 * @retval None
 */
static void MX_ADC2_Init(void)
{

 /* USER CODE BEGIN ADC2_Init 0 */

 /* USER CODE END ADC2_Init 0 */

 ADC_ChannelConfTypeDef sConfig = {0};

 /* USER CODE BEGIN ADC2_Init 1 */

 /* USER CODE END ADC2_Init 1 */

 /** Common config
 */
 hadc2.Instance = ADC2;
 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV16;
 hadc2.Init.Resolution = ADC_RESOLUTION_12B;
 hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
 hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE;
 hadc2.Init.EOCSelection = ADC_EOC_SEQ_CONV;
 hadc2.Init.LowPowerAutoWait = DISABLE;
 hadc2.Init.ContinuousConvMode = ENABLE;
 hadc2.Init.NbrOfConversion = 3;
 hadc2.Init.DiscontinuousConvMode = DISABLE;
 hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
 hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
 hadc2.Init.DMAContinuousRequests = DISABLE;
 hadc2.Init.SamplingMode = ADC_SAMPLING_MODE_NORMAL;
 hadc2.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
 hadc2.Init.OversamplingMode = ENABLE;
 hadc2.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_128;
 hadc2.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_7;
 hadc2.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
 hadc2.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
 if (HAL_ADC_Init(&hadc2) != HAL_OK)
 {
 Error_Handler();
 }

 /** Configure Regular Channel
 */
 sConfig.Channel = ADC_CHANNEL_VCORE;
 sConfig.Rank = ADC_REGULAR_RANK_1;
 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
 sConfig.SingleDiff = ADC_SINGLE_ENDED;
 sConfig.OffsetNumber = ADC_OFFSET_NONE;
 sConfig.Offset = 0;
 if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
 {
 Error_Handler();
 }

 /** Configure Regular Channel
 */
 sConfig.Channel = ADC_CHANNEL_3;
 sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
 if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
 {
 Error_Handler();
 }

 /** Configure Regular Channel
 */
 sConfig.Channel = ADC_CHANNEL_VBAT;
 sConfig.Rank = ADC_REGULAR_RANK_2;
 if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
 {
 Error_Handler();
 }

 /** Configure Regular Channel
 */
 sConfig.Channel = ADC_CHANNEL_VCORE;
 sConfig.Rank = ADC_REGULAR_RANK_3;
 if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
 {
 Error_Handler();
 }
 /* USER CODE BEGIN ADC2_Init 2 */

 /* USER CODE END ADC2_Init 2 */

}

 

 

Compare with IOC view...

mccabehm_0-1719266346344.png

 

Is there something special about Vddcore?

 

Best answer by STTwo-32

Hello @mccabehm 

This behavior has been solved on the last version of the STM32CubeMX V6.13.0.

Best Regards.

STTwo-32

2 replies

STTwo-32
Technical Moderator
June 25, 2024

Hello @mccabehm 

Thank you for reporting this issue. I've been able to confirm it and I've reported to the concerned team for correction (under internal ticket number 184962).

Best Regards.

STTwo-32

STTwo-32
STTwo-32Best answer
Technical Moderator
December 2, 2024

Hello @mccabehm 

This behavior has been solved on the last version of the STM32CubeMX V6.13.0.

Best Regards.

STTwo-32