二进制移码(offset binary)型ADC实际电压值的计算
首先介绍一下二进制移码
以上图四位二进制码为例,左边是二进制移码,中间是10进制数,右边是二进制补码。
那么二进制移码与二进制数之间是如何转换的呢。
还是以上图为例,4位的二进制数,移码的1000对应的就是二进制数的0000,
当ADC值高于1000时,用测到的ADC值直接减去1000就为它实际值对应的二进制数。
以6为例,1110(移码)- 1000(偏移量)=110是6的二进制数。
当ADC值小于1000时,此时的转换方式是,将ADC值的每一位按位取反再加一,得到的结果第一位是符号位,后几位是实际值对应的二进制数。
以-4为例,0100(移码)取反再加一得到1100,此时的最高位是符号位。100是4的二进制。
在机器实际计算时,由于不能识别最高位的符号位,而是把它当成正常的二进制数来计算,所以我们需要手动的去掉最高位的符号位,在计算结束时再添加一个负号-,最终得到正确值
接下来计算实际电压
以4bit,动态范围-1~1V的ADC为例
大于1000时,实际电压=(移码-偏移量)/(2^3-1);
小于1000时,实际电压=-(按照上面计算得到的二进制)/(2^3-1)。