[STM32L1] stm32l151c8t6内部测温奇怪的问题

[复制链接]
4481|6
 楼主| MOn51 发表于 2013-7-14 20:49 | 显示全部楼层 |阅读模式
刚才发错了!重发!!
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;         
}
 楼主| MOn51 发表于 2013-7-14 20:51 | 显示全部楼层
已经收入了多片STM32L151C8T6,温度是各有千秋啊。这个芯片出厂时到底标定了没有。
fengzaideng 发表于 2013-11-18 15:25 | 显示全部楼层
我通过这种方式算出来的温度一直不正确.到是这种方式算出来的可以    TEMP=(V/1.66)-273.15
puchuang 发表于 2013-11-18 19:33 | 显示全部楼层
应该还是采样计算公式  不正确的问题  楼主    使用正确的公式   应该就可以了  
cjwdyzdd 发表于 2017-3-31 19:30 | 显示全部楼层
请问楼主,今天我用stm32l151c8t6的内部测温也遇到了相同问题,AD值600左右,换算成温度-1℃左右。找不到c8t6的特别说明文档,你是怎么解决的,能指点一下吗,谢谢
戈卫东 发表于 2017-3-31 19:53 | 显示全部楼层
typedef struct
{
     int16_t VREF;
     int16_t TS_CAL_COLD;
     int16_t reserved;
     int16_t TS_CAL_HOT;
} CALIB_TypeDef;
全定义成有符号数应该可以避免你的错误
戈卫东 发表于 2017-3-31 19:54 | 显示全部楼层
Temper也要定义成有符号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

472

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部