打印
[STM32L1]

stm32l151c8t6内部测温奇怪的问题

[复制链接]
3595|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 | 只看该作者
应该还是采样计算公式  不正确的问题  楼主    使用正确的公式   应该就可以了  

使用特权

评论回复
5
cjwdyzdd| | 2017-3-31 19:30 | 只看该作者
请问楼主,今天我用stm32l151c8t6的内部测温也遇到了相同问题,AD值600左右,换算成温度-1℃左右。找不到c8t6的特别说明文档,你是怎么解决的,能指点一下吗,谢谢

使用特权

评论回复
6
戈卫东| | 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;
全定义成有符号数应该可以避免你的错误

使用特权

评论回复
7
戈卫东| | 2017-3-31 19:54 | 只看该作者
Temper也要定义成有符号

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

472

帖子

7

粉丝