cancel
Showing results for 
Search instead for 
Did you mean: 

Extern Potentiometer MCSDK

Undertaker
Visitor

Hello,

I bought the STM32 Nucleo Pack with the Nucleo-F302R8, the X-Nucleo-IHM07M1 and a three-phase motor.

I use MCSDK to control my motor and it's no problem.

But when I want to add an external potentiometer to the ADC, I can't get the values from it.

I've tried lots of things, but nothing works.

To be sure of my potentiometer and my program, I tried with a simple program that doesn't use MCSDK, and everything worked perfectly.

 

Here is the configuration of my MX_ADC1_Init with mcsdk activated:

static void MX_ADC1_Init(void)

{

/* USER CODE BEGIN ADC1_Init 0 */

/* USER CODE END ADC1_Init 0 */

ADC_AnalogWDGConfTypeDef AnalogWDGConfig = {0};

ADC_InjectionConfTypeDef sConfigInjected = {0};

ADC_ChannelConfTypeDef sConfig = {0};

/* USER CODE BEGIN ADC1_Init 1 */

/* USER CODE END ADC1_Init 1 */

/** Common config */

hadc1.Instance = ADC1;

hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;

hadc1.Init.Resolution = ADC_RESOLUTION_12B;

hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;

hadc1.Init.ContinuousConvMode = DISABLE;

hadc1.Init.DiscontinuousConvMode = DISABLE;

hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;

hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;

hadc1.Init.DataAlign = ADC_DATAALIGN_LEFT;

hadc1.Init.NbrOfConversion = 3;

hadc1.Init.DMAContinuousRequests = DISABLE;

hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;

hadc1.Init.LowPowerAutoWait = DISABLE;

hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;

if (HAL_ADC_Init(&hadc1) != HAL_OK)

{

Error_Handler();

}

/** Configure Analog WatchDog 1 */

AnalogWDGConfig.WatchdogNumber = ADC_ANALOGWATCHDOG_1;

AnalogWDGConfig.WatchdogMode = ADC_ANALOGWATCHDOG_SINGLE_INJEC;

AnalogWDGConfig.HighThreshold = 0;

AnalogWDGConfig.LowThreshold = 0;

AnalogWDGConfig.Channel = ADC_CHANNEL_9;

AnalogWDGConfig.ITMode = DISABLE;

if (HAL_ADC_AnalogWDGConfig(&hadc1, &AnalogWDGConfig) != HAL_OK)

{

Error_Handler();

}

/** Configure Injected Channel */

sConfigInjected.InjectedChannel = ADC_CHANNEL_9;

sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;

sConfigInjected.InjectedSingleDiff = ADC_SINGLE_ENDED;

sConfigInjected.InjectedNbrOfConversion = 1;

sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_19CYCLES_5;

sConfigInjected.ExternalTrigInjecConvEdge = ADC_EXTERNALTRIGINJECCONV_EDGE_FALLING;

sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T1_TRGO;

sConfigInjected.AutoInjectedConv = DISABLE;

sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;

sConfigInjected.QueueInjectedContext = DISABLE;

sConfigInjected.InjectedOffset = 0;

sConfigInjected.InjectedOffsetNumber = ADC_OFFSET_NONE;

if (HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected) != HAL_OK)

{

Error_Handler();

}

/** Configure Regular Channel */

sConfig.Channel = ADC_CHANNEL_2;

sConfig.Rank = ADC_REGULAR_RANK_1;

sConfig.SingleDiff = ADC_SINGLE_ENDED;

sConfig.SamplingTime = ADC_SAMPLETIME_181CYCLES_5;

sConfig.OffsetNumber = ADC_OFFSET_NONE;

sConfig.Offset = 0;

if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)

{

Error_Handler();

}

/** Configure Regular Channel */

sConfig.Channel = ADC_CHANNEL_8;

sConfig.Rank = ADC_REGULAR_RANK_2;

if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)

{

Error_Handler();

}

/** Configure Regular Channel */

sConfig.Channel = ADC_CHANNEL_5; //Potentiometer

sConfig.Rank = ADC_REGULAR_RANK_3;

if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)

{

Error_Handler();

}

/* USER CODE BEGIN ADC1_Init 2 */

/* USER CODE END ADC1_Init 2 */

}

0 REPLIES 0