This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430I2021:集成温度传感器值计算

Guru**** 2548230 points
Other Parts Discussed in Thread: MSP430I2021

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/614737/msp430i2021-integrated-temperature-sensor-value-calculation

部件号:MSP430I2021
主题中讨论的其他部件: MSP430WARE

您好,

我正在寻找C代码实施的示例,以检索MSP430i2021 集成温度传感器的温度值(以度为单位)。 该公式在slau335.pdf (http://www.ti.com/lit/ug/slau335/slau335.pdf )的第13.2 11章中给出,很遗憾,到目前为止,我还没有得到一个实际的温度值。

我还在用户指南中看到,建议重新校准温度传感器偏移错误。 为了在广泛的环境温度范围(例如0°C至80°C)内获得有意义的温度值读数(+-5°C),您会对校准提出什么建议?

提前感谢您的帮助,
-nico

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Nicolas:

    您可以在MSP430Ware中找到一个C代码示例,该示例使用i20xx器件中的集成温度传感器。 项目名称为"msp430i20xx_sd24_06"。 在构建/运行示例时,请务必遵循有关Vref和AVss之间的电容器的说明,并确保将'low_leve_init.c'文件包含在项目中。

    关于使用哪个公式,我想您会发现上面提到的代码示例顶部的注释非常有用。 使用这些方程式,您可以先假设偏移为零,然后在所需温度范围内表征内部温度传感器的性能。 然后,根据此性能(观察结果与实际结果),您可以引入偏移。 如果此偏移量在您的整体温度范围内的某些范围内有所不同,您可以使用特定于这些范围的偏移量。

    msp430i20xx_sd24_06.c

    /*--版权--,BSD_EX
    *版权所有(c) 2013,Texas Instruments Incorporated
    *保留所有权利。
    *
    **
    允许以源代码和二进制格式重新发布和使用,无论是否进行*修改,只要
    满足以下条件*:
    *
    ****重新发布源代码必须保留上述版权
    *声明,此条件列表和以下免责声明。
    *
    ***以二进制格式重新分发时,必须在
    
    随分发提供的*文档和/或其他材料中复制上述版权*声明,此条件列表和以下免责声明。
    *
    ***
    
    未经事先书面许可,不得使用德州仪器(TI)公司的名称或*其贡献者的名称来支持或促销由本软件衍生的产品*。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *,
    
    不提供任何明示或暗示的担保,包括但不限于*对适销性和特定*用途适用性的暗示担保。 在任何情况下,版权所有者或
    *贡献者均不对任何直接,间接,附带,特殊,
    *示范, 或后果性损害(包括但不限于
    *购买替代商品或服务;使用,数据或利润损失;
    (*或业务中断),但根据任何责任理论
    ,*无论是合同,严格责任还是侵权行为(包括疏忽或
    *其他),均因使用本软件而导致*
    ,即使已被告知此类损害的可能性。
    *
    ******************
    *
    ** MSP430代码示例免责声明
    *
    MSP430代码示例是独立的低级程序
    ,通常*以高度
    *简洁的方式演示单个外设功能或器件功能。 因此,代码可能依赖于设备的开机默认
    值*寄存器值和设置(如时钟配置),
    在合并多个示例中的代码时必须*小心,以避免潜在的副作用
    *。 另请参阅www.ti.com/grace了解GUI,并参阅www.ti.com/msp430ware
    *了解外围设备配置的API功能库方法。
    *
    **--/copyright--*//************************************************************************************************************************
    
    // MSP430i20xx演示- SD24,使用集成温度传感器
    ////
    说明:此程序使用SD24模块在
    内部连接到SD24
    //温度传感器的单通道上执行单//转换。 转换完成后,结果将存储在
    //变量中,然后转换为摄氏度和华氏度值。
    ////
    通过在指定行设置断点进行测试。 到达断点
    //时,转换结果将存储在结果数组中。 结果将
    被//获取并转换为度数K,C和F,并保存在相同
    的//数组中。
    //
    // aclk = 32kHz,MCLK = SMCLK =校准DCO = 16.384MHz,SD_CLK = 1.024MHz
    //*构建/运行此示例时确保包含low_leve_init.c *
    ////
    注:有关SD24模块所需的最低Vcc -请参见数据表
    // 当使用1.2V ref
    ////
    传感器的温度系数为2.158mV/K (来自数据表)
    //传感器的偏移电压范围为-100mV至100mV (假设为0)//
    Vsensor = 1.32mV * Degk + Vsensor_offset (假设偏移为0mv)时,建议使用100nF电流保护。
    // Vsensor =(SD24MEM0)/3.2767万 * Vref (mV)
    // DegK =(SD24MEM0 * 1200)/3.2767万/Deg= 2.158 (SD24MEM0 * 1200)/7.0711万
    // degC = DegK - 273
    // degF =(degC * 9/5)+ 32
    //
    
    ///////////////////////////////// MSP430i20xx
    // --------
    // /|\\| |//
    || |//
    --|RST |//
    | | (A 0.6 +/-内部连接)
    // A |A 0.6 + 参考电压|--++(至SD24的温度传感器)
    // A 0.6 - |||//
    | |-+- 100nF
    // | |-+-
    // | |||//
    | AVSS |--+////
    
    T. Witt
    //德州仪器(TI)
    // 2013年9月
    //使用Code Composer Studio v 5.5 //************************************************************************************************构建
    
    #include "MSP430-h"
    
    unsigned int结果[4]; // SD24转换和温度结果
    // results[0]=原始SD24结果
    //结果[1]=以K为单位的温度
    //结果[2]= C中的温度
    //结果[3]= F
    
    void main中的temp (void){
    WDTCTL = WDTPW | WDTHOLD; //停止WDT
    
    SD24CTL = SD24REFS; //内部参考
    SD24CCTL0 |= SD24SNGL | SD24DF | SD24IE;//启用中断
    SD24INCTL0 || SD24INCH_6; //内部温度传感器
    
    __DELAY周期(3200); //延迟~200us,用于1.2V参考稳定
    
    而(1){
    SD24CCTL0 |= SD24SC; //设置开始转换的位
    __bis_sr_register (LPM0_BITS | GIE); //输入带中断的LPM0
    __no_operation(); //用于调试器
    
    //计算不同尺度的温度
    results[1]=(unsigned long) results[0]* 1200)/70711;7.0711万;
    结果[2]=结果[1]-273;
    结果[3]=(结果[2]*9/5)+32;
    
    __no_operation(); //在此处设置断点
    }
    }
    
    #if defined(__TI_Compiler_version__)|| defined(__IAR_systems_ICC__)
    #pragma vector=SD24_vector
    __interrupt void SD24_ISR(void)
    #Elif defined(__GNU__)
    void __attribute__((interrupt (SD24_vector)) SD24_ISR (void)#elide)
    
    不支持#else错误#else
    #endif
    {
    开关(__偶 数_范围内(SD24IV,SD24IV_SD24MEM3)){
    Case SD24IV_none:中断;
    Case SD24IV_SD24OVIFG:Break;
    案例SD24IV_SD24MEM0:
    results[0]= SD24MEM0; //保存CH0结果(清除IFG)
    中断;
    Case SD24IV_SD24MEM1:Break;
    Case SD24IV_SD24MEM2:Break;
    案例SD24IV_SD24MEM3:中断;
    默认值:break;
    }
    __BIC_SR_REGISTER_ON_EXIT (LPM0_bits); //从LPM0唤醒
    }
    

    此致,

    詹姆斯

    MSP客户应用程序

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你,James。 这回答了我的问题。
    此致,
    -nico
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常棒! 感谢您告诉我。

    此致,

    詹姆斯

    MSP客户应用程序