工程案例 您现在的位置是: 首页 > 工程案例
使用两点校准消除ADC偏移和增益误差使用两点校准消除ADC偏移和增益误差
来源:极速体育nba直播吧 发布时间:2025-07-03 07:23:12使用两点校准消除ADC偏移和增益误差使用两点校准消除ADC偏移和增益误差 通过示例了解两点校准方法和定点实
订购热线:177 7167 0781
使用两点校准消除ADC偏移和增益误差使用两点校准消除ADC偏移和增益误差
通过示例了解两点校准方法和定点实现,以补偿模数转换器(ADC)偏移和增益误差。
在上一篇文章中,我们讨论了单点校准可用于微调ADC偏移误差。为了补偿偏移和增益误差,我们应该两点校准。在本文中,我们将探索两点校准方法,并通过一个例子了解该技术的定点实现。
受偏移和增益误差影响的单极12位ADC的特性曲线。受偏移和增益误差影响的单极12位ADC的特性曲线。
ADC的满标度值为3V。选择ADC满标度范围10%和90%的两个测试输入点A和B,以确定
通过替换Vin=0,发现偏移误差为+23 LSB。以下方程式描述了理想12位ADC的线性模型:
因此,0.3V和2.7V下的理想码值分别为409和3686。使用这一些值,理想响应的斜率可得:
知道实际响应后,我们现在可以很容易地消除数字域中的偏移和增益误差。首先,我们大家可以从每个输出代码中减去偏移量,得到一个通过原点且斜率为Slopem的响应。接下来,将结果乘以
SlopeiSlopemSlopeiSlopem将获得的直线绕原点旋转,并产生斜率为Slopei的直线。这些数学运算将实际响应的直线映射到理想ADC的直线使用了一个夸张的例子来说明校准概念。
因此,通过应用方程式1,可以从实际代码Codea计算出校准的输出代码CodeCal:
为了节省系统处理器的一些CPU(中央处理单元)周期,我们大家可以将上述方程简化为方程2:
由于c2在16到32之间,我们应该5位用于整数部分,1位用于符号。这给我们留下了10位用于小数部分。因此,c2的适当表示是Q6.10格式。为了用这种格式表示,我们将c2乘以
请注意,c2是2补码格式的负数。由于新系数使用不相同的缩放因子,我们应该仔细跟踪缩放因子对计算的影响。让我们定义一个新的临时变量Var1,将c1、new和未校准ADC读数的乘积存储为方程式3:
这产生了方程2右侧的第一项。假设ADC的12位输出存储在C程序中的带符号16位寄存器中。因此,Codea可以被视为Q16.0数字。这在某种程度上预示着实现方程式3需要将Q1.15值乘以Q16.0值。变量Var1应该是一个32位寄存器来存储此乘法的结果。此外,由于Q16.0的数字乘以Q1.15的值,Var1的格式为Q17.15。如果你需要用定点表示法来复习乘法,请参阅这篇文章。
如果我们的系统中有任意的寄存器长度(例如,在FPGA中),我们大家可以使用Q17.10格式的27位寄存器存储Var2。然而,在C编程中,Var2仍然必须存储在32位寄存器中。如果我们截断Q17.15数字的五个最低有效位并将结果存储在32位寄存器中,我们将得到Q22.10数字。最后,我们大家可以将c2添加到Var2中,并丢弃10个最低有效位,以得到校准的ADC值,得到方程5:
作为旁注,为了尽最大可能避免任何混淆,我想提到的是,方程4和5中的变量不使用下标,因为这两行被假设为伪代码。例如,文本中的Var2在方程式4和5中表示为Var2。
您一样能验证点B是否也映射到理想代码3686。请注意,计算机程序使用系数的二进制等效值,我只是使用十进制值来阐明计算。我们同样可以从测量的ADC响应中检查其他点,以确保定点实现产生所需的值。如果不满足这个要求,我们将不得已使用更大的寄存器来存储校准系数。
在这个例子中,显示了一个偏移为-13LSB的单极ADC。通过将ADC读数加13,可以校准偏移误差。但是,请注意,ADC输出小于13 LSB的输入值的全零码。该输入范围在校准响应中仍然不可用,因为校准是在A/D转换后进行的。校准仅向实际ADC响应添加恒定偏移,在上述示例中为低于13LSB的所有值产生代码13。需要注意的是,一些ADC具有与本文讨论的后转换方法不同的内置校准功能。这些内置校准技术可能能够保持ADC的本机范围。这种内置校准技术用于TI的TMS320280x和TMS3202801x设备上的12位ADC。
上一篇: 被c到爬走又被抓回来