代码如下:
__idata float ad_conv_voltage(__idata uint16_t twosCCode)
{
twosCCode=twosCCode<<1; //加上1个最低有效位
if (twosCCode&0x8000) //如果是负数的话,取该数的二补码
{
return 0; //忽略处理
}
return (float)(twosCCode*(2*2.5)/0x10000);
}
__idata float ad_conv_ampere(__idata float voltage)
{
//参考电压2.5V时代表电流值93.75A(也就是最大输入电流值)
return ((voltage/2.5)*93.75);
}
经我们硬件工程师验证测试结果,发现转换后的电流值偏小,误差较大,请有经验的工程师帮忙看下是否公式有问题?
这款模数转换器精度为16位8通道,我们用它来检测电流数据,用spi进行通讯,设参考电压为2.5v,单端模式,内部时钟。