DS1852是一款数字电位器,具有5路模拟输入,可与电位器配合使用,收集模拟系统的反馈信息,并提供模拟控制功能。其预期应用是在激光收发器中提供高水平的控制和仪表,但它可用于需要这种仪器和控制的任何类型的控制系统。本应用简介讨论DS1852中模拟输入寄存器的解释。它旨在作为数据资料的补充,供软件/固件开发人员编写代码来控制DS1852。
介绍
DS1852的模数转换器(ADC)读取5个模拟输入。本应用笔记解释了如何解释温度的数字值,VCC,并模拟输入数据并将其转换为温度和电压。
缩放校准
每个模拟输入 (VCC, Bin, Pin, Rin) 具有表 03h EEPROM 中用于校准的 16 位缩放值。本应用笔记假设使用出厂默认缩放值。
将温度从十六进制转换为十进制
转换DS1852温度值的过程从读取以字节60h(温度的MSB)和61h(温度的LSB)为单位的十六进制值开始。这两个字节包含最新的温度读数,但是较低的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 |
温度存储在二进制数据的 12 MSB 中。MSB 是符号位,指示 2 的补码二进制数是正数还是负数。如果 MSB 为 0,则温度为正。如果 MSB 为 1,则温度为负。接下来的 11 位包含温度值,并以不同的方式转换为正值和负值的小数。
正温度转换
下面是如何将正温度值从十六进制转换为十进制的示例。在此示例中,地址 60h 和 61h 中的值分别读取为 3Ch 和 50h。将这两个字节组合在一起,得到十六进制值 3C50h。接下来,将十六进制数据转换为二进制。3C50h 的二进制等效值是 0011 1100 0101 0000。由于MSB为0,因此温度为正。二进制数据的较低 4 位将被忽略,因此它们被 0 屏蔽。表 2 显示了从十六进制到二进制的转换以及低 4 位的屏蔽。
十六进制数据 | 二进制数据 | 屏蔽的二进制数据 |
3C50h | 0011 1100 0101 0000 | 0011 1100 0101 0000 |
由于MSB符号位为0,因此温度为正,不需要2的补码变换。因此,可以使用计算器将该值直接转换为十进制数。二进制数 0011 1100 0101 0000 等于十进制值 15440。十进制值必须除以 256(或乘以 2-8) 以计算正确的十进制温度值。将十进制值 15440 除以 256 得到十进制温度值为 60.3125°C。
负温度转换
转换负温度值 (MSB = 1) 有点复杂。例如,地址 60h 和 61h 包含数据 D3h 和 60h。第一步是将十六进制值转换为二进制。同样,较低的 4 位被忽略,因此它们将被 0 屏蔽。表 3 显示了从十六进制到二进制的转换以及 4 个低位的屏蔽。
十六进制数据 | 二进制数据 | 屏蔽的二进制数据 |
D350K | 1101 0011 0110 0000 | 1101 0011 0110 0000 |
下一步是获取掩码二进制值的 2 补码。这是通过首先反转屏蔽的二进制数据,然后将 1 添加到 LSB 来完成的。二进制数 1101 0011 0110 0000 转换为 0010 1100 1001 1111。将 1 添加到 LSB 会得到二进制数 0010 1100 1010 0000。此二进制数等于十进制数 11424。与正温度示例一样,转换后的十进制值除以 256,但也变为负值,因为温度为负,如 MSB 所示。因此,十进制值 11424 除以 -256,得出十进制温度值为 -44.625°C。
VCC译本
五世抄送值存储在地址位置 62h 和 63h 中。电压数据作为无符号的16位值读取,但较低的4位被忽略。读取 62h 和 63h 时,较低的 4 位应用0 屏蔽。表 4 显示了 V 的位权重抄送数据和 4 个较低位的屏蔽。在屏蔽较低的4位时,最大范围为65520,当乘以100μV的LSB(比例因子)(出厂默认值)时,转换为0V至6.552V的电压范围。
62小时(VCC MSB) | 63小时( VCC 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.52V。
模拟输入 (Bin, Pin, Rin)
模拟输入引脚B在, P在和 R在是无符号的 16 位数字,并以相同的方式翻译。表5显示了模拟输入字节的位权重和4个较低位的屏蔽。在屏蔽较低的4位时,最大范围为65520,当乘以38.147μV(出厂默认值)的LSB(比例因子)时,相当于0V至2.499V的电压范围。
64小时 (Pin MSB) | 65小时(Pin LSB) | ||||||||||||||
66小时(Pin MSB) | 67小时(Pin LSB) | ||||||||||||||
68小时(Rin MSB) | 69h (Rin 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 |
例如,从两个地址位置读取十六进制值 9E70h。用 0 屏蔽 4 个低位后,二进制值确定为 1001 1110 0111 0000。十进制等效项为 40560。将该值乘以比例因子 38.147μV 得到 1.547V 的缩放电压值。
结论
本应用笔记演示如何将DS1852中存储的十六进制数据转换为十进制值。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !