回复第 13 楼 于2014-06-09 11:27:06发表:
float ADC_Calculate(uint16 result_A,uint16 result_B)
{
float Vdd_Cal,ADCR_Temp25,ADCR_100m;
float i;
float Temp;
Vdd_Cal=655350/result_A;
ADCR_Temp25=471197/Vdd_Cal;
ADCR_100m=112393/Vdd_Cal;
Temp=(float)((result_B-ADCR_Temp25)*100/ADCR_100m);
i=(float)(25-Temp);
return (uint16)i;
}
看KL02的datasheet,ADC只有8bit、10bit、12bit模式,没有16bit模式,请问上面代码中的常数655350 471197 112393是如何计算来的???
你好,这个代码拷贝错了,这个是针对KL25的16位ADC的。
KL02的是这个代码:
float ADC_Calculate(uint16 result_A,uint16 result_B)
{
float Vdd_Cal,ADCR_Temp25,ADCR_100m;
float i;
float Temp;
Vdd_Cal=40950/result_A;
ADCR_Temp25=29320/Vdd_Cal;
ADCR_100m=6633/Vdd_Cal;
Temp=(float)((result_B-ADCR_Temp25)*100/ADCR_100m);
i=(float)(25-Temp);
return (uint16)i;
}
其中的40950是12位的ADC,即2的12次方-1 然后乘10.
29320是ADCRvdd*Vtemp25*10 即4095*0.716*10,Vtemp25你可以到KL02的datasheet中查看。
6633是ADCRvdd*m*1000 =4095*0.00162*1000,m的值同样可以到datasheet中查看。 |