CH571F的AD口检测时外部电压小于0V的时候(负0.2V)该如何处理 ???

CH571F的AD口检测时外部电压范围为:-0.2至1.0V,最低值是(负0.2V),此时AD获取出来的结果(不为零)是一个大于0的数值,当实际测试外部到AD口电压为0V 时 AD结果接近是0,这导致 会出现 程序逻辑判断错误,应该如何避免呢,我需要的效果是:判断当AD口的电压<=0伏时,AD检测获取出来的结果值都为零

image.png

这个负值理论测量值,单通道是没法测负值的,实际只能测量最低0V。



现在PGA配置的是0db(1倍),我并不需要测量负电压具体数值,在AD采样范围(-0.2至1.0V)里 ,实际测试当AD口电压为负值时AD获取的结果不为0,我只是需要: 当AD口采样电压小于0V时,负值电压时AD获取的结果应该为0才对的


evt使用的时候,不要启用粗调校准,直接使用通道测量的值。
理论上因为测量误差,测量的ADC值应该接近0,测量0v,应该是5以内的值


在AD初始化的时候直接让 RoughCalib_Value = 0;相当于关闭了 AD粗调校准,实测果然好用了

void ADC_Init(void)

{

    GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_Floating); //PA15

    GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeIN_Floating); //PA14

    GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeIN_Floating); //PA13

    GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating); //PA12

    ADC_ExtSingleChSampInit(SampleFreq_4, ADC_PGA_0);

//    RoughCalib_Value = ADC_DataCalib_Rough(); //用于计算ADC内部偏差,记录到全局变量           RoughCalib_Value中 屏蔽此行 不校准AD误差

    RoughCalib_Value = 0; //不使用校准  2022年5月6日 验证太阳能板检测负电压时  出现错误,这里暂不校准=0; 实测可以达到要求

}

目前已经可以达到要求了 ,谢谢!!




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