有遇到过GD32的adc开启校准功能后每次上电数据反而有波动的情况吗?

[复制链接]
1002|12
手机看帖
扫描二维码
随时随地手机跟帖
宝箱怪|  楼主 | 2024-3-28 16:53 | 显示全部楼层 |阅读模式
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


怎么不开校准数据还更稳定了。。。

使用特权

评论回复
flycamelaaa| | 2024-3-29 16:00 | 显示全部楼层
根据具体的应用场景和需求,选择适合的校准算法。有些算法可能对噪声更敏感,而有些则更适合在恶劣环境下工作。

使用特权

评论回复
probedog| | 2024-3-29 20:00 | 显示全部楼层
检查软件配置

使用特权

评论回复
Annie556| | 2024-4-18 10:31 | 显示全部楼层
在GD32的ADC中开启校准功能后,出现数据波动的情况可能是配置错了吧

使用特权

评论回复
Betty996| | 2024-4-18 11:35 | 显示全部楼层
ADC的精准度对电源稳定性要求较高,如果电源不稳定,可能导致ADC数据波动。

使用特权

评论回复
Carina卡| | 2024-4-18 12:41 | 显示全部楼层
正常来说ADC的参考电压如果不稳定,也会导致ADC数据波动。确保参考电压稳定并且符合ADC的要求

使用特权

评论回复
Estelle1999| | 2024-4-18 14:05 | 显示全部楼层
输入信号可能受到干扰,导致ADC数据波动。确保输入信号线路良好,避免受到干扰

使用特权

评论回复
Emily999| | 2024-4-18 15:10 | 显示全部楼层
在校准过程中,可能会产生干扰,影响ADC的正常工作。确保校准过程中尽量减少干扰

使用特权

评论回复
Charlotte夏| | 2024-4-18 16:23 | 显示全部楼层
校准功能需要正确的参数设置,包括校准时钟、校准精度等。如果校准参数设置不正确,可能导致数据波动

使用特权

评论回复
alxd| | 2024-4-19 06:42 | 显示全部楼层
你是不是超频了?MCU方面?

使用特权

评论回复
Allison8859| | 2024-4-19 08:13 | 显示全部楼层
一般情况可以换个外部基准电源,也许就好了

使用特权

评论回复
Betty1299| | 2024-4-19 10:08 | 显示全部楼层
你的使用环境是不是有干扰啊?

使用特权

评论回复
Carmen7| | 2024-4-19 11:26 | 显示全部楼层
有可能是芯片的ADC电源基准不好不稳定吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝