打印

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

[复制链接]
2618|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
宝箱怪|  楼主 | 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中开启校准功能后,出现数据波动的情况可能是配置错了吧

使用特权

评论回复
5
Betty996| | 2024-4-18 11:35 | 只看该作者
ADC的精准度对电源稳定性要求较高,如果电源不稳定,可能导致ADC数据波动。

使用特权

评论回复
6
Carina卡| | 2024-4-18 12:41 | 只看该作者
正常来说ADC的参考电压如果不稳定,也会导致ADC数据波动。确保参考电压稳定并且符合ADC的要求

使用特权

评论回复
7
Estelle1999| | 2024-4-18 14:05 | 只看该作者
输入信号可能受到干扰,导致ADC数据波动。确保输入信号线路良好,避免受到干扰

使用特权

评论回复
8
Emily999| | 2024-4-18 15:10 | 只看该作者
在校准过程中,可能会产生干扰,影响ADC的正常工作。确保校准过程中尽量减少干扰

使用特权

评论回复
9
Charlotte夏| | 2024-4-18 16:23 | 只看该作者
校准功能需要正确的参数设置,包括校准时钟、校准精度等。如果校准参数设置不正确,可能导致数据波动

使用特权

评论回复
10
alxd| | 2024-4-19 06:42 | 只看该作者
你是不是超频了?MCU方面?

使用特权

评论回复
11
Allison8859| | 2024-4-19 08:13 | 只看该作者
一般情况可以换个外部基准电源,也许就好了

使用特权

评论回复
12
Betty1299| | 2024-4-19 10:08 | 只看该作者
你的使用环境是不是有干扰啊?

使用特权

评论回复
13
Carmen7| | 2024-4-19 11:26 | 只看该作者
有可能是芯片的ADC电源基准不好不稳定吧

使用特权

评论回复
14
zhengshuai888| | 2024-4-21 19:22 | 只看该作者
每次上电校准值有可能不同,用软件滤波处理一下。

使用特权

评论回复
15
lidi911| | 2024-4-22 08:51 | 只看该作者
校准后先不忙采样吧,或者软件滤波处理一下,把前面波动比较大的数据丢掉。

使用特权

评论回复
16
V853| | 2024-4-23 21:04 | 只看该作者
稳定的那个和实际数值一样吗?感觉不会这么稳才对。

使用特权

评论回复
17
键盘手没手| | 2024-5-31 23:26 | 只看该作者
本帖最后由 键盘手没手 于 2024-6-1 09:01 编辑

可以尝试调整校准算法或者参数以提高稳定性。

使用特权

评论回复
18
键盘手没手| | 2024-5-31 23:26 | 只看该作者
本帖最后由 键盘手没手 于 2024-6-1 09:02 编辑
V853 发表于 2024-4-23 21:04
稳定的那个和实际数值一样吗?感觉不会这么稳才对。

闭校准功能后,数据的波动可能变得更小,但并不意味着这些数据就是准确的或者和实际值完全一样

使用特权

评论回复
19
键盘手没手| | 2024-5-31 23:26 | 只看该作者
本帖最后由 键盘手没手 于 2024-6-1 09:02 编辑
Allison8859 发表于 2024-4-19 08:13
一般情况可以换个外部基准电源,也许就好了

更换外部基准电源是一种改善ADC性能的有效方法

使用特权

评论回复
20
wangtaohui| | 2024-7-31 22:18 | 只看该作者
ADC校准是确保ADC转换准确性的关键步骤,但在一些情况下,你可能会发现校准后的结果不如预期。

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝