zoukankan      html  css  js  c++  java
  • EFM32JG系列MCU内部温度传感器使用方法

    在很多电子类应用场合中,我们经常需要采集产品工作的周围环境温度,一般采取的方式有两种:

    1)外加温度传感器

    2)采用MCU内部温度传感器

    外加温度传感器会增加产品的成本以及布板空间,所以在很多场合,我们只要使用内部温度传感器就可以了,今天给大家介分享一下自带内部温度传感器EFM32JG系列MCU的使用方法和步骤。

    基本原理:

    EFM32JG的内部ADC集成在模拟模块部分,内部温度传感器上面的电压随着温度变化,需要通过12bit ADC采集温度传感器的ADC值,把ADC值换算成为温度值。

    第一步:ADC采集

    设置需要采集内部温度传感器的ADC通道,这里需要注意,ADC采用精度需要设置为12bit,参考源选择内部Vref 1.25V,采集信号源选择内部温度传感器。

    第二步:读取内部出厂校准值

    需要读取两个值:

    1)校准的温度值

    calTemp0 = ((DEVINFO->CAL & _DEVINFO_CAL_TEMP_MASK)

    /  >> _DEVINFO_CAL_TEMP_SHIFT);

    2)校准温度在46度下的ADC值

    calValue0 = ((DEVINFO->ADC0CAL3

    /* _DEVINFO_ADC0CAL3_TEMPREAD1V25_MASK is not correct in

    current CMSIS. This is a 12-bit value, not 16-bit. */

    & 0xFFF0)

    >> _DEVINFO_ADC0CAL3_TEMPREAD1V25_SHIFT);

    第三步:根据实际环境ADC采用的值,与校准值之间进行运算补偿,得出环境温度值

    计算公式为:

    TCELSIUS = CAL_TEMP-(ADC0CAL3_TEMPREAD1V25 - ADC_result)×VFS /(4096× V_TS_SLOPE)

    具体代码实现:

    readDiff =calValue0/2 - adcSample;

    temp=((float)readDiff * 1250);

    temp/=(4096 * -1.835);

    /* Calculate offset from calibration temperature */

    temp =(float)calTemp0-temp;

    相关技术文档:

    Silicon Labs EFM32JG12 Jade Gecko 32位MCU数据手册 详情>>>

    Silicon Labs EFM32JG1 32 bit MCU 详细数据手册(英文) 详情>>>

    看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。

    Silicon Labs Simplicity Studio平台开发工具

  • 相关阅读:
    Django 之 CBV & FBV
    如何在Pycharm设置ES6语法环境
    RabbitMQ_消息队列基本使用_2
    RabbitMQ_消息队列基本使用_1
    HTML 之 Table 表格详解
    Datetime 模块求日期差
    vue实例属性之methods和computed
    性格测试
    vue中的组件
    vue中的表单
  • 原文地址:https://www.cnblogs.com/Ph-one/p/7690755.html
Copyright © 2011-2022 走看看