GD32 ADC采样

关于ADC采样这部分,分为两讲,这一篇讲简单版的采样。

下一篇讲复杂版(精度更高)的采样


简单版的采样比较简单:

大概分为四个部分。

1、ADC初始化

2、获取ADC通道数据

3、获取外部输入电压值

4、转换


1、ADC初始化

	
void ADC0_Init_Concig(void)
{
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_ADC0);
    rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6);

    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_10MHZ, GPIO_PIN_0); 
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_10MHZ, GPIO_PIN_1); 


    adc_mode_config(ADC_MODE_FREE); //独立模式
    adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT); //右对齐
    adc_resolution_config(ADC0,ADC_RESOLUTION_12B); //12位分辨率
    adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 1U); //通道长度
    adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL,         
    ADC0_1_2_EXTTRIG_REGULAR_NONE); //软件触发
    adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE); //启用软件触发

    adc_enable(ADC0);
    adc_calibration_enable(ADC0); //复位校准
}

2、获取ADC通道信息

u16 ADC0_Channel_Sample(u8 channel)
{
    adc_regular_channel_config(ADC0, 0U, channel, ADC_SAMPLETIME_7POINT5); // 配置DAC通道和转换时间
    adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL); //启用软件触发

    while(!adc_flag_get(ADC0, ADC_FLAG_EOC)); // 等待ADC转换完成
    adc_flag_clear(ADC0, ADC_FLAG_EOC); //清除转换完成标志位
    return (adc_regular_data_read(ADC0)); //返回ADC值
}

3、获取转换值

u16 Get_Adc_Average(u8 ch,u8 times)
{
		u32 temp_val=0;
		u8 t;
		for(t=0;t<times;t++)
		{
			  temp_val+=ADC0_Channel_Sample(ch);
		}
		return temp_val/times;
} 
	 

4、获取电压值

u16 Get_Voltage(u8 ch)
{
    u32 adc_bat=0;
	  u16 vbat =0;
  
    switch(ch)
    {
        case  CH_VLA1: //
              adc_bat = Get_Adc_Average(VLA1,4);
              vbat = adc_bat*363/4096;
            break;
        case  CH_VoutA1: //
              adc_bat = Get_Adc_Average(VoutA1,4);
              vbat = adc_bat*363/4096;         
            break;
        default:
            break;     
    }
		return vbat;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶舞澎湃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值