使用 STM32F2xx 和 STM32F4xx 微控制器时如何提高 ADC 测量精度 d! F) d3 h4 X 前言 _9 m- Q; k; U) l4 X8 U! c& N3 o! @ 2 ?) n; T/ C8 C 本应用笔记旨在展示对于使用 STM32F2xx 和 STM32F4xx 微控制器的应用,怎样提高其A/D 转换的精度。 # U8 J# }" N0 L5 T3 U9 g) i/ E 本文还讲解了可应用于降低 ADC 误差的固件方法,给出了为得到更好的 ADC 精度,编写固件的一些通用技巧。 请注意,本应用笔记提供的数据仅供参考。除非特别指出,测量条件皆为实验室典型条件而非生产环境。 # v$ ^" v2 w4 @( ?. x4 P1 w: k! g8 ^ 表 1 列出了本应用笔记涉及的微控制器。 1 会影响 ADC 精度的参数概述 $ e/ |5 X* ~: S, a" L模数转换的精度会影响系统的质量和效率。为提高精度,您需要理解与 ADC 有关的误差,以及对它们有影响的参数。 / }3 [1 q6 A2 c1 `1 DADC 本身无法确保结果的精度。它取决于您的系统设计。因此,在您开始开发之前,需要仔细的做些准备。 ' B$ D5 S+ ]! [* q6 j) Z具体影响 ADC 精度的参数与应用密切相关。比较常见的因素有:PCB 布局、参考电压源、I/O 切换所造成的影响和模拟输入源的输出阻抗。 若需 ADC 误差的更详细信息,请参考应用笔记 AN2834:如何在 STM32F10xxx 器件中得到最佳的 ADC 精度及 AN3137:STM8L 器件上的 A/D 转换器。 3 ~2 s( k+ X; U! x0 g2 提高转换精度的固件技巧 2.1 平均 平均是一个简单的技巧,即您对模拟输入多次采样,取所有转换结果的均值。此技巧有助于消除模拟输入上的噪声或错误转换的影响。 2 M% Z3 Z2 o' e5 ^8 N; o2.1.1 平均 N 个 ADC 采样 当使用此方法时,采样数最好为 2 的倍数 (N 应为 2 的倍数)。这会使平均计算更有效率,因为对转换值之和求平均时的除法可通过向右移位做到。这节省了 CPU 时间和执行除法算法所需的代码存储器 (在 Cortex-Mx 内核中,右移操作仅花费 1 个 CPU 周期)。 此平均技巧用于测量一个模拟输入引脚上的电压。总共 N 个转换计算平均。这在固件中用循环做到。 总转换时间 = (采样数 * ADC 转换时间) + 计算时间。 计算时间 = 读取结果、相加、将总数除以采样数的平均计算所花费的时间。 总转换时间和用于平均的采样数之间存在折中,取决于模拟信号的变化范围及计算可用的时间。 4 O) O( V b$ |! @注: 若需所用代码源的更详细信息,请参考附录 A。 2.1.2 平均 N-X 个 ADC 采样 7 Y; Z, a; T( z, t: C: C1 ?1 u此方法基于先取 N 个 ADC 采样,将它们从最大值到最小值 (或相反顺序)排序,然后删除两端的 X 个采样。 & K. D! U$ w- Y/ d" T+ {! u2 ^( \1 A建议选择 N 和 X 为 2 的倍数。 ' | K" y1 o6 c' T3 b. G/ K% g2 r此平均方法比之前一个更有效,因为它删除了会影响平均的两端值,而且它在执行时间和转换精度之间给出了一个较好的折中。 9 b, g& m& h. Q0 F! X/ y2 @: d |
点赞 |
支持~~~~~~~~~~~ |
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)