本应用笔记讨论了DS1863/DS1865控制器/监测芯片的内部校准和右移(可扩展动态量程)如何使应用受益。本文解释了如何实现内部校准和右移,并提供了一个示例来说明该过程。
介绍
DS1863和DS1865控制器/监测器件采用内部校准和右移(可扩展动态量程),大大增强了内部13位ADC,在不增加成本和尺寸的情况下,提供更高的精度和准确度。此外,DS1863/DS1865的内部校准具有可编程标度和可编程失调功能,无需大多数(如果不是全部)外部信号调理电路。通过在ADC之前的模拟域中进行可编程缩放,输入信号被缩放以使用ADC的整个范围。然后,在数字域中,可以使用右移将数字输出分回去,以便所需的(或SFF-8472规定的)LSB不受影响,甚至对用户透明。
模拟监视器输入
DS1863/DS1865 MON输入框图如图1所示。为清楚起见,仅说明了一个输入,尽管这些概念适用于所有四个 MON 输入(MON1、MON2、MON3 和 MON4)。MON输入用于监控发射功率和接收功率等信号。
图1.DS1863/DS1865上的MON输入框图
如图1所示,单端电压施加于DS1863/DS1865 MON引脚。在模拟域中,电压被馈入可编程刻度块。该刻度块可以校准MON通道,以实现所需的LSB或满量程电压。满量程电压是所需的LSB × 2n,其中 n 是位数。此外,比例块可以在内部获得小输入信号,以最大限度地利用ADC。稍后将更详细地介绍此过程。
比例块之后是13位ADC。13 位转换以 2 字节(16 位)值左对齐输出。ADC可以输出0000h至FFF8h的数字值。
在ADC之后,数字化信号通过用户可编程数字偏移进一步调整。该数字偏移可用于通过简单地执行数字加法在内部添加正或负偏移。需要注意的是,正偏移将钳制在FFF8h的数字值上;负偏移的满量程数字值将小于FFF8h(因为负偏移从转换中减去)。在这种情况下,最小数字值将被钳位在0000h。有关数字偏移的详细信息将在后面的“偏移寄存器”部分中提供。
右移是数字值输出前的最终操作。每个 MON 输入具有三个位,用于控制所需的右移位数。(右移的好处将在后面讨论。将三位设置为零将禁用右移功能。与偏移一样,右移也会影响满量程数字输出。例如,如果设置为两个右移,满量程数字输出将变为 3FFEh。执行移位后,该值将写入用户读取转换的相应寄存器(较低内存,寄存器64h-6Bh)。这也是用于警报和警告比较的值。
关于密码访问的说明
四个MON输入的电平和失调值设置见DS02/DS1863的表1865h。若要读取或写入这些值,需要级别 2 密码访问 (PW2)。如果在密码条目字节中输入PW2级别条目的密码(PWE位于较低内存中,寄存器7Bh-7Eh),则授予此访问权限。
工厂校准的 MON 输入
DS1863/DS1865 MON输入均经过工厂调整至2.5V满量程电压。此外,每个数字失调在工厂编程为零,因此0V输入将输出0000h的数字值。右移出厂默认值也是 0。工厂校准的DS1863/DS1865的传递函数如图2的图B所示,稍后将介绍。
工厂调整的器件将输出 8192 个数字值之一,输入电压范围为 0 至 2.5V,305 位转换的分辨率为 2μV (5.8192V/13)。理想情况下,要数字化的输入信号是0至2.5V信号,以便利用整个范围。但是,在实际应用程序中,情况并非总是如此。例如,对于接收电源(Rx Power),0至.5V的电压是常见的,这意味着80%的数字输出代码永远不会被使用。因此,能够生成13个代码的8192位ADC将仅输出1638个代码中的一个。其余 6554 个数字代码将永远不会使用。此外,在使用1638个代码中,分辨率保持在305μV。
为了更好地利用13位ADC,必须将DS1863/DS1865 MON值重新校准至0.5V满量程电压。然而,仅重新校准MON值并不能解决输入信号问题,因为LSB会发生变化,不再与所需的LSB匹配。最终,为了从ADC获得最大性能,必须使用右移来调整比例和失调值。
内部校准和右移
当要监控的信号很小,因此不使用整个ADC范围时,内部校准和右移是有益的。通过在模数转换之前放大模拟域中的信号,然后将其除以数字域中的相同因子,可以保留所需的LSB。每右移一次(最多三),精度和准确度都会提高两倍。经过三次右移后,精度或准确度不会进一步提高。
使用内部校准和右移的好处可以在图2所示的例子中得到最好的说明。图A是要监控的示例信号的电压与时间的关系图。示例信号在0至0.5V之间摆幅。图B和C表示MON输入电压与数字输出的关系。后面的曲线分别显示了工厂校准的传递函数、使用两个右移位的示例传递函数和 2.5V/4 = 0.625V 的满量程电压。0.625V的满量程电压意味着浪费的代码更少,从而导致转换比2.5V满量程电压大四倍,但随后又被四倍(两个右移)分频。下面将讨论确定右移位数以及满量程电压。这里使用两个右移只是为了比较右移示例与不右移。所使用的设备设置以及与每个传递函数相关的计算显示在每个相应的传递函数下方。
图2.数据说明了无右移位 (B) 与右移位 (C) 之间的比较。
图 2 中的所有三个图都在同一 y 轴和刻度上并排显示。可以在输入信号(图A)和每个传递函数上的任何特定点上绘制一条水平线,以便对数字输出进行粗略的近似。如果返回到0至0.5V的示例输入信号,其中0.5V由所有三个图的粗体水平线表示,则通过比较图B和C可以看出右移的好处。当ADC的输入范围跨越的电压范围远大于输入信号范围时,将浪费许多步长(见图B)。1638 个中仅使用 8192 个;B地块中剩余的80%被浪费了。相比之下,图C显示,通过在内部校准到较小的满量程电压并使用右移,精度提高了。现在,6554个数字代码中的8192个用于对信号进行数字化。此外,右移后,保持所需的LSB。右移对用户是透明的。这可以通过观察两个图输出大致相同的数字值来验证。
确定需要多少次右移
应用所需的右移次数是满量程电压(内部校准)以及用于给定输入信号的数字代码百分比的函数。如果输入信号的最大电压已知(除了满量程电压之外),则可以计算出预期的数字输出。否则,在工程评估期间需要“动手”方法,以确定数字输出的范围,从而确定理想的正确换档次数。动手方法详述如下。
将右移位设置为 0。
在内部校准器件以产生所需的LSB,这将决定初始满量程电压。(本应用笔记稍后将讨论此过程。
应用最大输入信号并读取相应的数字输出以确定使用范围。
确定使用的ADC范围的百分比。如果数字读数超过7FFFh,则不应使用右移(零右移)。但是,如果数字读数小于7FFFh,则至少可以使用一个右移位。如果数字读数小于3FFFh,则可以使用两个右移,依此类推。表 1 对此进行了总结。
表 1.用于各种输出范围的右移位数
零右移使用的输出范围 | 所需的右移次数 |
0h..FFFFh | 0 |
0h..7FFFh | 1 |
0h..3FFFh | 2 |
0h..1FFFh | 3 |
为了补偿右移导致的数字值的划分,必须在模拟域中添加增益,以保持所需的LSB。该增益的相加方法是使用以下公式计算新的满量程电压:
新满量程电压 = 初始满量程电压/2# 右移位
因此,如果步骤2的内部校准导致满量程电压为2.0V,并且如果数字读数大于1FFFh但从未超过3FFFh,则两次右移将是理想的。因此,本例的新满量程电压为2.0V/22= 0.5V。
在内部校准通道(右移位仍设置为0)至新的满量程电压。
将正确的移位设置为其新值。
一旦评估确定了特定应用的理想右移位数和满量程电压,只需步骤1、6和7即可进行生产校准。
内部校准和右移寄存器
DS1863/DS1865器件寄存器负责每个模拟通道的内部校准和右移设置,如表2所示。显示每个 MON 通道设置的寄存器地址以及 V抄送.V抄送为完整起见,已包含在表中,但本应用笔记将不作讨论。数字转换的位置也包含在表中,以显示其相对位置。请注意,刻度、偏移和右移寄存器位于存储器表02h中(不要与本应用笔记的表2混淆)。内存表02h是通过将02h写入表中选择下内存中的字节来选择的,寄存器7Fh。
表 2.DS1863/DS1865内部校准和右移寄存器
V抄送 | 月1 | 月2 | 月3 | 月4 | |
规模* | 92-93小时 | 94-95小时 | 96-97小时 | 98-99小时 | 9A-9Bh |
抵消* | A2-A3小时 | A4-A5小时 | A6-A7小时 | A8-A9小时 | AA-ABh |
右移* | 不适用 | 8Eh (B6-B4) | 8Eh (B2-B0) | 8Fh (B6-B4) | 8Fh (B2-B0) |
读数 | 62-63小时 | 64-65小时 | 66-67小时 | 68-69小时 | 6A-6Bh |
*表 02h |
刻度寄存器
刻度寄存器是一个双字节值,通过调整输入开关电容网络来确定特定监控通道的增益/衰减量。因此,刻度寄存器允许用户将满量程电压校准到~250mV至6.5536V之间的任何所需值。由于工艺变化和最终应用的不同要求,必须校准该寄存器。此校准和确定要写入秤寄存器中的值的过程将在后面的“如何内部校准”部分中提供。
注意:校准DS1863/DS1865时,了解失调和右移寄存器的值非常重要。否则,如果这些值不为零且未补偿,则不会按预期校准设备。
偏移寄存器
失调寄存器是一个双字节值,用于确定应用于每个受监控输入的数字偏移量。DS1863/DS1865的失调是转换值的简单数字加法或减法。因此,一旦比例被修剪到所需的值(并且在启用右移之前),就可以对偏移进行编程,以消除任何偏移或移动范围。
偏移量的计算方法是首先确定应添加或减去多少计数。通常完成此操作的一种方法是应用零输入(例如激光关闭),然后读取转换。此过程将产生您从所有转化中减去的值。
需要写入失调寄存器的值是通过在公式1中插入所需计数来计算的:
示例1:如果输入电压参考地以外的基准电压源,则可以从测量值中减去该基准电压源。假设当我们将引用应用于 MON 输入时,读取计数为 200 (C8h)。您可以使用偏移寄存器从模数转换中减去 200 (C8h) 以将其归零。使用等式确定要写入寄存器的内容:
请记住,在这种情况下正在执行减法,因此满量程计数 (FFF8h) 也将减少 C8h,从而得到新的满量程计数 FF30h。
示例 2:假设您要向读数添加 200 个计数。这将产生以下等式:
要计算新的满量程计数,您需要(尝试)将 C8h 添加到 FFF8h。但是,FFF8h是最大可能的读数,因此满量程计数将保持FFF8h。较低的计数不是 00h,而是 C8h,因为此偏移量将添加到所有读数中。
示例 3:计算零偏移的偏移值:
这也是偏移寄存器的出厂默认设置。
右移寄存器
右移寄存器见表02h,寄存器8Eh-8Fh。由于 MON1 至 MON4 最多可以执行 1 个右移位,因此每个 MON 输入需要 2 位。MON02 和 MON8 的设置位于表 3h,寄存器 4Eh,而 MON02 和 MON8 的设置驻留在表 1h 中,寄存器 00Fh。有关位的位置,请参阅数据手册(或上面的表<>)中的存储器图。这些EEPROM寄存器的出厂默认值为<>h,禁用右移。
为了说明进一步右移的结果,图3显示了生成的MON值的几个示例。
图3.MON寄存器右移的示例。
如何进行内部校准
本应用笔记讨论了二叉搜索方法。该算法的输出是标度和偏移寄存器值,它们产生所需的传递函数,即所需的LSB。
要使用该算法,必须能够做两件事:将激光设置为两种不同的强度,例如最小和接近最大值(约 90%);并能够经历多次迭代。对于非光学应用,必须根据命令对MON输入施加两种不同的电压。本应用笔记中提供的算法使用最大值的90%,因此可以进行“>”比较。但是,当应用所需满量程的百分比时,计算数字值的相应百分比也很重要。
伪代码示例
用于查找刻度的二叉搜索的解释最好通过以下伪代码示例提供。
/* Assume that the null input is 0.5V */ /* Assume that the desired LSB of the lowest weighted bit is 50µV */ Max Reading = 65535 x 50e-6 /* 3.27675 */ CNT1 = 0.5 / 50e-6 /* 10000 */ CNT2 = 0.90 x FS / 50e-6 /* 58981.5 */ /* The null input is 0.5V and the 90% of FS input is 0.9*3.27675 = 2.949075V */ Set the trim-offset-register to zero Set Right Shift register to zero (typically zero. See Right Shifting section above..) Scale_result = 0h Clamp = FFF8h/2Right_Shift_Register For n = 15 down to 0, Begin scale_result = scale_result + 2n Force the 90% FS input (2.949075V) Meas2 = read the digital result from the part If Meas2 >= Clamp then scale_result = scale_result – 2n Else Begin Force the null input (0.5V) Meas1 = read the digital result from the part If (Meas2 – Meas1) > (CNT2 – CNT1) then scale_result = scale_result – 2n End End Set the Scale register to scale_result
刻度寄存器现已设置,转换分辨率将最好地匹配预期的LSB。下一步是校准DS1863/DS1865的失调。将正确的刻度值写入刻度寄存器后,再次强制将零输入输入到引脚。读取零件的数字结果(Meas1)。失调可以通过使用CNT1作为公式1中的输入来计算。
伪代码的解释
该算法首先将偏移和右移寄存器设置为已知状态,即零偏移和零右移。尽管此示例将两个寄存器都设置为零,但只要对它们进行补偿,就可以使用其他值。例如,当从编程偏移开始时,FFF8h可能不再是箝位的满量程数字值。(请参阅偏移寄存器部分。除了初始化寄存器外,该算法还首先计算一些重要常数,这些常数是所需LSB的函数。
刻度值的二叉搜索首先将刻度寄存器设置为半刻度 8000h。然后,通过将90%最大输入施加到要校准的MON通道,然后读取相应的数字转换来测试刻度值。此转化值称为 Meas2。检查 Meas2 以查看它是否被钳位,FFF8h(因为偏移和右移为零)。如果读数被箝位,则无法断定转换实际上是FFF8h还是更大(也是FFF8h)。无论哪种方式,比例设置都太高。在二叉搜索方式中,刻度值被切成两半,并重复该过程,直到找到非夹紧刻度值。
一旦找到非钳位Meas2,算法就会通过强制零输入并读取其数字转换来继续。此转换变为 Meas1。最后,计算Meas2和Meas1之间的增量,并使用算法开始时计算的常数与所需的增量(CNT2 - CNT1)进行比较。如果 Meas2 - Meas1 大于 CNT2 - CNT1,则刻度再次减半。否则,如果 Meas2 - Meas1 小于 CNT2 - CNT1,则通过将刻度切成两半来增加刻度,这次将其添加到当前刻度中。该过程将重复,直到总共执行 16 次迭代。结果是一个 16 位值,可产生所需的比例(和所需的 LSB)。
还有另一种可视化秤校准过程的方法。从 15 位刻度寄存器的 MSB (b16) 开始,将位设置为 1(所有其他位最初设置为 0)。当MSB = 1时,执行施加模拟输入和读取数字输出的过程。如果读数被钳位,则刻度过高,MSB写回0。否则,MSB 仍为 1。MSB现已为人所知。现在这个过程进入下一个位,b14。将 b14 设置为 1(将 b15 设置为已确定的内容)。向下到 b13 的位 0 仍然是 0。现在完成该过程以确定增益是否仍然太高。如果是这样,则 b14 变为 0。否则,它将变为 1。然后,该过程逐位继续,直到确定所有 16 位。结果再次是一个 16 位值,它产生所需的比例。
一旦达到所需的刻度,就可以校准新的偏移量,或者可以将刻度保持在 0(无偏移)。校准方法取决于如何使用偏移特征。产品数据手册中算法附带的说明假设用户希望应用负偏移来使数字读数为零,以便零模拟输入将产生所有零输出。只需应用零模拟输入并读取转换即可完成此操作。如果零输入(例如激光关闭)产生数字输出,例如20h,则可以对偏移进行编程,以便从每次转换中数字减去20h。在本例中,将20h代入失调公式,然后将结果编程到所需MON通道的失调校准寄存器中。
内部校准和右移示例
以下示例旨在最好地演示本应用笔记中介绍的概念。
在此示例中,MON3 用于监视 Rx 电源。当施加 -40dBm 的最小输入时,MON10 引脚的电压为 3mV。该输入所需的数字输出为0000h。当施加0dBm输入时,MON300提供3mV。在这种情况下,所需的数字输出为2710h,选择满足SFF-8472规定的LSB(Rx功率的LSB为0.1μW)。
在本例中,确定理想的右移次数相对简单,因为已经给出了所需数字输出的范围(0000h-2710h)。使用上面的表 1,理想的右移次数是 2710。为了使300h成为两次右移后的最终输出,我们可以得出结论,在右移之前,9mV的输入必须导致40C9h的转换。因此,对于40mV的输入,内部校准将用于“增益”转换至300C3h。一旦失调的内部校准和编程完成,将启用两个右移。表 <> 总结了我们的示例。
表 3.内部校准和右移示例
客户信号接收功率 (dBm) | 施加于 MON3 引脚的电压 (mV) | 校准期间的数字输出(0 右移)(十六进制) | 最终数字输出(2 个右移)(十六进制) |
-40 | 10 | 0000 | 0000 |
50 | 0563 | ||
100 | 0C1F | ||
150 | 12分贝 | ||
200 | 1997 | ||
250 | 2051 | ||
0 | 300 | 9C40 | 2710 |
一旦确定了输入和输出之间的关系(如表3所示),数据手册中提供的内部校准程序将用于对器件进行内部校准。例程首先执行一些初步计算,如下所示。请注意,此处未使用数据手册例程中显示的90%,因为第二个校准点(300mV = 9C40h)已经小于满量程值的90%。
给定表 3,进行以下计算:
LSB = (0.300V – 0.010V)/(9C40h – 0000h) = 0.290V/40,000 = 7.25μV
最大读数 = LSB x 65535 = 7.25μV x 65535 = 0.475128V
CNT1 = 0.010/LSB = 1379.3 => 1379(十进制)
CNT2 = 0.300/LSB = 41379.31 => 41379(十进制)
CNT1 和 CNT2 是应用两个校准点时的预期(所需)数字输出。内部校准例程将迭代,搜索尽可能接近由这两个值确定的斜率的斜率。
例程的迭代部分经历了 16 个周期,以二叉搜索方式对斜率进行编程,然后检查它是否等效于所需的斜率。在本例中,DS1863/DS1865采用内部校准程序进行校准;所有 16 次迭代的输入和输出如表 4 所示。
表 4 的第一列“迭代”等效于例程中的 n。列scale_result是每次迭代编程到Scale寄存器(设备表02h,寄存器98-99h)中的值。Meas2和Meas1列是从器件读取的数字值,分别施加300mV和10mV输入。最后,对于Meas2没有钳位的迭代,将Meas2 - Meas1与CNT2 - CNT1进行比较。如果 Meas2 - Meas1 大于 CNT2 - CNT1,则scale_result太大。对应于该迭代的 Scale 位变为零,这反过来又决定了连续迭代的scale_result。完成所有 16 次迭代后,Scale 值就已知了。此示例中使用的设备导致缩放值为 5038h。
表 4.实际内部校准值
从表 3 中,我们看到迭代 3 中达到了最小增量(其中 Meas2 - Meas1 和 CNT2 - CNT1 都在 40000)。用户可以在算法中添加一个变量,用于检查在哪个迭代时达到最小增量,然后将该迭代的scale_result值用作 Scale 寄存器的值,而不是最终值。
将器件编程为其新的标度值时,通过强制10mV(我们想要读取0000h的电压)并读取数字结果来确定偏移量。本例中使用的器件输出值为0558h,施加10mV。使用偏移公式(公式 1),偏移计算如下:
MON3 偏移量 = -(-0558h/4) = 0156h
最后,新的钳位值可以计算为:
新钳位值(右移前)= FFF8h - 0558h = FAA0h
内部校准完成后,通过向表20h写入02h,寄存器8Fh来启用两个右移位。
结论
DS1863/DS1865的内部校准和右移功能提供了最大的灵活性,使器件适合各种应用。本应用笔记提供了DS1863/DS1865数据资料中没有的信息,特别是为什么内部校准和右移是有益的,以及如何实现它们。本文还提供了一个动手示例,将概念关联在一起,并显示内部校准过程中从DS1863/DS1865读取的实际数据。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !