打印
[应用方案]

NV32应用--ADC模块的几个误差来源

[复制链接]
1405|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tomyoct|  楼主 | 2018-2-28 15:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
        采样误差
        为正确转换,输入的采样时间必须长到能实现正确的精度。假设最大输入电阻约为7kΩ、输入电容约 为5.5pF,则在最小采样窗口(在最大ADCK 频率8MHz时为3.5个周期)内可将采样误差控制到1/4最低有效 位内(12位分辨率),同时还假设外部模拟源(RAS) 的电阻始终小于2kΩ。通过设置ADC_SC3[ADLSMP](以将采样窗口增加到23.5个周期),或减小ADCK频率以增加采样时间,可提高源电阻或采样精度。

相关帖子

沙发
tomyoct|  楼主 | 2018-2-28 15:58 | 只看该作者
        引脚漏电误差
        如果外部模拟源电阻(RAS)偏高,I/O 引脚上的漏电流可能会导致转换出错。如果应用程序无法接受这 一误差,则使RAS 低于VDDA / (2N*ILEAK)以便使之小于1/4最低有效位漏电流误差(N = 8(8位),N = 10 (10 位),N = 12(12 位)模式)。

使用特权

评论回复
板凳
tomyoct|  楼主 | 2018-2-28 16:00 | 只看该作者
        噪声性误差
    采样或转换过程中出现的系统噪音可能会影响转换精度。只有满足下列条件,ADC精度数才能按规定得 到保证:
 VREFH到VREFL之间有一个0.1μF的低ESR电容器。
 VDDA 到VSSA 之间有一个0.1μF的低ESR电容器。
 如果主电源使用了电感隔离,则VDDA到VSSA之间还要放一个1μF的电容器。
 VSSA(和VREFL,如果连接) 连接到接地层中某安静点处的VSS。
 在发起(硬件触发转换)ADC转换前,或发起(硬件或软件触发转换)ADC转换后立即让MCU
在等待或停止模式下运行。
 对于软件触发的转换,对ADC_SC1 执行写操作后立即使用停止指令。
 对于停止模式操作,选择ADACK 作为时钟源。停止模式下的操作可减少VDD噪音,但也会因 停止恢复而增多有效转换时间。
 转换期间,MCU上无I/O切换、输入或输出。
在某些情况中,外部系统活动会引起辐射或传导噪音排放或使过大的VDD噪音耦合到ADC中。在这类情况
下,或者当无法将MCU置于等待或停止模式时,或者无法暂停I/O活动时,建议的这些动作可能会降低噪音 对精度的影响:
    在VREFL或VSSA的选定输入通道上放一个0.01μF的电容器 (CAS)(此举可改善噪音问题,但会 影响基于外部模拟源阻抗的采样率)。
 将模拟输入接连转换多次并除以结果总数得出结果的平均值。需要四个样本来消除1LSB的影 响,一次性错误。
 通过偏离异步时钟(ADACK)进行操作并取平均值来降低同步噪声的影响。与ADCK同步的噪音的 平均值无法算出。

使用特权

评论回复
地板
tomyoct|  楼主 | 2018-2-28 16:02 | 只看该作者
        代码宽度和量化误差
        ADC将理想的直线式传递函数量化为4096步(12 位模式下)。每一步在理想情况下都具有相同的高度 (1个代码)和宽度。宽度定义为某个代码的转变点与下一个代码的转变点之间的距离差。定义为1LSB的N 位转换器的理想代码宽度(在本例中,N可以是8、10或12)是
        
        结果的数字化导致存在固有的量化误差。对于8位或10位转换,该代码在电压位于各转变点之间的中点 时转变,直线式传递函数在各转变点由实际的传递函数精确表示。因此,量化误差在8位模式或10位模式下 将为± 1/2lsb。然而,首次(0x000)转换的代码宽度只有1/2lsb,最后次(0xFF或0x3FF)转换的代码宽度 为1.5lsb。对于12位转换,代码只有在具有完整代码宽度时才会进行转变,因此量化误差为-1lsb到0lsb, 每个振幅的代码宽度为1lsb。

使用特权

评论回复
5
tomyoct|  楼主 | 2018-2-28 16:02 | 只看该作者
        线性误差
        ADC还还体现出多种形式的非线性。虽然已尽可能减少这类误差,但系统必须意识到误差的存在,因为 误差会影响整体精度。这些误差为:
 零刻度误差(EZS)(有时也称为偏移量)— 该误差是指第一个转换的实际代码宽度与理想代码宽 度(8位或10位模式下为1/2lsb;12位模式下为1lsb)之间的差值。如果第一个转换为0x001,则 使用实际的0x001代码宽度与其理想宽度(1lsb)之间的差值。
 满刻度误差(EFS) — 该误差是指最后一个转换的实际代码宽度与理想代码宽度(8位或10位模式 下为1.5lsb;12位模式下为1lsb)之间的差值。如果最后一个转换为0x3FE,则使用实际的0x3FE 代码宽度与其理想宽度(1lsb)之间的差值。
 差分非线性(DNL) — 该误差是指所有转换的实际代码宽度与理想代码宽度之间的最差情况差值。  积分非线性(INL) — 该误差是指DNL运行和的绝对值所达到的最大值。更简而言之,它对所有代
码来说,是给定代码的实际转换电压与其对应理想转换电压的最差情况差值。
 未调整总误差(TUE) — 该误差是指实际传输函数与理想直线传递函数之间的差值,包括所有形式
的误差。

使用特权

评论回复
6
tomyoct|  楼主 | 2018-2-28 16:03 | 只看该作者
        代码抖动、非单调性和失码
        模数转换器易受三种特殊形式错误的影响。它们是代码抖动、非单调性和失码。
        代码抖动发生在给定的输入电压在某些点经过重复采样后转换为两个值中的某一个值时。理想情况下,当输入电压小于但无限接近转变电压时,转换器会产生更低代码(反之亦然)。然而,对于接近转变电压 的各种输入电压,即使少量的系统噪声也可能会使转换器在两个代码间变得不确定。在8位或10位模式下, 此范围一般约为±1/2lsb;在12位模式下,则约为2lsb,随噪声的增大而增大。
        通过对输入重复采样并求结果的平均值可以减少出现此错误的几率。此外,噪声性误差中介绍的方法也 可以减少出现此错误的几率。
        除了代码抖动外,当转换器为较高的输入电压转换到较低的代码时,会出现非单调性问题。失码是指不 会为任何输入值进行转换的那些值。在8位或10位模式下,ADC保证是单调的并且无失码。

使用特权

评论回复
7
lkjoi| | 2018-2-28 21:31 | 只看该作者
把硬件和软件的滤波加进去

使用特权

评论回复
8
smilingangel| | 2018-3-18 15:51 | 只看该作者
通过偏离异步时钟(ADACK)进行操作并取平均值来降低同步噪声的影响。与ADCK同步的噪音的 平均值无法算出。

使用特权

评论回复
9
smilingangel| | 2018-3-18 15:54 | 只看该作者
停止模式下的操作可减少VDD噪音,但也会因 停止恢复而增多有效转换时间。

使用特权

评论回复
10
tomyoct|  楼主 | 2018-5-29 17:05 | 只看该作者
lkjoi 发表于 2018-2-28 21:31
把硬件和软件的滤波加进去

这个不是芯片本身带来的,不加进去也是可以的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

232

帖子

0

粉丝