DS1854、DS1857和DS1858监测VCC、环境温度和外部模拟输入。本应用笔记解释了如何解释存储在主器件SRAM中的值并将其转换为温度和电压。还介绍了2补体转换的回顾。
将温度从二进制转换为十进制
转换DS1854/57/58的温度值的过程首先读取以字节60h(温度的MSB)和61h(LSB的温度)存储的值。这两个字节包含最新的温度读数。12 个上位被认为是重要的。较低的4位可供读取,但是通过读取这些位获得的分辨率通常没有用,因为最佳分辨率为0.0586°C。 大多数应用不需要这种分辨率,因为电阻的温度查找表仅随每2°C变化而变化。因此,读取时应用4屏蔽0个较低的位,以避免温度校准中不断的微小变化。4个较低位的位权重和掩码如表1所示。
60小时 (温度兆字节) | 61小时 (温度LSB) | ||||||||||||||
S | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 2-1 | 2-2 | 2-3 | 2-4 | 2-5 | 2-6 | 2-7 | 2-8 |
S | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 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 位的屏蔽。
十六进制数据 | 二进制数据 | 屏蔽的二进制数据 |
3C50h | 0011 1100 0101 0000 | 0011 1100 0101 0000 |
由于符号位为 0,因此温度为正,不需要 2 的补码变换。因此,可以使用计算器将该值直接转换为十进制数。二进制数 0011 1100 0101 0000 等于十进制值 15440。十进制值必须除以 256(或乘以 2-8)才能计算出正确的十进制温度值。将十进制值 15440 除以 256 得到十进制温度值为 60.3125°C。
负温度转换
转换负温度值(上位 = 1)稍微复杂一些。例如,如果地址 60h 和 61h 包含数据 D3h 和 60h(较低的 4 位被屏蔽)。第一步是将十六进制值转换为二进制。表 3 显示了从十六进制到二进制的转换以及 4 个低位的屏蔽。
十六进制数据 | 二进制数据 | 屏蔽的二进制数据 |
D360h | 1101 0011 0110 0000 | 1101 0011 0110 0000 |
下一步是获取掩码二进制值的 2 补码。这是通过首先反转屏蔽的二进制数据,然后将 1 添加到最低有效位来完成的。反转二进制数 1101 0011 0110 0000 结果为 0010 1100 1001 1111。在最右侧位上加 1 会得到二进制数 0010 1100 1010 0000。此二进制数等于十进制数 11424。由于符号位指示温度为负值,因此转换后的十进制值除以 -256。因此,十进制值 11424 除以 -256,得出十进制温度值为 -44.625°C。
替代方法
DS1854/57/58数据资料中描述的另一种方法是将二进制温度数据转换为十进制温度值。将 60 小时和 61 小时内的 MSB 和 LSB 值组合为无符号二进制值。确定此无符号二进制值的十进制值,然后除以 256。如果结果小于 128,则这是温度的 °C 十进制值。如果该值大于或等于 128,则减去 256 得到温度的十进制 °C 值。
VCC 翻译
VCC 值存储在地址位置 62h 和 63h 中。电压数据作为无符号的16位值读取。同样,虽然所有 16 位都可供读取,但只有较高的 12 位被认为是重要的。由于VCC转换所使用的比例因子为100μV,因此12位的分辨率为1.6mV。使用更多位获得更精细的分辨率会产生不准确的电压值,因为这些值将低于转换器的本底噪声。因此,4 个较低的位被 0 屏蔽。表 4 显示了 VCC 数据的位权重和 4 个较低位的屏蔽。在屏蔽较低的 4 位的情况下,最大范围为 65520。将该值乘以100μV的比例因子,得到最大比例电压值为6.5520V。
62小时(V抄送MSB) | 63小时(V抄送LSB) | ||||||||||||||
215 | 214 | 213 | 212 | 211 | 210 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
215 | 214 | 213 | 212 | 211 | 210 | 29 | 28 | 27 | 26 | 25 | 24 | 0 | 0 | 0 | 0 |
例如,从 62h 和 63h 读取的值为 D7A0h。将此数字转换为十进制将导致值为 55200。将该值乘以100μV的比例因子,得到5.520V的标定电压值。
受监控的模拟输入 (MON) 转换
模拟输入引脚MON1、MON2和DS1858的MON3均为无符号16位数字,采用类似于V的方法进行转换抄送译本。与 V 一样抄送换言之,较低的4位被0屏蔽,因为使用这些位获得的分辨率会产生不准确的电压值,因为这些值将低于转换器的本底噪声。表5显示了模拟输入字节的位权重和4个较低位的屏蔽。在屏蔽较低的4位时,最大范围为65520,当乘以0.2μV的比例因子时,这意味着电压范围为499V至38.147V。
64小时 (月1 毫秒) | 65小时 (月1 LSB) | ||||||||||||||
66小时 (月2 毫秒) | 67小时 (月2 LSB) | ||||||||||||||
68小时(仅 MON3 MSB,仅限 DS1858) | 69小时 (仅 MON3 LSB,仅限 DS1858) | ||||||||||||||
215 | 214 | 213 | 212 | 211 | 210 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
215 | 214 | 213 | 212 | 211 | 210 | 29 | 28 | 27 | 26 | 25 | 24 | 0 | 0 | 0 | 0 |
例如,从两个地址位置读取十六进制值 9E70h。用 4 屏蔽 0 个低位后,二进制值确定为 1001 1110 0111 0000。十进制等效项为 40560。将该值乘以比例因子 38.147μV 得到 1.547V 的缩放电压值。
结论
本应用笔记演示如何将DS1854、DS1857和DS1858中存储的二进制数据转换为有用的电压和温度值。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !