发 帖  
原厂入驻New
[资料] EFM32系列32位MCU的内部温度传感器介绍
2020-7-9 09:35:44  190 MCU 温度传感器
分享
  Silicon Labs EFM32系列的产品是基于Cortex-M0+/M3/M4内核的32位MCU,芯片最低工作电流可以达到37uA/MHz,EM2模式的休眠电流低到1.3uA,芯片的功耗特性较好,由于其超低功耗和丰富的外设等特性,被广泛的使用各种产品开发。
  EFM32系列的MCU中自带了温度传感器,本文主要以EFM32HG系列MCU为例,对内部的温度传感器做个简单的介绍。
  在参考手册中的ADC一章中,可以看到温度传感器计算的公式,如下图
  
  对公式中的各参数介绍如下
  T(CELSIUS):计算得出的温度,单位摄氏度
  CAL_TEMP_0:芯片生产时候的温度。EFM32系列的MCU在出厂时将生产温度以及此温度下对应的ADC读数保存在了芯片的Device Information(DI)Page,所以此数据保存于DI page中。可以理解为MCU在生产的时候进行了单点温度校准
  ADC0_TEMP_0_READ_1v25:在生产温度下,ADC的读数。此读数是在1.25V的内部参考下的12位ADC读数。
  ADC_result:当前的温度传感器的ADC结果。
  TGRAD_ADCTH:温度梯度,在公式这里单位应该是mV/℃,此数据可以在DataSheet中查看。如下图
  
  在Simplicity Studio中,我们还可以找到Demo程序,在这里我们可以看到官方提供的源码,如下图
  
  我将源码中关于将ADC结果转换为摄氏度的函数贴在下面,以供参考
  
  cal_temp_0为MCU生产时的温度,这个数据的单位是摄氏度,此数据是从MCU的Device Information页中读取的。此数据即上文提到的CAL_TEMP_0。
  cal_value_0为MCU在生产温度下,ADC的读数,同上文提到的ADC0_TEMP_0_READ_1V25。
  t_grad指的是温度梯度,这个-6.27可以在Datasheet中查到,单位为ADC Codes/°C
  关于EFM32内部的传感器,在偏移量(offset)和斜率(slope)上都有很大的变化。EFM32在出厂时做了单点的校准,但是在斜率上的误差还是会很容易的使测量误差达到±3℃。如果一段段的进行两点校准可以获得更高的准确度。而且ADC本身也存在误差,芯片发热也会影响温度传感器的测量数据。综上,当计划使用EFM32内部传感器做外部环境温度的测量时,就需要进行校准和测试,从而来判断此温度传感器是否适合自己产品上的应用。如果对环境温度测量的精度要求较高,比如精度需要达到0.1℃,那建议另加一颗温度传感器,例如Silicon Labs的Si7051。

1
分享淘帖 显示全部楼层

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发资料
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表