ds1859与众不同的是其内部校准和右移(可扩展动态量距)功能。结合使用时,这些特性极大地增强了ds1859的12位模数转换器(adc),使其具有高达16位adc的精度和准确度,而不会增加成本和尺寸。此外,ds1859的内部校准具有可编程增益和可编程失调功能,省去了大多数(如果不是全部)外部信号调理电路。通过在adc之前的模拟域中提供可编程增益,可以放大/衰减输入信号,以利用adc的整个范围。然后,在数字域中,右移可用于缩小(分频)数字输出,以便所需的(或sff-8472规定的)lsb不受影响,甚至对用户透明。
本应用笔记旨在说明应用如何从内部校准和右移中受益。此外,本应用笔记还将提供有关如何实现内部校准和右移的宝贵信息。最后,提供了一个示例来说明所讨论主题的应用。
ds1859模拟监测器输入
在进一步讨论之前,最好先看一下ds1859 mon输入的框图(见图1)。为清楚起见,仅说明了一个输入,尽管这些概念适用于所有三个 mon 输入。
图1.ds1859 mon输入框图
如图所示,单端电压施加于ds1859 mon引脚。在模拟域中,电压被馈入能够衰减和增益的可编程增益模块。增益模块可以校准mon通道,以实现所需的lsb或满量程电压。满量程电压是数字输出达到满量程(fff8h)的电压。此外,增益模块可以在内部增益小输入信号,以便最大限度地利用adc。稍后将对此进行更详细的描述。
增益模块之后是12位adc。12 位转换以 2 字节(16 位)值左对齐输出。adc能够将0000h的数字值输出到fff8h。
一旦进入数字域,ds1859就将内部校准更进一步,具有用户可编程的数字失调,能够增加正或负失调。数字偏移可用于通过简单地执行数字加法在内部添加正或负偏移。需要指出的是,正偏移仍将钳制在fff8h的数字值,但最小数字值现在将大于零。同样,负偏移的满量程数字值将小于fff8h(因为负偏移减去转换)。在这种情况下,最小数字值将保持在 0000h。有关数字偏移的详细信息将在后面的偏移校准寄存器部分中提供。
输出数字值之前的最后一个操作是右移。每个 mon 输入有 3 位,用于控制所需的右移次数。右移的好处将在后面讨论。将三位设置为零会导致零右移,并禁用右移功能。与偏移一样,右移也会影响满量程数字输出。例如,如果设置为 2 个右移,则满量程数字输出变为 3ffeh。执行移位后,该值将写入用户读取转换的相应寄存器。这也是用于警报和警告比较的值。
出厂校准ds1859
ds1859 mon输入均经过工厂调整至2.5v满量程电压。这意味着2.5v的输入电压将输出fff8h的满量程数字值。此外,每个数字失调在工厂编程为零,以便0v输入将输出0000h的数字值。最后,右移出厂默认值为 0。工厂校准ds1859的传递函数如图2b所示,稍后将介绍。
工厂调整的器件将输出 4096 个数字值之一,输入电压范围为 0 至 2.5v,610 位转换的分辨率为 2μv (5.4096v/12)。理想情况下,要数字化的输入信号是0至2.5v信号,以便利用整个范围。然而,在现实生活中,我们知道情况并非总是如此。以接收电源为例,其中0至.5v的电压很常见。遗憾的是,80%的数字输出代码永远不会被使用。能够生成 12 个代码的 4096 位转换器只会输出 820 个代码中的一个(20 个代码的 4096%)是一种浪费。其余 3276 个数字代码将永远不会使用。此外,在使用820个代码中,分辨率仍为610μv。
为了尝试使用更多的数字代码,很容易将接收电源mon输入重新校准到小于2.5v的满量程电压。但是,单独这样做并不能解决问题,因为lsb将发生变化,不再与所需的lsb匹配。解决此问题的方法是将内部校准与右移结合使用,如下一节所述。
使用ds1859内部校准和右移的优势
当要监控的信号很小时,内部校准和右移最有利,因此不会利用整个adc范围。通过在模数转换之前在模拟域中放大信号,然后将其除以数字域中的相同因子,可以保留所需的lsb,并且每向右移一次,精度和准确度都会提高2倍(最多4)。右移 4 次后,精度会丢失,但精度会不断提高。这样做的美妙之处在于,它是以牺牲以前浪费的范围为代价的。
使用内部校准和右移的好处可以在图2所示的例子中得到最好的说明。图2a是要监控的示例信号的电压与时间的关系图。示例信号摆幅在0v至0.5v之间。图2b和图2c是mon输入电压与数字输出的关系图,分别显示了工厂校准的传递函数以及使用2个右移和满量程电压2.5v/4 = 0.625v的示例传递函数。0.625v的满量程电压意味着浪费的代码更少,导致转换比2.5v满量程电压大四倍,但随后又被4倍(两次右移)分频。下一节将讨论确定右移位数和满量程电压。这里使用两个右移位只是为了比较右移位示例与不右移位示例。所使用的设备设置以及与每个传递函数相关的计算显示在每个相应的传递函数下方。
图2.没有右移与右移比较。
图2中的所有三个图都在同一y轴和刻度上并排显示,因此对于输入信号上的特定点(图2a),可以绘制一条水平线穿过该点和每个传递函数,以便对数字输出进行粗略的近似。回到0v至0.5v的示例输入信号,其中0.5v由所有3个图的粗体水平线表示,通过比较图b和c可以看出右移的好处。这只是重申,当adc的输入范围跨越的电压范围远大于输入信号的范围时,将浪费许多步长(见图b)。819 个中仅使用了 4096 个。b地块中剩余的80%被浪费了。相比之下,图c显示,通过在内部校准到较小的满量程电压并使用右移,精度提高了。现在,3276个数字代码中的4096个用于对信号进行数字化。最好的部分是,在右移后,保持所需的lsb。右移对用户是透明的。这可以通过观察两个图输出大致相同的数字值来验证。
如何确定可以使用多少个右移位
应用中可以使用的右移次数是满量程电压(内部校准)以及用于给定输入信号的数字代码百分比的函数。如果输入信号的最大电压已知(除了满量程电压之外),则可以计算出预期的数字输出。否则,在工程评估期间需要“动手”方法来确定数字输出的范围,从而确定理想的右移次数。下面将逐步详细介绍“动手”方法。
1. 将右移位设置为 0。
2. 在内部校准器件以产生所需的lsb(这将决定初始满量程电压)。
3. 应用最小和最大输入信号并读取相应的数字输出以确定使用范围。
4. 确定使用的adc范围的百分比。如果数字读数超过7fffh,则不应使用右移(零右移)。但是,如果数字读数小于7fffh,则至少可以使用一个右移位。如果数字读数小于3fffh,则可以使用两个右移,依此类推。其余范围请参考ds9数据资料中的表1859。
5. 为了补偿右移引起的数字值划分,必须在模拟域中添加增益,以保持所需的lsb。这是通过使用以下公式计算新的满量程电压来完成的:新的满量程电压 = 初始满量程电压 / 2# 右移位.因此,如果步骤2的内部校准产生2.0v的满量程电压(以获得所需的lsb),并且数字读数大于1fffh但从未超过3fffh,则两次右移将是理想的。本例的新满量程电压为2.0v/2² = 0.5v。
6. 在内部校准通道(右移位仍设置为0)至新的满量程电压。
7. 将正确的移位设置为其新值。
一旦评估确定了特定应用的理想右移位数和满量程电压,只需步骤1、6和7即可进行生产校准。
ds1859内部校准和右移寄存器
ds1859器件寄存器负责每个模拟通道的内部校准和右移设置,总结于表1。显示每个 mon 通道设置的寄存器地址以及 v抄送.v抄送为完整起见,已包含在表中,但本应用笔记将不进行讨论。数字转换的位置也包含在表中,以显示其相对位置。请注意,增益、失调和右移寄存器位于存储器表01h中(不要与本应用笔记的表1混淆)。内存表01h是通过将01h写入表选择字节7fh来选择的。由于数字转换位于内存的下部 (0-7fh) 中,因此它们与表选择字节无关。
表 1.ds1859内部校准和右移寄存器
v抄送 月1 月2 月3
增益校准 92-93小时 94-95小时 96-97小时 98-99小时
偏移校准 a2-a3小时 a4-a5小时 a6-a7小时 a8-a9小时
右移 不适用 8eh (b6-b4) 8eh (b2-b0) 8fh (b6-b4)
读数 62-63小时 64-65小时 66-67小时 68-69小时
表 01h
获得校准寄存器
增益校准寄存器是一个双字节值,通过调整输入开关电容网络来确定特定监控通道的增益/衰减量。这使用户能够将满量程电压校准到~500mv至6.5535v之间的任何所需值。
不幸的是,对gain cal寄存器进行编程并不像说“我想要4的增益......所以我会在gain cal寄存器中写入4”那么简单。此外,由于开关电容器网络中电容器的设备(以及批次之间)的变化,确实有必要校准设置。校准和确定需要写入增益校准寄存器的值的步骤在ds1859数据资料的“内部校准”一节中提供。本应用笔记的“如何内部校准”部分提供了更多信息。
校准ds1859时需要注意的是,了解失调和右移位寄存器的值非常重要。否则,如果它们不为零且未进行补偿,则设备将无法按预期进行校准。
偏移校准寄存器
失调校准寄存器是一个双字节值,用于确定应用于每个受监控输入的数字偏移量。回想一下,ds1859的失调是转换值的简单数字加法或减法。因此,一旦增益被调整到所需值(并且在使能右移之前),就可以对失调进行编程,以消除任何失调或移动范围。不幸的是,与增益校准寄存器类似,确定编程值并不像说“我想要100mv的失调...所以我会在登记册中写下 100 个。
数据资料的ds1859“内部校准”部分所示的内部校准伪代码显示了如何确定失调“归零”所需的失调校准值,而本节提供了更多信息以及正负失调的示例。
偏移校准的计算方法是首先确定应向转换中添加或减去多少计数。通常完成此操作的一种方法是应用零输入(例如激光关闭),然后读取转换。这将是您从所有转化中减去的值。
需要写入失调校准寄存器的值是通过在ds1859数据资料中给出的公式中插入所需计数来计算的,下面重复。
偏移校准寄存器 = [4000h - (计数/2)] xor 4000h
示例 1:如果对 mon 输入施加 0v 并看到计数为 200 (c8h),则可以使用偏移寄存器从 a/d 转换中减去 200 (c8h) 以将其归零。使用公式确定要写入寄存器的内容:
偏移校准寄存器 = [4000h - (c8h/2)] xor 4000h = 7f9ch
请记住,在这种情况下,正在执行减法,因此满量程计数 (fff8h) 也将减少 c8h,从而得出新的满量程计数 ff30h。
示例 2:现在让我们假设出于某种原因,您想在读数中添加 200 个计数。在这种情况下,2 个负数(公式中的负数和 -c8h 取消)使第二项为正,产生:
偏移校准寄存器 = [4000h + (c8h/2)] xor 4000h = 0064h
要计算新的满量程计数,您需要(尝试)将 c8h 添加到 fff8h。然而,fff8h是最大可能的读数,因此满量程计数将保持fff8h。
例3:计算零偏移的偏移校准值。
偏移校准寄存器 = [4000h - (0/2)] xor 4000h = 0000h
这也恰好是偏移校准寄存器的出厂默认设置。
右移寄存器
右移寄存器(表01h,字节8eh-8fh)比增益和失调寄存器更容易理解。由于 mon1-mon3 能够执行多达 7 次右移,因此每个 mon 输入需要 1 位。mon2 和 mon01 的设置位于表 8h,字节 3eh 中,而 mon01 的设置位于表 8h,00fh 中。有关位的位置,请参阅数据表中的存储器映射。这些eeprom寄存器的出厂默认值为h,禁用右移。
为了进一步说明右移的结果,图3显示了生成的mon值的几个示例。
图3.周一寄存器右移示例。
如何进行内部校准
虽然有几种方法可以进行内部校准,但本应用笔记讨论了ds1859数据资料中所示的二进制搜索方法(使用伪代码)。伪码算法的输出是增益和失调寄存器值,产生所需的传递函数,即所需的lsb。
为了使用伪代码算法,必须能够将激光设置为两种不同的强度,例如最小和最大强度的90%,并且还能够进行多次迭代。对于非光学应用,必须根据命令对mon输入施加两种不同的电压。数据手册中提供的算法使用最大值的90%,因此上限不太可能箝位。但是,当应用所需满量程的百分比时,计算数字值的相应百分比也很重要。
该算法首先将偏移和右移寄存器设置为已知状态,即零偏移和零右移。尽管此示例将两个寄存器都设置为零,但只要补偿了其他值,就可以使用其他值。例如,当从编程偏移开始时,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 用于监视 rpower。当施加-40dbm的最小输入时,ds10的mon3引脚得到1859mv的电压。该输入所需的数字输出为0000h。当施加0dbm输入时,mon300提供3mv。在这种情况下,所需的数字输出为2710h,选择该输出是为了满足sff-8472规定的lsb(rpower的lsb为0.1μw)。
在本例中,确定理想的右移次数相对简单,因为已经给出了所需数字输出的范围(0000h-2710h)。使用ds9数据资料表1859,理想的右移位数为2。现在考虑到 2 个右移,为了使 2710h 成为两次右移后的最终输出,我们可以得出结论,300mv 的输入必须在右移之前导致 9c40h 的转换。因此,对于9mv的输入,内部校准将用于“增益”转换至40c300h。一旦失调的内部校准和编程完成,将启用两个右移。表 2 总结了我们的示例。
表 2.内部校准和右移示例
客户信号功率 (dbm) 电压适用于 mon3 引脚 (mv) 校准期间的数字输出(0 右移)(十六进制) 最终数字输出(2 个右移)(十六进制)
-40 10 0000 0000
50 0563
100 0c1f
150 12分贝
200 1997
250 2051
0 300 9c40 2710
一旦确定了输入和输出之间的关系(如表2所示),数据手册中提供的内部校准程序将用于对器件进行内部校准。例程首先执行一些初步计算,如下所示。请注意,此处不使用数据手册例程中显示的90%,因为第二个校准点(300mv = 9c40h)已经小于满量程值的90%。因此,本例中使用的内部校准例程删除了对90%的所有引用。
给定表 2,进行以下计算。
lsb = (0.300v - 0.010v)/(9c40h - 0000h) = 0.290v/40,000 = 7.25μv
满量程电压 = fs = lsb × 65535 = 7.25μv × 65535 = 0.475128v
cnt1 = 0.010/lsb = 1379.3 => 1379(十进制)
cnt2 = 0.300/lsb = 41379.31 => 41379(十进制)
cnt1 和 cnt2 是应用两个校准点时的预期(所需)数字输出。内部校准例程将迭代以搜索尽可能接近由这两个值确定的斜率的斜率。
例程的迭代部分经历了 16 个周期,以二叉搜索方式对斜率进行编程,然后检查它是否等效于所需的斜率。在本例中,ds1859采用内部校准程序进行校准,所有16次迭代的输入和输出如表3所示。
表 3 的第一列“迭代”等效于例程中的 n。列gain_result是每次迭代编程到增益校准寄存器(器件表01h,字节98-99h)中的值。meas2和meas1列是从器件读取的数字值,分别施加300mv和10mv输入。最后,对于meas2没有钳位的迭代,将meas2-meas1与cnt2-cnt1进行比较。如果 meas2-meas1 大于 cnt2-cnt1,则gain_result太大。对应于该迭代的增益校准位变为零,这反过来又决定了连续迭代的gain_result。完成所有 16 次迭代后,增益校准值就已知了。本例中使用的器件的增益校准值为 5038h。
表 3.实际内部校准值
迭 代 gain_result 测量2 测量1 测量2 测量1 测量2-测量1 碳化钠2-碳化碳化合物1 位结果 增益校准
(12月) (十六进制) (十六进制) (12月) (12月) (12月) (垃圾桶) (十六进制)
15 8000 fd58 870 64856 2160 62696 40000 0 5
14 4000 82a0 450 33440 1104 32336 40000 1
13 6000 货号: c010系列 658 49168 1624 47544 40000 0
12 5000 a138 558 41272 1368 39904 40000 1
11 5800 b0b8 500 45240 1280 43960 40000 0 0
10 5400 a938 5a0 43320 1440 41880 40000 0
9 5200 a530 578 42288 1400 40888 40000 0
8 5100 a328 568 41768 1384 40384 40000 0
7 5080 a238 568 41528 1384 40144 40000 0 3
6 5040 a1a8 560 41384 1376 40008 40000 0
5 5020 a170 558 41328 1368 39960 40000 1
4 5030 a190 558 41360 1368 39992 40000 1
3 5038 a198 558 41368 1368 40000 40000 1 8
2 503c a1a0 558 41376 1368 40008 40000 0
1 503a a1a0 558 41376 1368 40008 40000 0
0 5039 a1a0 558 41376 1368 40008 40000 0
将器件编程为其新的增益校准值时,偏移校准值通过强制10mv(我们想要读取0000h的电压)并读取数字结果来确定。本例中使用的器件输出值为0558h,施加10mv。使用偏移公式,偏移校准计算如下。
mon3 偏移校准 = [4000h - 0558h/2] 异或 4000h = 7d54h
最后,新的钳位值可以计算如下:
新钳位值(右移前)= fff8h - 0558h = faa0h
内部校准完成后,通过将 2 小时写入表 20h(位置 01fh)来启用 8 个右移位。
结论
ds1859的内部校准和右移功能提供了最大的灵活性,使ds1859适合各种应用。本应用笔记提供了ds1859数据资料中没有的额外信息,例如为什么内部校准和右移是有益的,以及如何实现它们。本文还提供了一个“动手”示例,将概念联系在一起,并提供在内部校准过程中从ds1859读取的实际数据。
三星显示器正考虑在2021年销售100万块面板
2020年Q1苹果iPhone产量比去年同期还要高?
高原弥散制氧设备中的氧气浓度监测
2020年亚太国家5G连接的总数比预期低20%
微软上海发布会明日举行 Surface Pro4增强版高清图曝光
DS1859内部校准和右移(可扩展动态量程)
印制电路板工艺简介
Python最基本内置数据类型(1)
多参数监护仪系统的原理及配置
单片机用于温度采集与控制系统的设计
三星电子砸近70亿美元新建7mn厂
[图文]IC+分立件的RIAA电路
工业焊接机器人对比人工焊接的优势
安卓主板_MTK6765安卓开发板-联发科安卓主板方案介绍
单片机如何清零寄存器某一位,操作方法解析
多层线路板起泡的原因及解决办法
上海联通5G用户突破百万,5G人口覆盖率达到了80%以上
聊一聊设计PCB时需要注意哪些点
小米5c正式升级安卓7.1,官方推送
LTC3649降压型稳压器的性能及设计应用