stm32l151c8t6内部测温得到的值是:ADC出来的数据是:610,通过计算程序算出的温度是-1;实际温度是30度。
程序不做任何修改烧入STM32L151RB中,ADC出来的数据是:680.计算出来的温度是:29.8.与实践相符。正确。
程序不做修改烧入STM32L152RB中:ADC出来的数据是:685.计算的温度是30.1.也正确。
计算用的参数是芯片内部的标定数据。
是在解释不通了,有谁可以帮忙?
程序如下:
typedef struct
{
uint16_t VREF;
uint16_t TS_CAL_COLD;
uint16_t reserved;
uint16_t TS_CAL_HOT;
} CALIB_TypeDef;
#define FACTORY_CALIB_BASE ((uint32_t)0x1FF80078) /*!< Calibration Data Bytes base address */
#define FACTORY_CALIB_DATA ((CALIB_TypeDef *) FACTORY_CALIB_BASE)
//****************************************************
//温度处理
//****************************************************
float Get_Temper(unsigned int Temper){
float tmp;
CALIB_TypeDef calibdata;
calibdata = *FACTORY_CALIB_DATA;
/* Calculate temperature in 癈 from Interquartile mean */
tmp =(float) Temper-calibdata.TS_CAL_COLD ;
tmp *=(110 - 25);
tmp /=(float)(calibdata.TS_CAL_HOT -calibdata.TS_CAL_COLD);
tmp +=25;
return tmp;
}
|