DS1854 点击型号查看芯片规格书
DS1854、DS1857和DS1858监控V(CC)、环境温度和外部输入。本应用说明说明如何解释存储在主设备SRAM中的值,并将其转换为温度和电压。还将回顾2的补码转换。
转换DS1854/57/58温度值的过程始于重新生成以字节60h(温度的MSB)和61h(温度的LSB)存储的值。这两个字节包含最近的温度值。上面的12位被认为是有效的。较低的4位可以读取,但是通过重新读取这些位获得的分辨率通常是无用的,因为最佳分辨率是0.0586°C。大多数应用不需要这种分辨率,因为电阻的温度查找表仅随每2°C的变化而变化。因此,在读取时,4个较低的位应该被0掩盖,以避免温度校准中恒定的微小变化。下4位的位权和掩码如表1所示。
60h(温度MSB) | 6h(温度LSB) | ||||||||||||||
年代 | 2 (6) | 2 (5) | 2 (4) | 2 (3) | 2 (2) | 2 (1) | 2 (0) | 2 (1) | 2 (2) | 2 (3) | 2 (4) | 2 (5) | 2 (6) | 2 (7) | 2 (8) |
年代 | 2 (6) | 2 (5) | 2 (4) | 2 (3) | 2 (2) | 2 (1) | 2 (0) | 2 (1) | 2 (2) | 2 (3) | 2 (4) | 0 | 0 | 0 | 0 |
最左边的位是符号位,表示2的二进制补数是正的还是负的。如果这位是0,那么温度就是正的。如果位为1,则温度为负。接下来的11位包含温度的值,根据值是正的还是负的,转换成不同的十进制。
下面是如何将正温度值从十六进制转换为十进制的示例。在本例中,地址60h和61h中的值分别读取为3Ch和50h。将这两个字节组合起来得到3C50h的十六进制值(在屏蔽较低的4位之后)。接下来,将十六进制数据转换为二进制。3C50h的二进制等价物是0011 1100 0101 0000。由于上位为0,因此温度为正。表2显示了从十六进制到二进制的转换和低4位的屏蔽。
HEXIDECIMAL数据 | 二进制数据 | 掩码二进制数据 |
3 c50h | 0011 1100 0101 0000 | 0011 11001010000 |
由于符号位为0,温度为正,需要2的补变换。因此,可以使用计算器将该值直接转换为十进制数。二进制数0011 1100 0101 0000等于十进制数15440。十进制数值必须除以256(或乘以2-8)才能计算出正确的十进制温度值。将十进制值15440除以256得到的十进制温度值为60.3125°C。
转换负温度值(上位= 1)有点复杂。一个例子是地址60h和61h是否包含数据D3h和60h(低4位被屏蔽)。第一步是将十六进制值转换为二进制。表3显示了从十六进制到二进制的转换以及4个较低位的屏蔽。
HEXIDECIMAL数据 | 二进制数据 | 掩码二进制数据 |
D360h | 1101 0011 0110 000 | 1101 0011 01100000 |
下一步是取掩码二进制值的2的补码。这是通过首先反转掩码二进制数据,然后在最低有效位上加1来完成的。对二进制数1101 0011 0110 000进行反求得到0010 1100 1001 1111。在最右边的位上加1得到二进制数0010 1100 1010 0000。这个二进制数等于十进制数11424。由于符号位表示温度为负值,因此转换后的十进制值要除以-256。因此,十进制值11424除以-256,得到的十进制温度值为-44.625°C。
DS1854/57/58数据表中描述的另一种方法是将二进制温度数据转换为十进制温度值的快速方法。将60h和61h的MSB和LSB值合并为无符号二进制值。确定此无符号二进制值的十进制值,然后除以256。如果结果小于128,则这是温度的°C十进制值。如果此值大于或等于128,则减去256以得到温度的十进制°C值。
V(CC)值存储在地址位置62h和63h。电压数据作为无符号16位值读取。同样,虽然所有16位都可以读取,但只有上面的12位被认为是重要的。由于用于V(CC)转换的缩放因子为100 μ V,因此12位的分辨率为1.6mV。使用更多的比特来获得更精细的分辨率将产生不准确的电压值,因为这些值将低于转换器的噪声底。因此,4个较低的位被0掩盖。表4显示了V(CC)数据的位权重和4个较低位的掩码。低4位掩码后,最大范围为65520。将该值乘以100 μ V的缩放因子,得到的最大缩放电压值为6.5520V。
62h (V(CC) MSB) | 63h (V(CC) LSB) | ||||||||||||||
2 (15) | 2 (14) | 2 (13) | 2 (12) | 2 (11) | 2 (10) | 2 (9) | 2 (8) | 2 (7) | 2 (6) | 2 (5) | 2 (4) | 2 (3) | 2 (2) | 2 (1) | 2 (0) |
2 (15) | 2 (14) | 2 (13) | 2 (12) | 2 (11) | 2 (10) | 2 (9) | 2 (8) | 2 (7) | 2 (6) | 2 (5) | 2 (4) | 0 | 0 | 0 | 0 |
例如,从62h和63h读取的值发现为D7A0h。将这个数字转换成十进制的结果是55200。将该值乘以100 μ V的缩放因子,得到的缩放电压值为5.520V。
输入引脚MON1、MON2和DS1858的MON3是无符号16位数字,使用类似于V(CC)转换的方法进行转换。与V(CC)转换一样,较低的4位被0掩盖,因为使用这些位获得的分辨率将产生不准确的电压值,因为这些值将低于转换器的噪声底。表5显示了输入字节的位权重和4个较低位的掩码。下4位掩码后,最大范围为65520,当其乘以38.147µV的比例因子时,转换为0V至2.499V的电压范围。
64h (MON1 MSB) | 65小时(1月1日) | ||||||||||||||
66h (MON2 MSB) | 67h(2月LSB) | ||||||||||||||
68h(仅限MON3 MSB, DS1858) | 69h(仅限MON3 LSB, DS1858) | ||||||||||||||
2 (15) | 2 (14) | 2 (13) | 2 (12) | 2 (11) | 2 (10) | 2 (9) | 2 (8) | 2 (7) | 2 (6) | 2 (5) | 2 (4) | 2 (3) | 2 (2) | 2 (1) | 2 (0) |
2 (15) | 2 (14) | 2 (13) | 2 (12) | 2 (11) | 2 (10) | 2 (9) | 2 (8) | 2 (7) | 2 (6) | 2 (5) | 2 (4) | 0 | 0 | 0 | 0 |
例如,从两个地址位置读取十六进制值9E70h。在用0掩盖4个较低的位之后,确定二进制值为1001 11100 0111 0000。十进制的对应值是40560。将该值乘以缩放因子38.147µV,得到缩放后的电压值为1.547V。
本应用笔记演示了如何将存储在DS1854、DS1857和DS1858中的二进制数据转换为有用的电压和温度值。关于本文档的任何问题都可以直接联系混合信号应用组。