(资料图)
基本信息
- MCU:STM32F105R8T6
- 库:HAL
- 平台:MDK
- 精度:12位
问题一
现象:在测量的时候,发现采样值在 1023 ~ 1042 和 1279 ~ 1290 两个区间之间无法测量
原因:一开始还以为是我计算方式不对,折腾了很久才发现是采样导致的,发现这个现象后,有两个猜测可能一:怀疑是放大电路的问题,出现了这样的死区,导致 MCU 无法测量
测试方法:用万用表测量放大后的信号是有变化的,并没有这样的死区存在,说明也不是放大电路的问题
可能二:怀疑是 MCU 的 ADC 通道损坏导致无法采集
测试方法:使用了多个 MCU 测量也是同样的现象,基本可以排除 MCU 的 ADC 通道损坏的可能,为了排除程序功能之间的影响,使用了单独的 ADC 采样 DEMO 程序测量时,居然没有这样的现象,到这里基本可以确定了是程序的问题,经过对比程序,最后发现是 ADC 时钟没有配置,绝望了。
解决办法:只需要配置 ADC 采集通道的时钟即可,程序如下所示:
问题二
现象:通过采样值计算出的电压与时间的电压有 40MV 的差距
原因:未知
解决办法:增加 ADC 通道校准,程序如下
/* 校准ADC */HAL_ADCEx_Calibration_Start();