微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1110温度读取的不一致性

CC1110温度读取的不一致性

时间:12-22 整理:3721RD 点击:

同样的程序在不同的模块中,在同一个区域内,同时采样温度,发现温度差异过大。有些读出来十多度,有些又达到了二十多度。相差快10度左右。请帮忙看看是什么问题,还是CC1110自带的温度测量本来就是这样?

读取代码如下。

float get_avg_temperature(uint8 avg_times)
{
uint8 i=0;
bspIState_t s;
float avgTemp;
BSP_ENTER_CRITICAL_SECTION(s);

avgTemp = 0;
for(i = 0 ; i < avg_times ; i++)
{
avgTemp += getTemperature();
}
BSP_EXIT_CRITICAL_SECTION(s);
avgTemp /= avg_times;
return avgTemp;
}

static float getTemperature(void)
{

UINT8 i;
UINT16 accValue;
UINT16 value;
float temp=0;

accValue = 0;
for( i = 0; i < 4; i++ )
{
ADC_SINGLE_CONVERSION(ADC_REF_1_25_V | ADC_14_BIT | ADC_TEMP_SENS);
ADC_SAMPLE_SINGLE();
while(!ADC_SAMPLE_READY());

value = ADCL >> 4;
value |= (((UINT16)ADCH) << 4);

accValue += value;
}
value = accValue >> 2; // devide by 4

if( value<ADC_RESULT_AT_40DEG)//落在<40度区间
{
temp=(float)(V_DETA_PER_BIT*(UINT32)(value-ADC_RESULT_AT_0DEG))/COEFFICIENT_AT_0_40DEG ;

}
else if(value>ADC_RESULT_AT_40DEG)//落在40~80度区间
{
temp=(float)(V_DETA_PER_BIT*(UINT32)(value-ADC_RESULT_AT_40DEG))/COEFFICIENT_AT_40_80DEG ;

}
return temp;
}

这个是片内的温度传感器,精度相对来说不会很高。

但是感觉差的有点大啊?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top