你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G0系列内部温度传感器

[复制链接]
zhuhaha 提问时间:2021-1-6 21:05 /
最近主控MCU从F0换到了G0,用到了G0的内部温度传感器,有几个问题没能解决
1.文档上给出的出厂测量的温度的raw data只有30度的,用CubeMX生成的代码里倒是有30度和130度的
,但是130度的值比30度的值要大,意思是G0的内部温度传感器现在是PTC了?

2.现在在室温下(约20度)测量的内度温度传感器的AD值约为940,按照程序里给出的转换公式,换算出来的温度为-25度左右,
用热风枪对着MCu吹一下,AD值会增加到1100左右,证明AD检测的配置应该没什么问题。

Temperature = ((TS_ADC_DATA - TS_CAL1)
                             * (TS_CAL2_TEMP - TS_CAL1_TEMP))
                         / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP


想请教一下有哪位用过G0的内部温度传感器,例程中给出的温度计算公式是否正确。谢谢!
snap_screen_20210106210410.png
收藏 评论6 发布时间:2021-1-6 21:05

举报

6个回答
shenxiaolin_mai 回答时间:2021-5-17 16:35:49
可以找一下相关手册,或者对比一下正点原子的教程。
watershade 回答时间:2021-6-23 14:22:39
你这个问题引起了我的兴趣:
1、内部传感器本质还是使用ADC来测量的。2、F0的ADC也是12位的,G0的ADC也是12位的。如果配置可能不同,数值有可能不同?

3、公式似乎没有问题。
4、这两个系列的MCU的TS_CAL1获取条件有点不一样:
F0: TS ADC raw data acquired at a temperature of 30 °C (± 5 °C), VDDA= 3.3 V (± 10 mV)
G0: TS ADC raw data acquired at a temperature of 30 °C (± 5 °C), VDDA = VREF+ = 3.0 V (± 10 mV)
而且两个地址也不一样。
5、关于温度和输出是正相关还是负相关。我手边暂时没有F0,就用G0测试一下吧。(待会留言告诉你结果)
6、数据是左对齐还是右对齐。不过看情况应该没有搞错。
7、你说的cubemx生成的代码有130度,这个数据是在哪里设置的?理论上硬件应该不支持吧?

watershade 回答时间:2021-6-23 15:01:05
watershade 发表于 2021-6-23 14:22
你这个问题引起了我的兴趣:
1、内部传感器本质还是使用ADC来测量的。2、F0的ADC也是12位的,G0的ADC也是12 ...

不好意思,看不带编辑功能。就在这里写一下:
130度的在datasheet里面看到了:
Calibration value name Description Memory address
TS_CAL1TS ADC raw data acquired at a
temperature of 30 °C (± 5 °C),
VDDA = VREF+ = 3.0 V (± 10 mV)
0x1FFF 75A8 - 0x1FFF 75A9
TS_CAL2TS ADC raw data acquired at a
temperature of 130 °C (± 5 °C),
VDDA = VREF+ = 3.0 V (± 10 mV)
0x1FFF 75CA - 0x1FFF 75CB



watershade 回答时间:2021-6-23 16:35:43
watershade 发表于 2021-6-23 14:22
你这个问题引起了我的兴趣:
1、内部传感器本质还是使用ADC来测量的。2、F0的ADC也是12位的,G0的ADC也是12 ...

官方的计算方法在stm32g0xx_II_adc.h:
  1. #define __LL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
  2.                                   __TEMPSENSOR_ADC_DATA__,\
  3.                                   __ADC_RESOLUTION__)\
  4. ((((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) != 0) ?        \
  5.   (((( ((int32_t)((__LL_ADC_CONVERT_DATA_RESOLUTION((__TEMPSENSOR_ADC_DATA__),     \
  6.                                                     (__ADC_RESOLUTION__),          \
  7.                                                     LL_ADC_RESOLUTION_12B)         \
  8.                    * (__VREFANALOG_VOLTAGE__))                                     \
  9.                   / TEMPSENSOR_CAL_VREFANALOG)                                     \
  10.         - (int32_t) *TEMPSENSOR_CAL1_ADDR)                                         \
  11.      ) * (int32_t)(TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP)                    \
  12.     ) / (int32_t)((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) \
  13.    ) + TEMPSENSOR_CAL1_TEMP                                                        \
  14.   )                                                                                \
  15.   :                                                                                \
  16.   ((int32_t)LL_ADC_TEMPERATURE_CALC_ERROR)                                         \
  17. )
复制代码


watershade 回答时间:2021-6-23 18:15:22
TempSensor.7z.zip (6.01 MB, 下载次数: 43)
269587732 回答时间:2021-12-3 13:08:42

我算的更不对

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版