编辑: 烂衣小孩 2019-10-14
2018年5月DocID15067 Rev

1 [English Rev 3] 1/49

1 AN2834 应用笔记 如何在STM32微控制器中 获得最佳ADC精度 前言 STM32微控制器内置最多四个高级12位ADC(取决于器件).

提供自校准功能,用于提高环 境条件变化时的ADC精度. 在涉及模数转换的应用中,ADC精度会影响整体的系统质量和效率.为了提高此精度,必须 了解与ADC相关的误差以及影响它们的参数. ADC精度不仅取决于ADC性能和功能,还取决于ADC周围的整体应用设计. 此应用笔记旨在帮助用户了解ADC误差,并解释如何提高ADC精度.它分为三个主要部分: ? ADC内部结构的简述,帮助用户了解ADC操作和相关的ADC参数 ? 解释与ADC设计和外部ADC参数(例如外部硬件设计)有关的ADC误差的不同类型和来源 ? 关于如何使这些误差最小化的建议,侧重于硬件和软件方法 www.st.com 目录 AN2834 2/49 DocID15067 Rev

1 [English Rev 3] 目录

1 ADC内部原理

6 1.1 SAR ADC内部结构

6 2 ADC误差

10 2.1 ADC自身导致的误差

10 2.1.1 偏移误差

10 2.1.2 增益误差

12 2.1.3 微分线性误差

13 2.1.4 积分线性误差

14 2.1.5 总未调整误差

16 2.2 ADC环境导致的误差

17 2.2.1 参考电压噪声

17 2.2.2 参考电压/电源调节

17 2.2.3 外部参考电压参数

18 2.2.4 模拟输入信号噪声

18 2.2.5 最大输入信号幅度的ADC动态范围匹配不佳

18 2.2.6 模拟信号源电阻的影响

18 2.2.7 PCB源电容和寄生电容的影响

19 2.2.8 注入电流的影响

20 2.2.9 温度影响

20 2.2.10 I/O引脚串扰

21 2.2.11 EMI产生的噪声

21 3 如何得到最佳ADC精度

22 3.1 减少ADC相关ADC误差的影响

22 3.2 将与ADC外部环境相关的ADC误差最小化

22 3.2.1 参考电压/电源噪声最小化

22 3.2.2 参考电压/电源调节

24 3.2.3 模拟输入信号噪声消除

24 3.2.4 添加白噪声或三角波扫描来改善分辨率

25 3.2.5 将ADC动态范围与最大信号幅度进行匹配

26 3.2.6 模拟源电阻计算

28 3.2.7 源频率条件 vs. 源和寄生电容

30 3.2.8 温度影响补偿

31 DocID15067 Rev

1 [English Rev 3] 3/49 AN2834 目录

3 3.2.9 注入电流最小化

31 3.2.10 I/O引脚串扰最小化

31 3.2.11 减少EMI所致噪声

32 3.2.12 PCB布局建议

33 3.2.13 元件放置和路由

35 3.3 提高精度的软件方法

35 3.3.1 采样平均

35 3.3.2 数字信号滤波

36 3.3.3 AC测量的FFT

37 3.3.4 ADC校准

38 3.3.5 内部CPU噪声最小化

38 3.4 高阻抗源测量

39 3.4.1 ADC输入级问题

39 3.4.2 行为说明

40 3.4.3 额外误差最小化

41 3.4.4 所述问题的来源 - ADC设计

45 4 结论

47 5 版本历史

48 表格索引 AN2834 4/49 DocID15067 Rev

1 [English Rev 3] 表格索引 表1. 文档版本历史

48 表2. 中文文档版本历史

48 DocID15067 Rev

1 [English Rev 3] 5/49 AN2834 图片索引

5 图片索引 图1. SAR切换电容ADC的基本原理(10位ADC示例)6 图2. 采样状态

7 图3. 保持状态

7 图4. 第1步:与VREF/2比较

8 图5. 第2步:如果MSB = 0,则与?VREF进行比较

8 图6. 第2步:如果MSB = 1,则与?VREF进行比较

9 图7. 正偏移误差的表示方法

11 图8. 负偏移误差的表示方法

11 图9. 正增益误差的表示方法

12 图10. 负增益误差的表示方法

13 图11. 微分线性误差的表示方法

14 图12. 积分线性误差的表示方法

15 图13. 总未调整误差

16 图14. 输入信号幅度与ADC动态范围.18 图15. 模拟信号源电阻的影响

19 图16. 具有RAIN、CAIN和Cp的模拟输入.20 图17. 注入电流的影响.20 图18. I/O引脚之间的串扰

21 图19. EMI源21 图20. 100/144引脚封装的电源和参考去耦

23 图21. 36/48/64引脚封装的电源去耦

23 图22. 使用微控制器输出的简单准三角波源

25 图23. 选择参考电压

26 图24. 前置放大

27 图25. 最坏情况误差:VAIN = VREF+28 图26. RAIN和CAIN推荐值 vs. 源频率FAIN

30 图27. I/O引脚之间的串扰

31 图28. 屏蔽技巧

32 图29. 将模拟和数字布局分开

33 图30. 将模拟和数字电源分开

34 图31. ADC输入的典型电压源连接

39 图32. ADC转换期间在ADC输入引脚上观测到噪声.39 图33. 输入级的ADC简化示意图 - 采样和保持电路

40 图34. 采样过程中来自内部电荷的ADC输入引脚噪声尖峰

40 图35. 采样时间延长效应

41 图36. 外部电容在两次转换之间的充电时间过短

42 图37. 采样开关的实现.45 图38. 采样开关的寄生电容

46 图39. ADC结构内部寄生电流示例

46 ADC内部原理 AN2834 6/49 DocID15067 Rev

1 [English Rev 3]

1 ADC内部原理 1.1 SAR ADC内部结构 STM32微控制器中内置的ADC使用SAR(逐次逼近)原则,分多步执行转换.转换步骤数等 于ADC转换器中的位数.每个步骤均由ADC时钟驱动.每个ADC时钟从结果到输出产生一 位.ADC的内部设计基于切换电容技术. 下面的图(图 1至图 6)介绍了ADC的工作原理.下面的示例仅显示了逼近的前面几步,但 是该过程会持续到LSB为止. 图1. SAR切换电容ADC的基本原理(10位ADC示例) 1. 带数字输出的ADC基本原理图. ai17097 b S1 Sb CLK D Q CLR PR A S2 Sa VIN ADC?? ADC Clk S3 S4 S5 S6 S7 S8 S9 C C/2 C/4 C/8 C/16 C/32 C/64 C/128 C/256 VREF S10 S11 C/512 C/512 DocID15067 Rev

1 [English Rev 3] 7/49 AN2834 ADC内部原理

48 图2. 采样状态 1. 采样状态:电容充电至电压VIN.Sa切换至VIN,采样期间Sb开关闭合. 图3. 保持状态 1. 保持状态:输入断开,电容保持输入电压.Sb开关打开,然后S1-S11切换至接地且Sa切换至VREF. ai17098 b S1 Sb CLK D Q CLR PR A S2 Sa VIN ADC?? ADC Clk S3 S4 S5 S6 S7 S8 S9 C C/2 C/4 C/8 C/16 C/32 C/64 C/128 C/256 VREF S10 S11 C/512 C/512 A 2C VCOMP=

0 ????φ VIN ai17099b S1 Sb CLK D Q CLR PR A S2 Sa VIN ADC?? ADC Clk S3 S4 S5 S6 S7 S8 S9 C C/2 C/4 C/8 C/16 C/32 C/64 C/128 C/256 VREF S10 S11 C/512 C/512 ????φ A 2C VCOMP= CVIN ADC内部原理 AN2834 8/49 DocID15067 Rev

1 [English Rev 3] 图4. 第1步:与VREF/2比较 1. 第一个逼近步骤.S1切换至VREF. 图5. 第2步:如果MSB = 0,则与?VREF进行比较 1. 与?VREF进行比较;

如果MSB =1.S1切换回接地.S2切换至VREF. ai17800b S1 Sb CLK D Q CLR PR A S2 Sa VIN ADC?? ADC Clk S3 S4 S5 S6 S7 S8 S9 C C/2 C/4 C/8 C/16 C/32 C/64 C/128 C/256 VREF S10 S11 C/512 C/512 ????φ A C C VREF VCOMP= CVIN+ VREF/2 ai17801b S1 Sb CLK D Q CLR PR A S2 Sa VIN ADC?? ADC Clk S3 S4 S5 S6 S7 S8 S9 C C/2 C/4 C/8 C/16 C/32 C/64 C/128 C/256 VREF S10 S11 C/512 C/512 ????φ A 3C/2 C/2 VREF VCOMP= CVIN+ 1/4 VREF DocID15067 Rev

1 [English Rev 3] 9/49 AN2834 ADC内部原理

48 图6. 第2步:如果MSB = 1,则与?VREF进行比较 1. 与?VREF进行比较;

如果MSB = 0.S1保持接地.S2切换至VREF. ai17802b S1 Sb CLK D Q CLR PR A S2 Sa VIN ADC?? ADC Clk S3 S4 S5 S6 S7 S8 S9 C C/2 C/4 C/8 C/16 C/32 C/64 C/128 C/256 VREF S10 S11 C/512 C/512 ????φ A C/2 3C/2 VREF VCOMP= CVIN+ 3/4VREF ADC误差 AN2834 10/49 DocID15067 Rev

1 [English Rev 3]

2 ADC误差 本节列出了影响模数转换精度的主要误差.这些类型的误差存在于所有模数转换器中,转换 质量将取决于它们的消除情况.STM32微控制器数据手册的ADC特性部分规定了这些误差 值. 规定了STM32 ADC的不同精度误差类型.为便于参考,将精度误差表达为1 LSB的倍数.就 电压而言,分辨率取决于参考电压.通过将LSB数乘以1 LSB对应的电压来计算电压误差 (1 LSB = VREF+/212 或VDDA/212 ). 2.1 ADC自身导致的误差 2.1.1 偏移误差 偏移误差是第一次实际转换和第一次理想转换之间的偏离.第一次转换发生在数字ADC输出 从0变为1时.理想情况下,当模拟输入介于0.5 LSB和1.5 LSB之间时,数字输出应为1. 仍然是理想情况下,第一次转换发生在0.5 LSB处.用EO表示偏移误差.可通过应用固件轻 松校准偏移误差. 示例 对于STM32 ADC,电压的最小可检测增量变化用LSB表示为:

1 LSB = VREF+/4096(在某些封装上,VREF+ = VDDA). 如果 VREF+ = 3.3 V,则在理想情况下, 402.8 ?V (0.5 LSB = 0.5 * 805.6 ?V)的输入应导 致生成数字输出 1.但实际上, ADC 可能仍然提供读数 0.如果从

550 ?V 的模拟输入获得 数字输出 1,则: 偏移误差 = 实际转换 C 理想转换 EO =

550 ?V C 402.8 ?V = 141.2 ?V EO = 141.2 ?V / 805.6 ?V = 0.17 LSB 当大于0.5 LSB的模拟输入电压生成第一次转换时,偏移误差为正(请参见图 7查看正偏移 误差的示例). DocID15067 Rev

1 [English Rev 3] 11/49 AN2834 ADC误差

48 图7. 正偏移误差的表示方法 1. 偏移误差EO显示为品红色. 当小于0.5 LSB的模拟输入电压生成第一次转换时,偏移误差为负(请参见图 8查看负偏移 误差的示例). 如果模拟输入电压(VAIN)等于VSSA并且ADC生成非零数字输出,则偏移误差为负.这意味 着负电压生成第一次转换. 图8. 负偏移误差的表示方法 1. 偏移误差EO显示为品红色. ai15475b ???? VAIN ?????? ??????0.5LSB EO >

0 0

1 2 ai15476b ???? ?????? ??????0.5LSB EO >

0 0

1 2 VAIN ADC误差 AN2834 12/49 DocID15067 Rev

1 [English Rev 3] 2.1.2 增益误差 增益误差是最后一次实际转换和最后一次理想转换之间的偏离.增益误差用EG表示. 最后一次实际转换是从0xFFE到0xFFF的转换.理想情况下,当模拟输入等于VREF+ C 0.5 LSB时,应存在从0xFFE到0xFFF的转换.因此对于VREF+= 3.3 V,最后一次理想转换应发生 在3.299597 V处. 如果ADC提供VAIN <

VREF+ C 0.5 LSB的0xFFF读数,将获得负增益误差. 示例 按以下公式计算增益误差: EG = 最后一次实际转换 C 理想转换 如果VREF+ = 3.3 V且VAIN = 3.298435 V时生成从0xFFE到0xFFF的转换,则: EG = 3.298........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题