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.

[参考译文] MSP430FR5962:温度传感器校准值在不同的器件上是不同的,我认为这些器件在两个板上产生不同的读数

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/667326/msp430fr5962-temp-sensor-calibration-values-are-different-across-devices-which-i-believe-are-producing-different-readings-on-two-boards

部件号:MSP430FR5962

大家好,

我的一位客户刚刚生产了一批新的6块板, 其中一块板的读数很差(预计在25°C时为5°C); 在地址0x001A00通过CCS中的内存浏览器窗口检查校准值时,我们发现前两个字节相同,但后两个字节完全不同。 我们怀疑这是不同温度读数的结果。   

您是否可以确认这些校准字节应该相同,或者解释其他因素可能导致不同的温度读数。

提前感谢您的参与,

胡安

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

    您好,Juan,

    请参阅数据表中的设备描述符表。 您提到的后两个字节实际上是CRC值,设备之间的值可能不同。

    温度传感器校准数据从地址0x1A1A到0x1A25。 设备之间的值也不同。

    请尝试以下代码示例以读取温度并查看其是否工作。

    /*--版权--,BSD_EX
    *版权所有(c) 2015,Texas Instruments Incorporated
    *保留所有权利。
    *
    **
    允许以源代码和二进制格式重新发布和使用,无论是否进行*修改,只要
    满足以下条件*:
    *
    ****重新发布源代码必须保留上述版权
    *声明,此条件列表和以下免责声明。
    *
    ***以二进制格式重新分发时,必须在
    
    随分发提供的*文档和/或其他材料中复制上述版权*声明,此条件列表和以下免责声明。
    *
    ***
    
    未经事先书面许可,不得使用德州仪器(TI)公司的名称或*其贡献者的名称来支持或促销由本软件衍生的产品*。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *,
    
    不提供任何明示或暗示的担保,包括但不限于*对适销性和特定*用途适用性的暗示担保。 在任何情况下,版权所有者或
    *贡献者均不对任何直接,间接,附带,特殊,
    *示范, 或后果性损害(包括但不限于
    *购买替代商品或服务;使用,数据或利润损失;
    (*或业务中断),但根据任何责任理论
    ,*无论是合同,严格责任还是侵权行为(包括疏忽或
    *其他),均因使用本软件而导致*
    ,即使已被告知此类损害的可能性。
    *
    ******************
    *
    ** MSP430代码示例免责声明
    *
    MSP430代码示例是独立的低级程序
    ,通常*以高度
    *简洁的方式演示单个外设功能或器件功能。 因此,代码可能依赖于设备的开机默认
    值*寄存器值和设置(如时钟配置),
    在合并多个示例中的代码时必须*小心,以避免潜在的副作用
    *。 另请参阅www.ti.com/grace了解GUI,并参阅www.ti.com/msp430ware
    *了解外围设备配置的API功能库方法。
    *
    **--/copyright--*//************************************************************************************************************************
    
    // MSP430FR5x9x演示- ADC12_B,样品A10温度并转换为oC和//
    
    ////描述:在A10上使用内部参考电压
    // 1.2V制作单个样品。 软件手动将ADC12SC设置为开始采样和转换,并且
    //在EOC自动清除。 它使用ADC12OSC转换样本。
    //主环路使MSP430在LPM4中处于休眠状态,以节省电源,直到ADC转换
    //完成。 ADC12_ISR在从中断
    //处理程序退出时强制从LPMM退出,以便主循环可以执行并计算oC和oF。
    // aclk = n/a,MCLK = SMCLK =默认DCO ~ 1.045MHz,ADC12CLK = ADC12OSC
    ////
    设备之间未校准的温度测量值因
    //设备之间的斜率和偏移差异而异-请参阅数据表。
    //注意:此示例使用TLV校准温度计算
    //温度
    //(TLV校准数据存储在信息段中,请参阅设备数据表)
    ////
    MSP430FR5994
    // --------
    // /|\\| |//
    || |//
    --|RST |//
    | |//
    |A30. |////
    
    William Goh
    // Texas Instruments Inc.
    // 2015年10月
    //采用IAR嵌入式6.30 工作平台和Code Composer Studio 6.1 /******************************************************************************************************构建
    
    #include <MSP430-h>
    
    #define CALADC12_12V_30C *(unsigned int *) 0x1A1A)//温度传感器校准-30 C
    //参见TLV表内存映射的设备数据表
    #define CALC12_12V_85C *(unsigned int *)0x1A1C)//温度传感器校准-85 C
    
    无符号int温度;
    挥发性浮点温度DegC;
    挥发性浮点温度F;
    
    int main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; //停止WDT
    
    //初始化共享参考模块
    //默认情况下,REFMSTR=1 => REFCTL用于配置内部引用
    同时(REFCTL0和REFGENBUSY); //如果ref发生器忙,请等待
    REFCTL0 |= REFVSEL_0 + REFON; //启用内部1.2V参考
    
    //初始化ADC12_A
    ADC12CTL0 &=~ADC12ENC; //禁用ADC12
    ADC12CTL0 = ADC12SHT0_8 + ADC12ON; //设置采样时间
    ADC12CTL1 = ADC12SHP; //启用采样计时器
    ADC12CTL3 = ADC12TCMAP; //启用内部温度传感器
    ADC12MCTL0 = ADC12VRSEL_1 + ADC12INCH_30;// ADC输入通道A30 =>温度感应
    ADC12IER0 = 0x001; //转换结果ADC_IFG - ADCMEMMO
    
    while (!(REFCTL0 & REFGENRDY)); //等待参考发生器
    //结算
    ADC12CTL0 || ADC12ENC;
    
    同时(1)
    {
    ADC12CTL0 |= ADC12SC; //开始采样和转换
    
    __bis_sr_register(LPM0_bits + GIE);//启用中断的LPM4
    __no_operation();
    
    //以摄氏度为单位的温度。 请参阅中的设备描述符表部分
    //系统重置,中断和操作模式,系统控制模块
    //设备用户指南中的章节,了解有关的背景信息
    //使用的公式。
    温度DegC =(浮点)(((浮点)温度- CALADC12_12V_30C)*(85 - 30))/
    (CALADC12_12V_85C - CALADC12_12V_30C)+ 30.0f;
    
    //华氏温度TF =(9/5)*TC +32
    温度DegF =温度DegC * 9.0f / 5.0f + 32.0f;
    
    __no_operation(); //在此处设置断点
    }
    }
    
    #if defined(__TI_Compiler_version__)|| defined(__IAR_systems_ICC__)
    #pragma vector=ADC12_B_vector
    __interrupt void ADC12ISR (void)
    #Elif defined(__GNUC__)
    void __attribute__((interrupt (ADC12_B_vector)) ADC12ISR #void )
    
    
    #endif
    {
    Switch(__偶 数_in_range(ADC12IV, ADC12IV__ADC12RDYIFG))
    {
    CASE ADC12IV__NONE: 中断;//矢量0:无中断
    CASE ADC12IV__ADC12OVIFG:中断;//矢量2:ADC12MEMx溢出
    CASE ADC12IV__ADC12TOVIFG:中断;//矢量4:转换时间溢出
    CASE ADC12IV__ADC12HIIFG:Break;// Vector 6:ADC12BHI
    CASE ADC12IV__ADC12LOIFG:中断;//矢量8:ADC12BLO
    CASE ADC12IV__ADC12INIFG:中断;//矢量10:ADC12BIN
    CASE ADC12IV__ADC12IFG0: //向量12:ADC12MEM0中断
    TEMP = ADC12MEM0; //移动结果,IFG被清除
    __BIC_SR_REGISTER_ON_EXIT (LPM4_bits);//退出活动CPU
    中断;
    CASE ADC12IV__ADC12IFG1:Break;// Vector 14:ADC12MEM1
    CASE ADC12IV__ADC12IFG2:中断;//矢量16:ADC12MEM2
    CASE ADC12IV__ADC12IFG3:中断;//矢量18:ADC12MEM3
    CASE ADC12IV__ADC12IFG4:中断;//矢量20:ADC12MEM4
    CASE ADC12IV__ADC12IFG5:中断;//矢量22:ADC12MEM5
    CASE ADC12IV__ADC12IFG6:Break;// Vector 24:ADC12MEM6
    CASE ADC12IV__ADC12IFG7:中断;//矢量26:ADC12MEM7
    CASE ADC12IV__ADC12IFG8:中断;//矢量28:ADC12MEM8
    CASE ADC12IV__ADC12IFG9:中断;//矢量30:ADC12MEM9
    CASE ADC12IV__ADC12IFG10:中断;//矢量32:ADC12MEM10
    CASE ADC12IV__ADC12IFG11:中断;//矢量34:ADC12MEM11
    CASE ADC12IV__ADC12IFG12:中断;//矢量36:ADC12MEM12
    CASE ADC12IV__ADC12IFG13:中断;//矢量38:ADC12MEM13
    CASE ADC12IV__ADC12IFG14:Break;// Vector 40:ADC12MEM14
    CASE ADC12IV__ADC12IFG15:中断;//矢量42:ADC12MEM15
    CASE ADC12IV__ADC12IFG16:中断;//矢量44:ADC12MEM16
    CASE ADC12IV__ADC12IFG17:Break;// Vector 46:ADC12MEM17
    CASE ADC12IV__ADC12IFG18:中断;//矢量48:ADC12MEM18
    CASE ADC12IV__ADC12IFG19:中断;//矢量50:ADC12MEM19
    CASE ADC12IV__ADC12IFG20:中断;//矢量52:ADC12MEM20
    CASE ADC12IV__ADC12IFG21:中断;//矢量54:ADC12MEM21
    CASE ADC12IV__ADC12IFG22:中断;//矢量56:ADC12MEM22
    CASE ADC12IV__ADC12IFG23:Break;// Vector 58:ADC12MEM23
    CASE ADC12IV__ADC12IFG24:中断;//矢量60:ADC12MEM24
    CASE ADC12IV__ADC12IFG25:中断;//矢量62:ADC12MEM25
    CASE ADC12IV__ADC12IFG26:Break;// Vector 64:ADC12MEM26
    CASE ADC12IV__ADC12IFG27:中断;//矢量66:ADC12MEM27
    CASE ADC12IV__ADC12IFG28:中断;//矢量68:ADC12MEM28
    CASE ADC12IV__ADC12IFG29:中断;//矢量70:ADC12MEM29
    CASE ADC12IV__ADC12IFG30:中断;//矢量72:ADC12MEM30
    CASE ADC12IV__ADC12IFG31:中断;//矢量74:ADC12MEM31
    CASE ADC12IV__ADC12RDYIFG:中断;//矢量76:ADC12RDY
    默认值:break;
    }
    }
    

    此致,

    林氏六音

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

    我在显示低温的设备上运行了此示例。  主板处于室温,读数显示约为2C。  这种低读数与我通过自己的代码获得的读数相似,它导致我与Juan和TI的初次接触。  接下来的步骤是什么?  我尝试在显示结果的调试窗口中粘贴,但未显示,但我成功复制了以下内容:

    名称:TemperatureDegC.
       默认值:1.9907.3982万
       十六进制:0x3FFED090
       十进制:1.9907.3982万
       八进制:7.7775万50220</s>5.022万
       二进制:0.1111万111110101101000010010000b</s>11.111万 10.1101万0.001万1万

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

    感谢您提供信息。 您能否读取该MCU的TLV数据(从01A00h到01A2Dh)并发送给Juan。 这些数据将有助于我们进一步调查。

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

    林格-我原是在2月26日把它寄给胡安的。 又来了。

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

    你好,Neil,

    我们需要更多数据进行分析。 请您向我们提供以下信息吗?

    2个好样本和1个坏样本的TLV数据(1A00h ~ 1A2Dh)

    这3个样本的ADC转换原始数据。  

    一旦我们得到这些数据,我们就应该得出结论。 谢谢。

    此致,

    林氏六音

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

    我今天只有坏的阅读板和一个好的阅读板。  以下是数据:

    错误主板98D6读取-3C,A/D读取为0x613。

    正常主板1E58读取22C,A/D读取为0x667。

    我正在使用2.0V参考电压来获取这些读数。

    已上传TLV数据文件。

    如果您仍需要更多数据,请告诉我。

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

    你好,Neil,

    我看不到TLV数据文件。 您能否将数据发送至ling-zhu@ti.com?

    与校准值相比,“故障”芯片的ADC样本数据不合理(太小)。 请你  

    1.尝试使用1.2V和2.5V参考再次采样温度。  并向我发送ADC原始数据,该数据可以从ADC12MEM0读取。

    2.使用其它外部ADC通道对特定电压进行采样,以检查转换结果是否正确。


    谢谢。

    此致,
    林氏六音

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

    在坏设备上,在室温下使用您的示例代码,该示例代码针对不同的参考而修改:

    Ref = 1.2V T = 2.84C ADC12MEM0 = 0x0A49

    Ref = 2.0V T = 3.07C ADC12MEM0 = 0x062B

    Ref = 2.5V T = 2.50C ADC12MEM0 = 0x04EC

     

     

    使用我的代码:

    测量外部V (在A/D通道0x1F处对MSP430的数字电源):

                  电压表= 3.290V,A/D = 3.289V

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

    e2e.ti.com/.../1E58TLVGood.txt

    e2e.ti.com/.../98D6TLVBad.txt

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

    你好,Neil,

    感谢您提供这些信息。 我们仔细查看了该"故障"芯片的TLV数据,但所有数据看起来都很好。 根据我们的经验,这种情况以前从未发生过。 为了帮助进一步检查,我们希望重新运行测试,以获取30C和85C以下的ADC转换数据,并使用一些内部参考电压(1.2V或2.0V或2.5V),这与我们运行以获取这些校准数据的情况相同。 我不确定您是否可以继续支持我们尝试;如果您不容易在30C和85C下采样数据,您可以帮助将该芯片发送给我们,请随时分享您的想法!

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

    你好,Collins,

    我认为此时,我必须将设备提供给您,以便您可以执行测试和故障分析。  我要尽快解决的问题是,我没有技术人员可以随时移除设备,因此我无法将其发送给您。  我可能最终拥有这种能力,但不确定何时。  另一个选项是,我将此器件上的PCB组件(在保密情况下)发送给TI的您,以便那里的人可以将其卸下,如果可能,请更换另一个5962 (如果您需要我也可以发送)。  一旦设备被拆除和更换,我将请求立即将PCB发回给我。  我希望尽早就这一问题取得进一步的结果,因此这是首选办法。

    请告诉我您想做什么,并提供您的发货地址,无论是PCB组件还是最终设备本身。 谢谢!

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

    此问题正在脱机处理,设备将被发送回以进行故障分析。  因此,我要结束这一线程