使用 STM32F2xx 和 STM32F4xx 微控制器时如何提高 ADC 测量精度
前言
本应用笔记旨在展示对于使用 STM32F2xx 和 STM32F4xx 微控制器的应用,怎样提高其A/D 转换的精度。
本文还讲解了可应用于降低 ADC 误差的固件方法,给出了为得到更好的 ADC 精度,编写固件的一些通用技巧。
请注意,本应用笔记提供的数据仅供参考。除非特别指出,测量条件皆为实验室典型条件而非生产环境。
表 1 列出了本应用笔记涉及的微控制器。
1 会影响 ADC 精度的参数概述
模数转换的精度会影响系统的质量和效率。为提高精度,您需要理解与 ADC 有关的误差,以及对它们有影响的参数。
ADC 本身无法确保结果的精度。它取决于您的系统设计。因此,在您开始开发之前,需要仔细的做些准备。
具体影响 ADC 精度的参数与应用密切相关。比较常见的因素有:PCB 布局、参考电压源、I/O 切换所造成的影响和模拟输入源的输出阻抗。
若需 ADC 误差的更详细信息,请参考应用笔记 AN2834:如何在 STM32F10xxx 器件中得到最佳的 ADC 精度及 AN3137:STM8L 器件上的 A/D 转换器。
2 提高转换精度的固件技巧
2.1 平均
平均是一个简单的技巧,即您对模拟输入多次采样,取所有转换结果的均值。此技巧有助于消除模拟输入上的噪声或错误转换的影响。
2.1.1 平均 N 个 ADC 采样
当使用此方法时,采样数最好为 2 的倍数 (N 应为 2 的倍数)。这会使平均计算更有效率,因为对转换值之和求平均时的除法可通过向右移位做到。这节省了 CPU 时间和执行除法算法所需的代码存储器 (在 Cortex-Mx 内核中,右移操作仅花费 1 个 CPU 周期)。
此平均技巧用于测量一个模拟输入引脚上的电压。总共 N 个转换计算平均。这在固件中用循环做到。
总转换时间 = (采样数 * ADC 转换时间) + 计算时间。
计算时间 = 读取结果、相加、将总数除以采样数的平均计算所花费的时间。
总转换时间和用于平均的采样数之间存在折中,取决于模拟信号的变化范围及计算可用的时间。
注: 若需所用代码源的更详细信息,请参考附录 A。
2.1.2 平均 N-X 个 ADC 采样
此方法基于先取 N 个 ADC 采样,将它们从最大值到最小值 (或相反顺序)排序,然后删除两端的 X 个采样。
建议选择 N 和 X 为 2 的倍数。
此平均方法比之前一个更有效,因为它删除了会影响平均的两端值,而且它在执行时间和转换精度之间给出了一个较好的折中。
|