在线时间15 小时
UID130170
注册时间2009-5-23
NXP金币0
该用户从未签到
金牌会员
 
- 积分
- 1745
- 最后登录
- 1970-1-1
|
发表于 2014-6-10 14:24:53
|
显示全部楼层
回复:KL02Z 内部温度传感器读出来的温度感觉不对
回复第 12 楼 于2014-06-09 11:26:22发表:
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是如何计算来的???
上面的代码是针对16位的KL25的ADC的,当然前提是选择12位的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中查看。
|
|