cancel
Showing results for 
Search instead for 
Did you mean: 

I have a B-L475E-IOT01A. I am having issues reading value into the ADC. My values change but only slightly. I am testing it a POT from 0 to 3.3V as verfied by an volt meter.

ALivi.1
Associate

 I seem to have things configured correctly. 

This is the bulk of my code:

  while (1)

  {

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

    HAL_ADC_Start(&hadc1);

    while (HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY) != HAL_OK);

    

    adcValue = HAL_ADC_GetValue(&hadc1);

    HAL_ADC_Stop(&hadc1);

    sprintf(msg, "%hu\r\n", adcValue);

    HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);  

    HAL_Delay(3000);

  }

This is my configuration file:

/* ADC1 init function */

void MX_ADC1_Init(void)

{

  ADC_MultiModeTypeDef multimode = {0};

  ADC_ChannelConfTypeDef sConfig = {0};

  /** Common config 

  */

  hadc1.Instance = ADC1;

  hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;

  hadc1.Init.Resolution = ADC_RESOLUTION_12B;

  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;

  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;

  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;

  hadc1.Init.LowPowerAutoWait = DISABLE;

  hadc1.Init.ContinuousConvMode = DISABLE;

  hadc1.Init.NbrOfConversion = 1;

  hadc1.Init.DiscontinuousConvMode = DISABLE;

  hadc1.Init.NbrOfDiscConversion = 1;

  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;

  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;

  hadc1.Init.DMAContinuousRequests = DISABLE;

  hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;

  hadc1.Init.OversamplingMode = DISABLE;

  if (HAL_ADC_Init(&hadc1) != HAL_OK)

  {

    Error_Handler();

  }

  /** Configure the ADC multi-mode 

  */

  multimode.Mode = ADC_MODE_INDEPENDENT;

  if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)

  {

    Error_Handler();

  }

  /** Configure Regular Channel 

  */

  sConfig.Channel = ADC_CHANNEL_1;

  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(&hadc1, &sConfig) != HAL_OK)

  {

    Error_Handler();

  }

}

I used CubeMX to create the configuration.

Kind of at a loss as to why I'm not getting accurate results.

Any help would be greatly appreciated.

0 REPLIES 0