CH32V307 ADC例程的几个疑问

1641530007139087.png

1.如上图,如果获取ADC2校准值为什么设置是ADC1的CAL位置1?

1641530007564855.png

2.结果为什么要加2次校验值?


您好,不好意思,已经及时修改,需要将Get_CalibrationValue函数里面的ADC1改为ADCx即可,关于第二张图,main函数里面Get_ConversionVal1这个函数入口参数不需要加校准值,去掉即可,感谢你的细心发现。


实际测试了一下DualADC_AlternateTrigger例程,通道五接地。感觉把前面图一最后一句改为

return (int16_t)2048 - (int16_t)t;

要正常些,不知这样改对不对,如下图

adc-3.png

while (1) {

        while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_JEOC));

        ADC_ClearFlag(ADC1, ADC_FLAG_JEOC);

        adc_val[0] = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1);

        printf("ADC1_ch4=%d\tCorrected_ch4=%d\r\n", adc_val[0], get_conversion_val1(adc_val[0]));


        while (!ADC_GetFlagStatus(ADC2, ADC_FLAG_JEOC));

        ADC_ClearFlag(ADC2, ADC_FLAG_JEOC);

        adc_val[1] = ADC_GetInjectedConversionValue(ADC2, ADC_InjectedChannel_1);

        printf("ADC2_ch5=%d\tCorrected_ch5=%d\r\n", adc_val[1], get_conversion_val2(adc_val[1]));

        delay_ms(500);

    }

通道4接地

adc-4.png


您好,实际使用中可根据实际测量值做适当修改,例程中提供的是适合大多数情况的


只有登录才能回复,可以选择微信账号登录