This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] TMS320F28035:ADC 校准和总体未调整误差

Guru**** 1139930 points
Other Parts Discussed in Thread: REF5030, OPA320
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/587441/faq-tms320f28035-adc-calibration-and-total-unadjusted-error

器件型号:TMS320F28035
主题中讨论的其他器件:REF5030OPA320

在查看 F2803x 数据表时、我尝试确定两个方面:

  1. 可以为 ADC 校准部署哪些策略、包括实施这些策略所需的步骤?
    1. 自重校准
    2. 偏移校准(如果进行了自重校准、是否没有其他方法可以改善此情况?)
    3. 两点增益校准
    4. 温度补偿
    5. 等等...
  2. 部署所有必要的 ADC 校准后、产生的总体未调整误差是多少?

假设会发生定期自我校准。  看起来 INL 和 DNL 不是累加的。  这会使 INL 在4个计数时成为这两个最差的。  我不理解其他哪些误差是累加的:

  1. 通道间偏移和增益变化似乎不是一个添加到给定通道的总体未调误差中的绝对误差。
  2. 增益误差看起来是累加的、添加的总未调整误差将是两点增益校准基准精度的一个因素。
    1. 如果仅在一个通道上进行增益校准、通道间的变化是否会重新起作用?
  3. 温度系数似乎与总未调整误差相加。  它在某种程度上可以通过温度测量进行补偿。
    1. 定期自重校准中考虑了多少温度系数?

总之、我想了解在确定绝对最坏情况下的总体未调整误差时会发生什么情况、以及可以部署哪些策略来最大程度地减小误差?

谢谢、

Stuart

C2000培训视频:https://training.ti.com/search-catalog/field_language/ZH-CN?keywords=C2000&start%5Bdate%5D=&end%5Bdate%5D=

C2000培训小程序码

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Stuart:

    首先要了解的是我们如何计算总体未调整误差(TUE)。  在 ADC 中、我们通常考虑增益误差、偏移误差、INL 和 DNL。  我们还需要考虑 ADC 外部基准引入的误差。  我们不需要考虑 ADC 通道间偏移或增益误差、因为这只是通道之间差异的度量(最坏情况规格适用于所有通道)。  

    最坏情况下的 ADC 误差通常是独立的(例如、具有最坏情况 INL 的 ADC 不太可能也具有最坏情况下的增益误差)。  因此、我们不直接添加最坏情况下的误差、因为这会导致 TUE 过于悲观。  相反、我们使用平方和根来添加误差。  

    在考虑校准之前、我们先比较一下 C28x Piccolo 系列 ADC 的原始 TUE。  F2803x、F2802x、F2806x 和 F2805x 的规格相似、因此它们并不都有自己的表条目。  请注意、在所有 C28x 数据表中、指定了最小/最大 ADC 误差、包括电压、温度和制造工艺变化的漂移。  如果还提供了温度系数、则不会在最坏情况误差的基础上添加该系数(而是给出温度漂移导致的误差量)。  另请注意、F2803x (和上面提到的类似器件)需要至少一次偏移自校准(我们不支持工厂偏移调整)。  下表中的所有值均为外部基准。

    (1)执行一次性自校准

    外部基准增益误差有一些假设。  这假定一个非常好的外部基准解决方案。

    例如、REF5030具有以下主要规格:

    • 初始精度= 0.05%=> 0.05%*4096 LSB = 2.0 LSB
    • 温度漂移= 3ppm/度 C =>对于标准温度范围(85C - 25C)*3ppm*4096 LSB = 0.7 LSB

    然后、OPA320 (我们建议驱动 F2807x 和 F28004x 上的12位基准)具有

    • Vos (最大值)= 150uV => 0.2 LSB @ 3.0V

    因此、最坏情况基准总误差可估算为 sqrt (2^2 + 0.7^2 + 0.2^2)= 2.1 LSB (而1.0 LSB 只是典型基准误差的猜测值)。  

    显然、如果使用不同的基准解决方案、也可以计算实际精度。  获得比上述示例更准确的东西是可能的、但很快就会变得非常昂贵。  

    现在、为了校准偏移误差、所有这些器件都有一个到 VREFLO 的内部连接(无需外部通道)。  在 F2803x 数据表中、我们指定了具有一次性偏移校准的+/-20LSB。  为了获得更好的性能、我们可以定期校准:

    过程:定期对内部 VREFLO 连接采样。  使用这些样本相应地调整 ADC 偏移调整寄存器。  调整硬件调整寄存器将直接调整 ADC 样本、因此无需额外的软件后处理。

    限制:通道间失调电压变化将限制我们能够实现完美失调电压修整的程度。  在 F2803x 上、通道间偏移被指定为+/-4 LSB。

    要求:

    • 您可以使用内部连接、因此无需外部引脚。  
    • 您还需要配置其中一个 SOC 来定期对信号进行采样。  在 F2803x 上、如果您已经在使用所有16个 SOC、这可能是一个问题。  在内部 VREFLO 连接和外部引脚之间也无法自动(在 SOC 配置中)切换。  通过交换 ADC ISR 中的某些软件设置、然后触发更多样本、可以克服这些问题  

    注意: 如果偏移误差为负、则 VREFLO 的 ADC 转换将读取为0、并且您不知道真正的偏移误差是-1还是-20。  如果您定期在线校准偏移误差、最简单的处理方法是向偏移误差+1而不是0进行修整。  如果偏移误差较大且为负、则连续几轮校准最终会将偏移误差驱动为+1。  然后、您可以接受额外的1 LSB 错误、也可以使用 CPU 对结果进行后处理。  ADC 范围将减小1 LSB。  

    校准增益误差更涉及一点。  

    程序:提供接近满量程范围的单个校准电压。 由于我们已经有一种校准偏移误差的内部方法、因此我们不需要进行2点增益修整。  实际上、使用更多的校准点将有助于平均化 INL 误差。  应定期对该校准电压进行采样。  然后、CPU 可以对 ADC 结果进行后处理、以消除增益误差。   

    限制:  

    对校准信号进行采样的误差来自以下几个来源:

    • F2803x 上的通道间增益变化=>+/-4 LSB
    • F2803x 上的 INL +/-4 LSB
    • 校准源中的误差=>可能不会优于+/2.1 LSB
    • 失调电压误差会产生复杂的影响、但通常会抵消...如果失调电压误差为正、校准电压读数为高电平、增益校准将抵消校准点(接近满量程范围)的失调电压误差。   

    因此、对于校准电压的采样误差、我们可以做的最好的操作是 sqrt (4^2 + 4^2 + 2.1^2)= 6.0LSB

    满量程范围上的误差根据校准的位置而增大。  因此、如果 FSR 为3.0V 且校准电压为2.5V、则总增益误差将为3.0V/2.5V * 6.0LSB = 7.2 LSB。

    注意:由于上述原因、我们希望进行尽可能接近满量程的校准。  然而、满量程和校准电压之间需要有足够的空间来允许任何未经校准的漂移。  对于 F2803x、自然增益误差为40 LSB = 30mV @ 3.0V VREFHI。  

    要求:  

    • 外部通道对校准电压进行采样
    • 您还需要配置其中一个 SOC 来定期对信号进行采样。
    • CPU 必须通过 post-processing...no 调整所有 ADC 结果提供硬件方法来补偿增益误差。  
    • 外部校准电压需要准确。  这可以通过两种方式实现:
      • 第二个精密电压 IC (请参阅下图)
        • 在这种情况下、驱动 ADC 引脚可能不需要运算放大器(只需在 ADC 引脚上直接使用大电容器)
        • 校准还将处理外部基准 IC 中的任何增益误差、以便在这种情况下 IC 可以是更便宜、更不精确的 IC (在 reason...it 中、取决于您在校准电压和满量程范围之间有多少空间)。  
      • VREFHI 基准 IC 的精密分压器(请参阅下面的第二个图)
      • 您肯定需要在单个封装中使用匹配的电阻器来获得良好的性能

    现在、我们可以使用在线校准将 F2803x 的误差填回表中:

    (1)执行定期重新校准

    (2) ADC 增益校准中包含的误差

    其他一些说明:

    • 定期进行校准应考虑任何内部 ADC 温度系数。  
      • 校准应足够快、以处理系统中预期的热变化率。  通常、每秒重新校准几次应该足够快。
      • (您仍然需要考虑校准电压的外部温度系数)
    •  该 ADC 的直流代码扩展约为4 LSB。  获取校准读数时、最好取许多点并求平均值。  我建议平均256点或更多点。
      • (对于每4倍过采样、您会获得1位 SNR、因此4^4 = 256个样本会产生大约4 LSB 的噪声*(0.5^4)= 0.25 LSB 的噪声。 64个采样平均值将为您提供大约0.5 LSB 的噪声。)   
    • 在 ADC 输入上获得良好的趋稳非常重要、因为趋稳误差是随机的或来自之前样本的串扰。  这无法更正。  这也适用于您的校准输入、因此请确保这些校准输入上的趋稳远小于1 LSB。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Devin - San、

    以上是我有2个问题。

    Q1) 在以下公式中不需要 DNL?  因为 DNL 包含在 INL 中。

    在下面链接的说明中、INL 未包含在内

    e2e.ti.com/.../adc-accuracy-part-2-total-unadjusted-error-explained

    Q2) TUE (F2803x±9.2LSB)根据上述方法进行计算、但是否需要在 TUE 计算中包含 INL?

    当 ADC GE (F2803x±7.2LSB)计算包括 INL 时、我认为如果在 TUE 计算中包含 INL、INL 将会重叠。

    此致、

    Sasaki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sasaki-San、

    很棒的问题!

    我已经看到过使用和不使用 DNL 估算 TUE、我认为您可以通过任何一种方式提出合理的论据。 正如您所说的、INL 是 DNL 的集成、因此它包含 DNL。 另一方面、由于 INL 被指定为积分的最小值/最大值、最坏情况往往会命中 ADC 传递函数中的某些特定点、而 DNL 往往是更随机的转换到转换。 我认为在典型计算中包含 DNL 并从 MAX 计算中排除 DNL 实际上是最有意义的。 在任何情况下、DNL 误差都不大、因此在最终的 TUE 估算中不会产生很大的影响。

    对于在进行周期性增益校准时影响 TUE 的 INL、这确实会对总误差产生两次影响。 首先、它将影响校准样本、从而导致增益校准因子出现一些误差。 然后、当我们在应用中获取一些样本时、该样本也会受到 INL 误差的影响。 因此、样本会获得两次 INL 误差:一次来自应用的校准因子、第二次来自实际样本。 由于 INL 在整个传递函数中随机变化、因此它不会在增益和偏移等校准系数中抵消。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Devin - San、

    感谢您的详细回答!

    感谢您的评论,我理解了它:)

    此致、

    Sasaki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Devin、

    感谢您的回答。 我有一些与我们正在进行的设计相关的后续问题。 通常、在对自定义引导加载程序进行编程并处于室温时、在制造期间执行一次性校准。 根据数据表中的值、我们知道 ADC 在温度变化时可能会漂移相当大的值、而通过现有的一次性校准、这一点不会被考虑在内。

    本产品应在密封盒中、内部环境温度预计接近85°C。 对电流感应设计执行 DFSS 分析时、已确定 ADC 中的这种高偏移误差率会显著降低精度。 为了抵消这种情况、计划在产品中实施定期校准、并考虑温度漂移、并可能降低偏移误差。

    尽管有代码可用于测试此周期性校准程序、但结果似乎尚未验证。 当在0C 和85C (使用温度室)条件下比较具有和不具有该过程的电路板时、未发现偏移计数存在明显偏差。 实验数据与数据表值匹配时、在温度范围内的漂移方面似乎存在问题。

    您能否建议一种更好地测试带/不带定期校准的失调电压计数与温度间的关系?

    谢谢、
    Stuart
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Stuart:

    您是测量采样信号中的误差、还是直接查看写入偏移调整寄存器的校准值? 测量的偏移误差是正还是负?

    我建议直接查看失调电压修整寄存器是如何变化的。 您会希望这会随温度的变化而变化。 如果这没有改变、则可能表示失调电压修整过程不能正常工作。 失调电压修整不能正常工作的最可能原因是不会添加一些人工失调电压、因此您可以更正负失调电压误差。

    如果您直接查看采样信号、则施加的电压是多少? 若要测量偏移误差、您可以拉取 VREFLO 附近的电压(例如100mV)、也可以拉取 ADC 传递函数上的2个或多个点、然后执行线性回归拟合。 无论在哪种情况下、您都需要确保信号由良好的低阻抗源驱动、信号由运算放大器(如果采样率较低、则大电容器也可以工作)在电路板上进行本地缓冲(至少在理想情况下)、 并由 DMM 在引脚处测量。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Devin、

    执行代码以检查修整寄存器的值、并看到温度从0°C 变为85°C 时、修整寄存器的值显示了4LSB 的漂移。 我还有其他一些问题要问:

    1. 数据表指定了 ADC 的+/- 20 LSB 偏移误差。 执行周期性校准后、该误差应为+/- 4 LSB。  请确认。
    2. 偏移误差如何随温度的变化而变化。 它在我们感兴趣的温度范围(0-85C)内相对平坦、 并且在皮科洛允许的工作温度范围内急剧上升/下降吗? 我提出这一要求的原因是、我们只看到4 LSB 漂移、而不是温度变化为0-85°C 时的+/- 16LSB 漂移。
    3. 我们的所有数据都来自单个 piccolo。 /- 20LSB 系数是否考虑 了器件间差异、ADC 通道间差异(或任何其他工艺因素) ? 您能否详细说明20LSB 数的来源条件。 我们怀疑20 LSB 错误是最坏情况的原因 ,由于我们不是在这些情况下运行,因此我们看不到错误。

    谢谢、

    Stuart

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stuart

    [引用用户="Stuart Baker"]

    数据表为 ADC 指定了+/- 20 LSB 的偏移误差。 执行周期性校准后、该误差应为+/- 4 LSB。  请确认。

    [/报价]

    正确

    [引用用户="Stuart Baker"]

    失调电压误差如何随温度的变化而变化。 它在我们感兴趣的温度范围(0-85C)内相对平坦、 并且在皮科洛允许的工作温度范围内急剧上升/下降吗? 我提出这一要求的原因是、我们只看到4 LSB 漂移、而不是温度变化为0-85°C 时的+/- 16LSB 漂移。

    [/报价]

    根据我查看的数据、 失调电压在整个温度范围内看起来非常线性、但 LSB/degC 可能因 器件而异、并且  可能 为正或负。  

    [引用用户="Stuart Baker"]

    我们的所有数据都来自单个 piccolo。 /- 20LSB 系数是否考虑 了器件间差异、ADC 通道间差异(或任何其他工艺因素) ? 您能否详细说明20LSB 数的来源条件。 我们怀疑20 LSB 错误是最坏情况的原因 ,由于我们不是在这些情况下运行,因此我们看不到错误。

    [/报价]

    20LSB 表示在不同电源电压和 ADC 条件下、从多个 ablot 看到的器件间的最坏情况漂移。  它不包括 ch2ch 偏移。  当然、某些器件可能不会因器件和系统条件的不同而有如此大的差异。  

    此致、

    Joe