本应用笔记解释了DS1856的内部校准程序,以及使用该功能如何有益于应用。应用笔记还提供了确定和实现DS1856内部校准和右移特性的步骤。
介绍
DS1856采用内部校准和右移(可扩展动态量程)来增强内置的12位ADC。这使得DS1856具有16位ADC的精度和准确度,而不会增加尺寸和成本。此外,该器件的可编程增益和失调功能可以减少甚至消除对外部信号调理电路的需求。校准后,这些功能将模拟输入信号转换为数字值,而无需用户执行任何操作。
DS1856的功能与DS1859类似,但存储器映射与DS1852存储器结构兼容。DS1856的内部校准程序也与DS1859非常相似。(有关DS1859内部校准的示例,请参考应用笔记2858。但是,DS1856具有不同的表分配,以及用于计算失调寄存器值的公式略有不同。
本应用笔记解释了DS1856的内部校准程序,以及使用该功能如何使应用受益。本文还提供了确定和实现DS1856内部校准和右移特性的步骤。
关于密码访问的说明
三个MON输入的电平和失调值设置位于DS03的表1856中。若要读取或写入这些值,需要 2 级密码访问 (PW2)。如果使用一个 2 字节 WRITE 命令将 PW7 级别条目的密码输入到密码条目字节(PWE 位于地址 7Bh-4Eh)中,则授予此访问权限。
DS1856模拟监测器输入
与DS1859一样,DS1856具有三个模拟输入。这些输入 MON1、MON2 和 MON3 可用于监控发射功率、接收功率和发射偏置等信号。图1中的框图显示了MON输入的结构。
图1.DS1856 MON输入框图
MON引脚的输入模块由模拟和数字部分组成。在模拟部分,单端电压连接到MON引脚。然后将该电压发送到刻度模块,该模块能够衰减或对输入电压施加增益。设置刻度值可以设置所需的LSB或满量程电压。满量程电压是在相应的MON寄存器中产生FFF8h值的电压。通过为每个MON输入的刻度值设置刻度值,可以控制这些信号的增益,以充分利用ADC。
12 位 ADC 遵循刻度模块。来自ADC的转换是左对齐的数字输出。每个输出是一个 16 位值,三个 LSB 在内部屏蔽为 0.这允许 ADC 输出从 0000h 到 FFF8h 的值。
然后,ADC的数字输出通过可编程失调值进一步调整。正或负失调可以通过数字加法或减法施加到ADC输出。这些调整仍然被钳制在0000h和FFF8h的值。
对该信号的最后一次调整是使用右移。右移寄存器存储一个 3 位值,用于将每个 MON 值从 0 向右移动到 7 个空格。这样可以更好地利用ADC范围并提高读数的准确性。右移是数字值发送到MON寄存器之前对MON信号执行的最后一个功能。
一旦确定了MON信号的数字值,内部警告和报警限值就会将其值与数字MON值进行比较。相应地设置/重置警告和警报标志。
出厂校准DS1856
每款DS1856出厂时均经过校准,当8.2V电压施加于相应的MON输入引脚时,在MON寄存器中产生FFF5h。每个MON输入的失调寄存器设置为零,以便当0V施加到MON引脚时,将读取该MON输入的数字输出0000h。右移寄存器的默认值为 0,因此不会发生右移。
在出厂调整的情况下,DS1856将为4096至0.2V的MON输入电压产生5个数字值之一。对于610位转换,分辨率为2μV (5.4096V/12)。但是,并非所有应用都会使用此范围,并且可能仅施加0.5V的最大电压。在这些情况下,只会产生 820 个可能的数字值,剩下 3276 个永远不会使用的值。虽然分辨率仍为610μV,但12位转换器的使用效率不高。
为了更好地利用12位转换器,必须将DS1856 MON值重新校准至0.5V满量程电压。为此,除了调整比例和偏移值外,还必须使用右移,如下一节所述。
如何使用DS1856内部校准和右移
内部校准和右移的最佳用途是当MON输入信号很小(小于2.5V)并且不使用太多的默认ADC范围时。通过在模拟信号中增加增益,然后在数字域中将该信号分频,可以保持所需的LSB,并使用更多的ADC范围。使用这种方法,每个右班次的精度和准确度都会提高两倍(最多 4 个班次)。四次右移后,数字输出开始失去精度,但精度不断提高。
图2是一个很好的例子,说明如何充分利用内部校准和右移。 第一个图A显示了要监控的示例信号。施加于MON输入的最大电压为0.5V。图B显示了工厂校准的传递函数,图C显示了使用两个右移位和设置为0.625V (2.5V/4)的满量程电压的传递函数。当满量程电压为0.625V时,与使用2.5V满量程电压相比,将使用更多的数字代码。由此产生的转换将是2.5V满量程电压的四倍。但是,通过使用右移函数,这些转换将除以四倍(两次右移)。
图2.右移比较。
如图2中的所有三个图所示,相同的y轴可以用作比较点。通过所有三个图绘制的水平线表示施加到该引脚的最大输入电压电平。通过比较图B和C,可以看到右移的好处。图B显示了不使用内部校准和右移浪费了多少数字输出范围。图C显示了如何使用内部校准和右移来恢复损失的范围并提高信号精度。
确定可能的右移次数
两个因素决定了可以使用的右移位数。一个因素是满量程电压的函数。另一个因素是使用的数字代码的百分比。如果已知MON信号的最大电压和满量程电压,则可以计算数字输出值。否则,需要一种试错法来确定理想的正确班次数。以下步骤详细介绍了试错法。
将右移位设置为 0。
在内部校准器件以产生所需的LSB,这将决定初始满量程电压。
应用最小和最大输入信号,然后读取相应的数字输出以确定使用的数字代码范围。
确定使用的ADC范围的百分比。如果数字读数在FFF8h和7FF8h之间,则不应使用右移位,右移次数应设置为0。如果数字读数在 7FF8h 和 3FF8h 之间,则可以使用一个右移位。如果数字读数在 3FF8h 和 1FF8h 之间,则可以使用两个右移位,依此类推。其余范围请参考DS9数据资料中的表1856。
如果使用右移来更有效地利用ADC范围,则必须校准增益,以保持所需的LSB(满量程电压)。调整后的增益(标度值)使用以下公式计算:新的满量程电压=初始满量程电压/2#右移。例如,如果上述步骤2的内部校准产生2.0V的满量程电压(以获得所需的LSB),并且数字读数大于1FF8h但从未超过3FF8h,则将使用两个右移位。本例的新满量程电压为2.0V/22 = 0.5V。
将右移位值设置为 0 时,将 MON 通道校准到新的满量程电压。
将正确的移位设置为其新值。
一旦评估确定了特定应用的理想右移位数和满量程电压,只需步骤1、6和7即可进行生产校准。
DS1856内部校准和右移寄存器
DS1856寄存器保存校准设置(刻度、偏移和右移)以及每个模拟输入的数字读数,总结于表1。显示每个 MON 通道以及 VCC 的地址。(为完整起见,VCC包含在表中,但本应用笔记中不讨论。包括数字转换的位置以显示其相对位置。请注意,刻度、偏移和右移寄存器位于DS03的存储器表1856h中。通过将 03h 写入表选择字节 03Fh 来选择表 7h。由于数字转换位于内存的下部(0 到 7Fh),因此它们与表选择字节值无关。
可变资本公司 | 月1 | 月2 | 月3 | |
刻度校准 | 92小时至93小时 | 94小时至95小时 | 96小时至97小时 | 98小时至99小时 |
偏移校准 | A2h 至 A3h | A4h 至 A5h | A6h 至 A7h | A8h 至 A9h |
右移 | 不适用 | 8Eh (B6-B4) | 8Eh (B2-B0) | 8Fh (B6-B4) |
读数 | 62小时至63小时 | 64小时至65小时 | 66小时至67小时 | 68小时至69小时 |
表 03h |
刻度校准寄存器
刻度校准寄存器是一个双字节值,用于确定相应 MON 输入的增益或衰减。这使用户能够将满量程电压校准到~500mV至6.5535V之间的任何所需值。必须校准刻度校准寄存器,以便对 MON 引脚上的信号施加所需的增益或衰减。该校准程序在DS1856数据资料的“内部校准”部分提供。本应用笔记后面的“如何内部校准”部分将提供更多信息。
校准DS1856时需要注意的是,必须知道失调和右移寄存器的值。否则,如果这些值是某个非零值,并且存储在刻度校准寄存器中的值不考虑这些偏移和右移值,则器件将无法正确校准。
偏移校准寄存器
DS1856的失调是对ADC产生的转换值的数字加法或减法。双字节失调校准值在校准DS1856的刻度(增益)后进行编程。此过程使用偏移校准值来“清零”任何偏移,或为每个监控输入提供数字输出范围偏移。
DS1856数据资料“内部校准”部分的内部失调校准伪代码显示了如何确定失调校准以消除失调。以下部分提供了其他信息,以及正偏移和负偏移的示例。
首先,失调校准的计算方法是确定ADC产生的数字转换应增加或减去多少计数。这通常是通过应用零输入(例如激光关闭)来完成的,然后在偏移校准寄存器设置为0000h的情况下读取转换。从MON寄存器读取的数字值是从所有转换中减去的值,此处称为“计数”。
然后,将所需计数插入DS1856数据资料中给出的公式中,确定需要写入失调校准寄存器的值,并在下面重复:
偏移校准寄存器 = [计数/4]
以下示例显示了失调校准应用于ADC数字结果的不同方式。
示例1:如果对MON输入施加0V并看到计数为200(C8h),则可以使用失调寄存器从A/D转换中减去200(C8h)以将其归零。然后,使用上面给出的公式确定要写入偏移校准寄存器的值:
偏移校准寄存器 = [00C8h/4] = 0032h
因此,值 0032h 是要写入偏移校准寄存器的值。在这种情况下,正在执行减法,因此满量程计数 (FFF8h) 也将减少 C8h,从而得到新的满量程计数 FF30h。
示例 2:在此示例中,我们将整个范围向上移动 200 个计数。结果是以下等式:
偏移校准寄存器 = [-00C8h/4] = FFCEh
值 FFCEh 将写入偏移校准寄存器。要计算新的满量程计数,您需要尝试将 C8h 添加到 FFF8h。然而,FFF8h是最大可能的读数,因此满量程计数将保持FFF8h。
示例 3:计算零偏移的偏移校准值。
偏移校准寄存器 = [0000h/4] = 0000h
这也是偏移校准寄存器的出厂默认设置。
右移寄存器
右移寄存器(表 03h,字节 8Eh-8Fh)比刻度和偏移寄存器更容易理解。由于 MON1 至 MON3 能够执行多达 1 个右移位,因此每个 MON 输入需要 2 位。MON03 和 MON8 的设置位于表 3h,字节 03Eh 中。MON8 的设置位于表 1856h, 00Fh 中。有关右移位的位置,请参考DS1856数据资料中的存储器图。这些EEPROM寄存器的出厂默认值为<>h,这意味着DS<>器件出厂时没有使能右移。
为了进一步说明右移的结果,图3显示了右移如何影响MON值的几个示例。
图3.周一注册右移示例。
如何进行内部校准
虽然有几种方法可以进行内部校准,但本应用笔记重点介绍DS1856数据资料中描述的二进制搜索方法。伪代码算法的输出是标度(增益)和失调寄存器值,产生所需的传递函数(所需的LSB)。
要使用伪码算法,必须将激光设置为两种不同的强度。一个设置是最小强度设置,另一个是最大强度的 90%。必须在两个设置之间来回切换的功能可用。对于非光学应用,必须对MON输入施加两种不同的电压。数据手册中提供的算法使用最大可能输入电压的90%,因此上限箝位的可能性较小。但是,当使用所需满量程的百分比作为最大值时,计算数字值的相应百分比也很重要。
该算法首先将偏移和右移寄存器设置为 0000h。接下来,通过将刻度校准寄存器设置为半刻度 8000h 来启动对刻度(增益)值的二叉搜索。然后,通过将90%最大输入施加到要校准的MON通道,然后读取相应的数字转换来测试增益。此值称为 Meas2。检查 Meas2 是否在 FFF8h 处被钳位。如果读数被箝位,则无法断定转换是否实际上是FFF8h,或者是否大于FFF8h,而只是箝位到FFF90h。由于结果太高,二叉搜索的下一步是将增益值减半;再次施加<>%最大输入以检查箝位。该过程重复,直到找到非钳位增益值。
一旦找到非钳位Meas2,算法就会通过强制零输入并读取其数字转换值来继续。此值变为 Meas1。值CNT1(零点/LSB)和CNT2(满量程值/LSB的90%)是计算出的期望转换输出值。使用算法开始时计算的常数计算 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 现在已知。接下来,将 b15 设置为已确定的内容,将 b14 设置为 1,并将 b13 到 b0 设置为 0。再次执行该过程以确定增益是否仍然过高。如果是这样,则 b14 变为 0。否则,它将变为 1。该过程一直持续到确定所有 16 位。结果再次是一个16位值,产生所需的增益。
一旦确定了所需的增益,就可以校准新的偏移,或者将其保持在0000h(无偏移)。校准方法取决于如何使用偏移特征。数据手册中算法附带的说明假设用户希望应用负偏移来使数字读数为零,因此MON引脚上的零输入将在数字输出上产生所有零。这是通过在校准的MON输入上应用零输入并读取转换来实现的。例如,如果零输入产生20h的数字输出,则可以对失调进行编程,以便从每次转换中以数字方式减去20h。在本例中,将20h代入失调公式,然后将结果编程到所需MON通道的失调校准寄存器中。
内部校准和右移示例
这里提供的另一个示例演示了本应用笔记中介绍的概念。在此示例中,MON3用于监视RxPower。当施加-40dBm的最小输入时,DS10的MON3引脚得到1856mV的电压。该输入所需的数字输出为0000h。当施加0dBm信号时,MON300上存在3mV。在这种情况下,所需的数字输出为2710h,选择以满足SFF-8472规定的LSB。(RxPower 的 LSB 为 0.1μW。
下一步是确定理想的右班次数。由于所需数字输出的范围为0000h至2710h,DS9数据资料的表1856可用于选择理想的右移位数,在本例中为2。
为了在两次右移后实现2710h的最终数字输出,我们必须设置Scale Cal值,使300mV输入在发生右移之前产生9C40h(2710h乘以22)的转换。因此,内部校准将用于计算增益,以便ADC在9mV输入时产生至40C300h的转换。一旦失调的内部校准和编程完成,将启用两个右移。表 2 总结了我们的示例。
客户信号接收功率 (dBm) | 施加于 MON3 引脚的电压 (mV) | 校准期间的数字输出(0 右移) | 最终数字输出(两个右移) |
-40 | 10 | 0000小时 | 0000小时 |
50 | 0563小时 | ||
100 | 0C1Fh | ||
150 | 12分贝 | ||
200 | 1997小时 | ||
250 | 2051小时 | ||
0 | 300 | 9C40h | 2710小时 |
一旦确定了输入和输出之间的关系(如表2所示),DS1856数据资料中提供的内部校准程序用于内部校准器件。例程首先执行一些初步计算,如下所示。请注意,此处不使用数据手册例程中显示的90%,因为第二个校准点(300mV = 9C40h)已经小于满量程值的90%。因此,本例中使用的内部校准例程删除了对90%的所有引用。
给定表 2,进行以下计算:
LSB = (0.300V - 0.010V)/(9C40h - 0000h) = 0.290V/40,000 = 7.25μV 满量程电压 = FS = 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 个周期,然后进行比较以查看它是否等效于所需的斜率。本例采用内部校准程序对DS1856进行校准,所有16次迭代的输入和输出如表3所示。
表 3 的第一列“迭代”等效于例程中的 n。列gain_result是每次迭代编程到刻度校准寄存器(设备表 03h,字节 98-99h)中的值。Meas2和Meas1列是从器件读取的数字值,分别施加300mV和10mV输入。最后,对于Meas2没有钳位的迭代,将Meas2 - Meas1与CNT2 -CNT1进行比较。如果 Meas2 - Meas1 大于 CNT2 - CNT1,则gain_result太大。对应于该迭代的 Scale Cal 位变为零,这反过来决定了连续迭代的gain_result。完成所有 16 次迭代后,即可知道 Scale Cal 值。此示例中使用的设备导致刻度校准值为 5038h。
迭 代 | gain_result | 测量2 | 测量1 | 测量2 | 测量1 | 测量2-测量1 | 碳化钠2-碳化碳化合物1 | 位结果 | 刻度校准 |
---|---|---|---|---|---|---|---|---|---|
(12月) | (十六进制) |
(十六进制) |
(12月) | (12月) | (12月) | (垃圾桶) | (十六进制) | ||
15 | 8000 | FD58 | 0870 | 64856 | 2160 | 62696 | 40000 | 0 | 5 |
14 | 4000 | S2A0 | 0450 | 33440 | 1104 | 32336 | 40000 | 1 | |
13 | 6000 | 货号 C010 | 0658 | 49168 | 1624 | 47544 | 40000 | 0 | |
12 | 5000 | A138 | 0558 | 41272 | 1368 | 39904 | 40000 | 1 | |
11 | 5800 | B0BS | 0500 | 45240 | 1280 | 43960 | 40000 | 0 | 0 |
10 | 5400 | A938 | 05A0 | 43320 | 1440 | 41880 | 40000 | 0 | |
9 | 5200 | 空客A530 | 0578 | 42288 | 1400 | 40888 | 40000 | 0 | |
8 | 5100 | 空客A328 | 0568 | 41768 | 1384 | 40384 | 40000 | 0 | |
7 | 5080 | 空客A238 | 0568 | 41528 | 1384 | 40144 | 40000 | 0 | 3 |
6 | 5040 | A1A8 | 0560 | 41384 | 1376 | 40008 | 40000 | 0 | |
5 | 5020 | 空客A170 | 0558 | 41328 | 1368 | 39960 | 40000 | 1 | |
4 | 5030 | 空客A190 | 0558 | 41360 | 1368 | 39992 | 40000 | 1 | |
3 | 5038 | A198 | 0558 | 41368 | 1368 | 40000 | 40000 | 1 | 8 |
2 | 503C | A1A0 | 0558 | 41376 | 1368 | 40008 | 40000 | 0 | |
1 | 503A | A1A0 | 0558 | 41376 | 1368 | 40008 | 40000 | 0 | |
0 | 5039 | A1A0 | 0558 | 41376 | 1368 | 40008 | 40000 | 0 |
将器件编程为其新的刻度校准值时,偏移校准通过强制 10mV(我们想要读取 0000h 的电压)并读取数字结果来确定。本例中使用的器件在施加0558mV时产生的值为10h。使用偏移公式,偏移校准计算公式为:
MON3 偏移校准 = [0558h/4] = 0156h
值 0156h 将写入 MON3 偏移校准寄存器字节。
新的钳位值可以计算如下:
新钳位值(右移前)= FFF8h - 0558h = FAA0h
内部校准完成后,通过将20h写入表03h,位置8Fh来启用两个右移。
结论
DS1856的内部校准和右移功能提供了最大的灵活性,使DS1856适合各种应用。本应用笔记提供了DS1856数据资料中没有的其他信息,特别是为什么内部校准和右移是有益的,以及如何实现它们。还提供了一个例子来将这些概念联系在一起。
审核编辑:郭婷
-
寄存器
+关注
关注
31文章
5334浏览量
120208 -
存储器
+关注
关注
38文章
7481浏览量
163751 -
adc
+关注
关注
98文章
6484浏览量
544407
发布评论请先 登录
相关推荐
评论