使用 STM32F2xx 和 STM32F4xx 微控制器时如何提高 ADC 测量精度; v8 a# x [/ e) f' f! z ]1 d 前言 / U) H* I4 K R2 B 本应用笔记旨在展示对于使用 STM32F2xx 和 STM32F4xx 微控制器的应用,怎样提高其A/D 转换的精度。 本文还讲解了可应用于降低 ADC 误差的固件方法,给出了为得到更好的 ADC 精度,编写固件的一些通用技巧。 4 Y6 e* N- P, H( i 9 ]) w" E! v' K 请注意,本应用笔记提供的数据仅供参考。除非特别指出,测量条件皆为实验室典型条件而非生产环境。 ( h& J) B! i+ ~. M3 j 0 h! m) l4 ?7 _2 X6 M 表 1 列出了本应用笔记涉及的微控制器。 1 会影响 ADC 精度的参数概述 模数转换的精度会影响系统的质量和效率。为提高精度,您需要理解与 ADC 有关的误差,以及对它们有影响的参数。 3 f, F' y- I1 C! X! V, uADC 本身无法确保结果的精度。它取决于您的系统设计。因此,在您开始开发之前,需要仔细的做些准备。 7 F9 A" ~: K$ n" r0 }具体影响 ADC 精度的参数与应用密切相关。比较常见的因素有:PCB 布局、参考电压源、I/O 切换所造成的影响和模拟输入源的输出阻抗。 1 [$ g* Z- C. ^" M% k若需 ADC 误差的更详细信息,请参考应用笔记 AN2834:如何在 STM32F10xxx 器件中得到最佳的 ADC 精度及 AN3137:STM8L 器件上的 A/D 转换器。 6 D2 D. Q7 A. @& v+ m8 Z% m6 u4 R. V2 提高转换精度的固件技巧 * M# T. s- ]) K5 D4 Y2.1 平均 平均是一个简单的技巧,即您对模拟输入多次采样,取所有转换结果的均值。此技巧有助于消除模拟输入上的噪声或错误转换的影响。 2.1.1 平均 N 个 ADC 采样 当使用此方法时,采样数最好为 2 的倍数 (N 应为 2 的倍数)。这会使平均计算更有效率,因为对转换值之和求平均时的除法可通过向右移位做到。这节省了 CPU 时间和执行除法算法所需的代码存储器 (在 Cortex-Mx 内核中,右移操作仅花费 1 个 CPU 周期)。 此平均技巧用于测量一个模拟输入引脚上的电压。总共 N 个转换计算平均。这在固件中用循环做到。 总转换时间 = (采样数 * ADC 转换时间) + 计算时间。 9 N9 ^1 G Z9 _8 Y/ w; l2 c1 y计算时间 = 读取结果、相加、将总数除以采样数的平均计算所花费的时间。 总转换时间和用于平均的采样数之间存在折中,取决于模拟信号的变化范围及计算可用的时间。 0 G2 d/ Y+ n% U Q0 W5 t2 E o注: 若需所用代码源的更详细信息,请参考附录 A。 2 W8 o! H7 K- v8 R2.1.2 平均 N-X 个 ADC 采样 ' j5 r: [/ k, _7 n/ S1 c此方法基于先取 N 个 ADC 采样,将它们从最大值到最小值 (或相反顺序)排序,然后删除两端的 X 个采样。 , F+ Q! w. t) d- p3 @! k建议选择 N 和 X 为 2 的倍数。 / @. a9 L) v& s此平均方法比之前一个更有效,因为它删除了会影响平均的两端值,而且它在执行时间和转换精度之间给出了一个较好的折中。 |
点赞 |
支持~~~~~~~~~~~ |
STM32固件库分享,超全系列整理
【中文文档】AN3965_STM32F40x和STM32F41x基于串口的IAP
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32F4中文用户手册
基于STM32F407的FreeRTOS阶段性的总结(13)
STM32F400、STM32F402 Cortex-M4超值单片机
基于STM32F407的FreeRTOS获取各任务运行时间及占用情况(4)
基于STM32F407的FreeRTOS任务的挂起与恢复(3)
基于STM32F407的FreeRTOS任务的创建与删除经验分享(2)
基于STM32F407的FreeRTOS环境搭建经验分享(1)