调了半天ADC还不准
开了内部参考电压,校准也做了,结果量个电池电压差了一大截。系统有没有Watchdog?可能复位后时钟没切回来。 看看是不是中断里面卡住了? 有没有用HSI?F0的HSI有点不稳定。 Debug模式下看一下SysTick还在跑吗? 有没有开WFI或者sleep模式? 用了外部晶振吗?起振后可能切换失败了。 电源是不是掉压了?低电压会拖慢时钟。 主频是动态调整的吗?有没有频率自动降级? 你用的是什么版本的Cube?有些bug会自动切时钟。 建议用LED简单闪烁做个时间基准测试。 ADC的精度受电源噪声影响较大。如果电源不稳定或存在高频干扰 必须读取VREFINT_CAL并计算实际值 采样时间不足? 执行 HAL_ADCExocCalibration() 偏移校准 ADC对电源噪声敏感,VDDA波动会直接影响结果。 若工作温度变化较大,需在代码中添加温度补偿逻辑。 未调用HAL_ADCEx_Calibration_Start(&hadc, ADC_SINGLE_ENDED),或校准后未重启ADC。 用万用表直接测量电池电压和VDDA,与ADC结果对比,确认误差来源。 ADC的采样时间设置合理。如果采样时间过短,可能会导致采样不准确。
页:
[1]
2