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.

[参考译文] MSP430FR2522:内部温度传感器的值不正确

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1331214/msp430fr2522-incorrect-values-from-internal-temperature-sensor

器件型号:MSP430FR2522
主题中讨论的其他器件: MSP430FR2422

我尝试使用内部温度传感器通过 MSP430FR2522读取环境温度。

我正在使用器件中存储的校准数据(链接)将 ADC 计数转换为温度。

我看到输出会受到温度变化的影响、但问题是 我似乎获得了相对于实际温度的大约+57 °C 偏移值。

下面是我的代码的要点:

/* Minimalistic example code (not actual implementation) */

// Calibration values
#define ADC_TC_15V_30C  (*((uint16_t *) 0x1A1A)) // Temp sensor cal at 30 °C
#define ADC_TC_15V_85C  (*((uint16_t *) 0x1A1C)) // Temp sensor cal at 85 °C

// ADC initialization
PMMCTL0 = PMMPW; // Unlock PMM control register
PMMCTL2 |= TSENSOREN | INTREFEN; // Enable temperature sensor and internal VREF

ADCCTL0 &= ~ADCENC; // Disable ADC conversion before writing configuration

ADCCTL0 |= ADCSHT_8; // S&H time = 256 ADCCLK cycles
ADCCTL1 |= ADCSHP; // S&H source: ADCSC bit, S&H signal generated from timer, ADCCLK from MODCLK, single-channel mode
ADCCTL2 |= ADCPDIV__4 | ADCRES_1;   // 10-bit conversion results, ADCCLK = MODCLK/4, unsigned data, 200ksps
ADCMCTL0 |= ADCINCH_12 | ADCSREF_1; // Channel A12 (temp sensor), V(R+)=VREF=1.5V, V(R-)=AVSS

ADCIE |= ADCIE0; // Enable ADC interrupt

// Start ADC
ADCCTL0 &= ~ADCENC;
ADCCTL0 |= ADCON;
ADCCTL0 |= ADCENC | ADCSC;

// Temperature readout (inside ADC ISR)
ADCCTL0 &= ~ADCENC;
ADCCTL0 = ADCON_0;// Turn ADC off

uint16_t temperature;
temperature = 30 + ((ADCMEM0 - ADC_TC_15V_30C)*(85 - 30))/(ADC_TC_15V_85C - ADC_TC_15V_30C);

我是否正确地使用这样的校准值?


数据表指出(链接)"温度传感器偏移量可能会显著变化。 TI 建议进行单点校准、以更大限度地减少内置温度传感器的失调电压误差。" 但我不明白这是否意味着 除了已经提供的校准之外还要执行。

感谢您对此事的任何帮助。

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

    你好、 清理液体

    请检查  https://www.ti.com/tool/download/SLAC750上的 msp430fr2422_adc10_16.c

    我可以看到 使用 CALADC_15V_30C 和 CALADC_15V_85C 的温度校准公式 相同。  

    但是、请尝试使用该代码示例以检查该代码示例是否正常。

    同时、请查看  MSP430FR2522器件勘误表(修订版 H)上的 ADC50

    我想您的 ADC 转换不在 LPM3中。 请查看此勘误表

    谢谢

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

    尊敬的 Xiaodong:
    感谢您的答复。
    我尝试将您提到的示例代码加载到 MSP430FR2522中、这样便得出了可靠的室温值。
    我将尝试了解配置不起作用的原因。
    也感谢您指出勘误表上的 ADC50错误、这可能会成为应用中的一个问题。

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

    您是否查看了原始 ADC 数据?

    如果我看到了类似这样的奇怪的东西、那么我的第一步是检查输入侧。 ADC 结果和来自 TLV 数据结构的校准数据。

    第一步是在使用 TLV 数据之前验证校验和是否有效、从而验证该数据。