解析STM32 ADC采集传感器数据误差高达500的原因

 硬件:芯片:stm32F103C8T6最小系统,传感器:滑动变阻器

模数转换类型:12位逐次逼近型adc(0~4095)

现象:当变阻器滑动到最小处时,adc检测返回数据仍然有500(常规下应该小于100左右),

当变阻器没达到最大处时(大概四分之三),adc返回数据已经达到了4095,再调大变阻器数据不变。

原因:adc校准写在了adc上电启动函数前面,应该先上电adc,再adc校准

解决方法:检查启动函数(ADC_Cmd())和校准的顺序,改成先上电,后校准

//ADC先上电(写在前面)    
ADC_Cmd(ADC1,ENABLE);

//ADC校准(写在后面)
ADC_ResetCalibration(ADC1);
while(ADC_GetFlagStatus(ADC1, ADC_GetResetCalibrationStatus(ADC1)) == SET);
ADC_StartCalibration(ADC1);
while(ADC_GetFlagStatus(ADC1, ADC_GetCalibrationStatus(ADC1)) == SET);

物联沃分享整理
物联沃-IOTWORD物联网 » 解析STM32 ADC采集传感器数据误差高达500的原因

发表评论