×

关于ADC采样

zxjy辉 zxjy辉 发表于2025-06-10 11:14:03 浏览470 评论0

抢沙发发表评论

stm32 adc采样参数


    image.png

  1. 多通道连续扫描 关闭连续转换 关闭间断转换

    1. ADC配置 其他的默认即可 使用stm32cubeMX配置
        hadc3.Init.ScanConvMode = ENABLE;
        hadc3.Init.ContinuousConvMode = DISABLE;
        hadc3.Init.DiscontinuousConvMode = DISABLE;
      采集电压
      void ADC_Save_Value()
      {
      	int i = 0;
      	uint32_t value;
      	uint32_t value1;
      	HAL_ADC_Start(&hadc3);//开启ADC1
      	HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成
      	value = HAL_ADC_GetValue(&hadc3);//获取ADC的值
      	HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成
      	value1 = HAL_ADC_GetValue(&hadc3);//获取ADC的值
              printf("adc %d  %d",value,value1);
      	HAL_ADC_Stop(&hadc3);
      	return;
      }
  2. 多通道连续扫描 使能连续转换 关闭间断转换

    1. ADC配置 其他的默认即可 使用stm32cubeMX配置
        hadc3.Init.ScanConvMode = ENABLE;
        hadc3.Init.ContinuousConvMode = ENABLE;
        hadc3.Init.DiscontinuousConvMode = DISABLE;
      采集电压
      void ADC_Save_Value()
      {
      	int i = 0;
      	uint32_t value;
      	uint32_t value1;
      	HAL_ADC_Start(&hadc3);//开启ADC1
      	HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成
      	value = HAL_ADC_GetValue(&hadc3);//获取ADC的值
      	HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成
      	value1 = HAL_ADC_GetValue(&hadc3);//获取ADC的值
              printf("adc %d  %d",value,value1);
      	HAL_ADC_Stop(&hadc3);
      	return;
      }
  3. 多通道连续扫描 关闭连续转换 使能间断转换

    1. ADC配置 其他的默认即可 使用stm32cubeMX配置
        hadc3.Init.ScanConvMode = ENABLE;
        hadc3.Init.ContinuousConvMode = DISABLE;
        hadc3.Init.DiscontinuousConvMode = ENABLE;
      PS:此时* Number Of Discontinuous Conversions 是配置为 1 的,所以2个通道被分成了2组,需要2次触发
      采集电压
      void ADC_Save_Value()
      {
      	int i = 0;
      	uint32_t value;
      	uint32_t value1;
      	for(i = 0;i < 2;i++)
      	{
      		HAL_ADC_Start(&hadc3);//开启ADC1
      		HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成
      		value = HAL_ADC_GetValue(&hadc3);//获取ADC的值
      		printf("adc%d  %d",i,value);
      	}
      	HAL_ADC_Stop(&hadc3);
      	
      	
      	return;
      }


  4. 区别

    1. 在于开启adc的次数,间断的一个通道需要启动一次adc,读取一个通道的数据,其他的都是开启一次,然后可以读取多个通道数据

    2. 参考链接

#好好学习!

群贤毕至

访客