我们在使用MCU自带的ADC时,经常会发现ADC的转换精度达不到我们的要求,如:分辩率为10 Bit的ADC,转换精度只有7位或更低,为了弥补这一问题,我们往往通过多次采样,滤除杂散的采样结果,取平均值的方式来提高精度,但这样会使ADC转换率降低,大量增加MCU的工作量。
今天和大家交流一些更有效率的方法
电路板设计
将所需采集的模拟信号源尽量靠近MCU;
模拟信号的走线要尽量避开高速数字信号;
对于MCU有独立模拟电源引脚的,要给ADC转换电路提供专用的电压参考源和供电电路。若MCU没有独立的ADC电源引脚,应该在MCU电源引脚附近放置105PF的滤波电容,在成本允许的情况下给MCU单独供电,提高MCU的电源质量;
关注MCU ADC接口的输入阻抗,往往MCU的ADC输入阻抗并不大,容易影响到ADC信号的采集,所以外 围的模拟电路要能提供足够的驱动能力,若模拟信号太弱,建议使用运放电路,增加驱动能力。
软件设计
在进行ADC转换时,让芯片进入Sleep模式(NXP的MCU芯片进入Sleep模后,内核时钟停止,但外设时钟正常,ADC完成转换后产品中断唤醒MCU),降低数字电路噪声。
正确配置IO的寄存器,禁止GPIO的上下拉电阻。MCU的ADC采集引脚往往还有其它功能,并可以配置内部上下拉电阻,且默认情况下,芯片上电后配置为弱上拉模式,这时会有50K左右的上拉电阻,这个电阻会对ADC转换产生较大的影响。