STM32Fx微控制器如何获得最佳ADC精度

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

STM32Fx微控制器如何获得最佳ADC精度山西大学电子信息工程系王晓峰wangxiaofeng@sxu.edu.cnAN2834简介STM32Fx系列和STM32L1系列微控制器家族整合了多达4个先进12位ADC(参见具体型号)。提供的自校准特性增强了不同环境下ADC精确性。在包含模拟到数字转换场合,ADC准确性受制于系统综合质量和效率。要提高精确性,你需要联系ADC和相关参数才能理解相关误差。ADC精确性不单单是依赖于ADC性能和参数,也依赖于围绕ADC的整体设计。此应用文档致力于帮助理解ADC误差以及如何增强ADC精确性。文档主要分为3部分:*对ADC内部结构的简述,有助于理解ADC的运作和ADC相关参数。*解释了ADC误差的不同类型和来源,以及外部硬件设计的相关ADC参数。*对于最小化这些误差提出的建议,主要是硬件和软件方法此文档涉及的产品列表如下:1ADC内部原理1.1SARADC内部结构STM32Fx的ADC使用了SAR(逐次逼近寄存器)原理,AD转换分为多步实现。转换步数等于ADC转换器位宽。每一步由ADC时钟驱动。每个ADC时钟产生结果中的一位。ADC内部设计为开关-电容型。下图解释了ADC运作原理。下方展示的仅是逼近的第一步,但此过程会持续转换到最低位。2ADC误差此部分列出了影响AD转换精确性的主要误差。这些类型的误差出现在所有的AD转换中,转换的质量依赖于如何消除他们。这些误差的数值在ATM32x设备数据手册的ADC参数中列出。不同的误差类型以STM32x为准来定义。为了便于参考,误差以1LSB的数量表达。电压分辨率依赖于参考电压。电压误差以LSB数量和1LSB电压相乘来计算。2.1与AD转换器相关的ADC误差2.1.1偏移误差定义为第一次实际转换和第一次理想转换之间的偏差。当数字输出由0变化到1出现第一次输出变化。理想的情况,当模拟输入处于0.5LSB和1.5LSB之间,数字输出应该为1。仍然理想情况下,在0.5LSB出现第一次输出变化。偏移误差以EO来表示。通过固件程序,可以容易的计算偏移误差。例子对于STM32xADC,最小的可侦测电压增量变化以LSB为单位来表示。1LSB=VREF+/4096(对一些封装,VREF+=VDDA)如果VREF+=3.3V,理想的,402.8uV(0.5LSB=0.5*805.6uV)的输入电压将产生数字输出1。但实际上,ADC仍然可能输出0。如果在输入电压为550uV时,数字输出变为1,则:偏移误差=实际转变电压-理想转变电压EO=550-402.8=141.2uVEO=141.2/805.6uV=0.17LSB当模拟输入电压大于0.5LSB产生第一次转变,偏移误差是为正,下图展示了正偏移误差。当模拟输入电压小于0.5LSB产生第一次转变,偏移误差为负,下图展示了负偏移误差。如果模拟输入电压VAIN=VSSA但ADC产生了非零数字输出,偏移误差为负。这意味着负电压产生了第一次转换。2.1.2增益误差增益误差被定义为最后一次实际转变和最后一次理想转变的差。增益误差表示为EG。最后一次实际误差是指数字由FFEh到FFFh。理想的,当模拟输入达到VREF+–0.5LSB时,应该发生FFEh到FFFh转变。对于3.3V参考电压,理想转变发生在3.299597V。如果ADC输出FFFh时,输入电压小于VREF+–0.5LSB,那么这是负增益电压。示例增益误差EG=实际最后转变电压-理想最后转变电压如果VREF+=3.3V。VAIN=3.298435V产生FFEh到FFFh转变,那么:EG=3.298435-3.299597EG=-1162uVEG=(-1162uV/805.6uV)LSB=-1.44LSB如果在最大输出FFFh时,对应的输入电压没有达到参考电压,则增益误差为正。意味着最后转变电压大于参考电压。2.1.3差分线性误差差分线性误差(DLE)定义为实际步长和理想步长数之间的最大差值。这里的“理想”不是指理想转换曲线,而是ADC分辨率。DLE表示为ED。ED=实际步长-1LSB理想的,一个模拟输入电压改变1LSB,应该引起数字输出改变。如果一个模拟输入电压大于1LSB,ADC就有了差分线性误差。DLE因此对应相对于1LSB,最大的额外电压。DLE也称为差分非线性误差。示例一个给定的数字输出应该对应一个模拟输入范围,步长应该是1LSB。让我们假定在1.9998V到2.0014V之间得到一个数字输出,则步长为2.0014V–1.9998V=1.6mV。模拟电压低于1LSB对应电压。如果VREF+=3.3V,模拟输入1.9998V(9B1h)提供9B0h到9B2h之间的变化结果。相似的,2.0014V(9B3h)导致9B2h到9B4h之间的变化结果。那么,对应9B2h的总的电压变换范围是:9B3h-9B1h,也就是,2.0014-1.9998V=1.6mV(1660uV)ED=854.4uVED=854.4/805.6=1.06LSB如果假设不大于2.0014V的电压将产生9B2数字代码,当步长小于1LSB,ED为负。2.1.4积分线性误差积分线性误差是任意实际转变值与终点的连接线。ILE表示为EL,如下图所示。端点连接线可以被定义为这样一条线:第一次实际转换与最后一次实际转换的连接线。EL来自于这条线与每一次转换的差值。端点相关线就反映出了实际转换曲线与理想转换曲线的关系。ILE也可以表示为积分非线性误差(INL)。ILE是DLE覆盖全域的积分。示例:如果第一次0~1变换发生在550uV,并且最后变换(FFEh到FFFh)发生在3.298435V(增益误差),那么端点相关线为1h到FFFh对应点的连接线。2.1.5总不可调误差总不可调误差定义为实际和理想转换曲线的最大差值。此参数指出总的可能出现的,引起实际转换与理想转换之间的最大的差值。可能会引起的理想预期值与实际数字输出之间的最大偏差值,在任意输出电压条件下。TUE表示为ET,见下图。TUE不是EO,EG,EL,ED算术和,偏移误差只影响低电压下的数字输出,增益误差主要影响高电压的数字输出。示例:如果VREF+=3.3V,VAIN=2V,理想结果为9B2h,但是如果,转换中,我们得到的结果为9B4h,偏差可能是DLE和ILE误差同时发生的误差结果。TUE=绝对值(实际值-理想值)=9B4h-9B2h=2LSB2.2与环境相关的ADC误差2.2.1参考电压噪声当ADC输出为模拟信号电压和参考电压的比例,任何模拟参考端的噪声都会引起转换后数字输出的变化。VDDA模拟电源常被一些封装用于参考电压,电源的质量就会影响ADC误差。例如,对于3.3V模拟参考电压和1V信号电压,转换结果应该是(1/3.3V)*4095=4D9h。但是如果模拟参考电压上由40mV纹波,转换值变为(1/3.34)*4095=4CAh(VREF+处于峰值),误差=4D9-4CA=15LSB开关电源通常由内置快速开关电源晶体管。这导致了输出上的高频噪声。开关噪声一般为15KHz到1MHZ。2.2.2参考电压/电源管理电源管理对于ADC精确性非常重要,考虑到模拟输入电压与VREF+是比例关系。如果电源输出降低,比如当连接的VDDA或VREF+被负载拉低,误差就会被引入转换结果。数字输出代码=,其中N是ADC的分辨率(在这里,N=12)。如果参考电压改变,数字结果也发生改变。例如:如果参考电压3.3V和VAIN=1V,数字输出为:如果电源电压变为3.292V(若连到VREF+),那么:引入误差4DC-4D9=3LSB2.2.3外部参考电压因素如果使用外部参考电源,此外部参考源是重要因素。其中重点关注温度漂移,电压噪声,长期稳定性。2.2.4模拟输入信号噪声小幅高频率信号变化可能会引起较大的转换误差。此噪声是由电子设备产生,例如,电机,引擎启动,电力线缆等,因为引入无用的信号影响基准源。导致ADC结果不再精确。2.2.5ADC动态范围与最大输入信号幅值匹配不良ADC动态范围与信号最大幅值匹配对于发挥ADC最大转换精度有很重要的影响。让我们假定被转换的信号范围在0V到2.5V之间,VREF+为3.3V。最大信号的AD转换值是3102(2.5V),如下图所示。在此情况下,993的转换空间没有使用(4095-3102=993).这意味着信号转换中精确性下降。参见3.2.5部分的细节来获知如何充分利用ADC动态范围。2.2.6模拟信号源阻抗的影响模拟信号源阻抗,或为串联电阻,存在于信号源和引脚之间,因为电流流经电阻导致拉低信号电压。另外,控制内部采样电容的充电过程的开关也存在电阻RADC。随着信号源电阻的增加,充满采样电容的时间也相应增长。下图展示了模拟信号源电阻产生的影响。实际CADC充电由RADC+RAIN控制,充电时间常数变为tc=(RADC+RAIN)*CADC。如果采样时间小于充满电的时间要求,ADC的数字输出值将小于实际数值。1、tc为CADC电容充满需要的时间:VC=VAIN(最大1/2LSB误差)VC:电容电压tc=(RADC+RAIN)*CADC(一阶动态电路的τ)2.2.7信号源电容和PCB电路板寄生电容的影响转换模拟电压期间,有必要算入信号源电容和模拟输入引脚向外看的等效寄生电容。信号源电阻和RC网络电容导致ADC转换结果不准确,除非外部电容充电到了输入电压的水平。越大的CAIN+CP值,越大的信号源频率限制(截止频率减小)。信号源外部电容和寄生电容分别表示为CAIN和CP。2.2.8灌电流效应任何引脚上的负灌电流(或一个靠近的数字输入引脚)可能导致漏电流进入ADC输入引脚。影响最大的是相邻的模拟通道。当VAINVSS时,负灌电流被引入,导致电流从IO引脚流出。2.2.9温度影响温度对ADC精确性由很大的影响。主要导致2个主要误差:漂移误差趋势和增益误差趋势。这些误差可在程序中软件补偿。(参见3.2.8部分)2.2.10IO引脚串扰操作IO可能引起一些噪声耦合到模拟输入引脚,原因是引脚间的容性耦合。串扰可能是由PCB布线过于接近或交叉导致。内部数字电路和IO的切换会导致高频噪声引入。开漏IO引脚动作可能导致电涌,并导致电压微降。数字信号横跨模拟信号线也会影响模拟信号。Case1:数字和模拟信号布线过近Case2:数字和模拟信号线在不同的PCB层上交叉。2.2.11EMI引起的噪声相邻电路的电磁辐射可能引入高频噪声进入模拟信号中,原因是PCB线路起到类似天线的作用。3如何获得最佳ADC精度。3.1减少ADC本身相关的ADC误差TUE不是所有EO,EG,EL,ED的算术和。它是理想转换和实际转换存在的最大偏差值,可能是一个或多个误差同时出现造成的结果。因为ILE是DLE的积分,它可以考虑作为最大误差的指示。不要把DLE和ILE加在一起来计算任何数字输出情况可能的最大误差。数据手册中列出的最大误差值是在实验室测试条件、给定电压和温度范围下测量到的最差的误差数值(参见器件数据手册)。ILE和DLE依赖于ADC设计。使ILE和DLE的校准十分困难。它们可通过已测量ADC的曲线来进行校准,但这需要在最终应用环境中单独校准每一个设备。偏移误差和增益误差可以很容易的被补偿,可通过微控制器程序来使用STM32XADC自校准功能实现。3.2最小化与外部环境相关的ADC误差3.2.1参考电压/电源噪声的最小化电源侧:线性稳压器在噪声方面表现更好。主电源必须经过降压,整流和滤波,然后进入线性稳压器。非常建议连接一个滤波电容来改善输出电压。请参考拟使用的线性稳压器数据手册。如果您使用了开关电源,推荐模拟部分由线性稳压器供电。推荐在电源和地线间连接高频电容。建议使用0.1uF电容和1~10uF电容,并布置在尽量靠近电源的位置。电容器应该允许交流信号通过。其中,小容量电容滤除高频噪声;大容量电容滤除低频噪声。陶瓷电容器常用于小容量(1pF到0.1pF)和低电压(16V到50V)场合。推荐将电容布置在靠近主电源(VDD和VSS)和模拟部分电源(VDDA和VSS

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功