有遇到过GD32的adc开启校准功能后每次上电数据反而有波动的情况吗?
void adc_config(void){
adc_rcu_config();
adc_gpio_config();
/* ADC mode config */
adc_mode_config(ADC_MODE_FREE);
/* ADC data alignment config */
adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT);
/* ADC channel length config */
adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 1U);
/* ADC trigger config */
adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
/* ADC external trigger config */
adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE);
adc_tempsensor_vrefint_enable();
/* enable ADC interface */
adc_enable(ADC0);
delay_1ms(1U);
/* ADC calibration and reset calibration */
//adc_calibration_enable(ADC0);
}
uint16_t adc_channel_sample(uint8_t channel)
{
/* ADC regular channel config */
adc_regular_channel_config(ADC0, 0U, channel, ADC_SAMPLETIME_71POINT5);
/* ADC software trigger enable */
adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);
/* wait the end of conversion flag */
while (!adc_flag_get(ADC0, ADC_FLAG_EOC))
;
/* clear the end of conversion flag */
adc_flag_clear(ADC0, ADC_FLAG_EOC);
/* return regular channel sample value */
return (adc_regular_data_read(ADC0));
}
vref = 1200 * 4096 / getExternalChannel(ADC_CHANNEL_17);
每次都执行一下adc_config后再读取adc的值
不注释掉这行的结果
//adc_calibration_enable(ADC0);
vref=2958.58
vref=2939.30
vref=2936.66
vref=2936.66
vref=2945.82
vref=2901.98
vref=2911.15
vref=2940.38
vref=2955.25
vref=2966.47
vref=2936.13
vref=2911.42
注释掉这行的结果
//adc_calibration_enable(ADC0);
vref=2948.36
vref=2947.16
vref=2947.68
vref=2947.56
vref=2947.76
vref=2947.53
vref=2947.79
vref=2947.48
vref=2947.73
怎么不开校准数据还更稳定了。。。 根据具体的应用场景和需求,选择适合的校准算法。有些算法可能对噪声更敏感,而有些则更适合在恶劣环境下工作。 检查软件配置
在GD32的ADC中开启校准功能后,出现数据波动的情况可能是配置错了吧 ADC的精准度对电源稳定性要求较高,如果电源不稳定,可能导致ADC数据波动。 正常来说ADC的参考电压如果不稳定,也会导致ADC数据波动。确保参考电压稳定并且符合ADC的要求 输入信号可能受到干扰,导致ADC数据波动。确保输入信号线路良好,避免受到干扰 在校准过程中,可能会产生干扰,影响ADC的正常工作。确保校准过程中尽量减少干扰 校准功能需要正确的参数设置,包括校准时钟、校准精度等。如果校准参数设置不正确,可能导致数据波动 你是不是超频了?MCU方面? 一般情况可以换个外部基准电源,也许就好了 你的使用环境是不是有干扰啊? 有可能是芯片的ADC电源基准不好不稳定吧 每次上电校准值有可能不同,用软件滤波处理一下。 校准后先不忙采样吧,或者软件滤波处理一下,把前面波动比较大的数据丢掉。 稳定的那个和实际数值一样吗?感觉不会这么稳才对。
本帖最后由 键盘手没手 于 2024-6-1 09:01 编辑
可以尝试调整校准算法或者参数以提高稳定性。 本帖最后由 键盘手没手 于 2024-6-1 09:02 编辑
V853 发表于 2024-4-23 21:04
稳定的那个和实际数值一样吗?感觉不会这么稳才对。
闭校准功能后,数据的波动可能变得更小,但并不意味着这些数据就是准确的或者和实际值完全一样 本帖最后由 键盘手没手 于 2024-6-1 09:02 编辑
Allison8859 发表于 2024-4-19 08:13
一般情况可以换个外部基准电源,也许就好了
更换外部基准电源是一种改善ADC性能的有效方法 ADC校准是确保ADC转换准确性的关键步骤,但在一些情况下,你可能会发现校准后的结果不如预期。