TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1110温度读取的不一致性

同样的程序在不同的模块中,在同一个区域内,同时采样温度,发现温度差异过大。有些读出来十多度,有些又达到了二十多度。相差快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;
}

VV:

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

jacky jacky:

回复 VV:

但是感觉差的有点大啊?

赞(0)
未经允许不得转载:TI中文支持网 » CC1110温度读取的不一致性
分享到: 更多 (0)