ulohg_ops 2024-11-20 00:26 采纳率: 0%
浏览 4

MSPFR4133 如何使用sensor讀取溫度

各位神人你們好
我用MSPFR4133內部的sensor讀取溫度,若照我的代碼讀到的溫度數值非常小,我已經研究了3天但還是沒有找到問題。我比較不知道的是initTemperatureSensor() 這段要怎麼配置才會是正確的。
而每次sensor讀取到的值會存在ADCMEM0 register中 再經由換算公式得到攝氏溫度。
轉換公式如下

img


執行完readSensor 的結果

img


執行完readSensor 變數的結果

img

#include <msp430.h>
#include <stdio.h>

#define ADC_30_REF (*(unsigned int *)0x1A1A)//30Cref
#define ADC_85_REF (*(unsigned int *)0x1A1C)//85Cref
int adc30=0;
int adc85=0;

void initTemperatureSensor() {
    ADCCTL0 &= ~ADCENC;
    ADCCTL0 = ADCSHT_5 | ADCON;
    ADCCTL1 = ADCSHP;
    ADCMCTL0 = ADCINCH_12;
    ADCCTL0 |= ADCENC;

}

int readTemperature(void) {
    adc30=ADC_30_REF;
    adc85=ADC_85_REF;
    int rawTemp;
    ADCCTL0 |= ADCSC;
    while (ADCCTL1 & ADCBUSY);
    rawTemp = ADCMEM0;
    int tempC = (rawTemp-adc30)*(55/(adc85 - adc30)) + 30;
    return tempC;
}

void main(void) {
    WDTCTL = WDTPW | WDTHOLD;
    PM5CTL0 &= ~LOCKLPM5;
    initTemperatureSensor();
    while (1) {
        unsigned int temp = readTemperature();
        __delay_cycles(1000000);
    }
}

這是我參考的官方文件
https://www.ti.com/lit/ug/slau445i/slau445i.pdf?ts=1731846188011&ref_url=https%253A%252F%252Fchatgpt.com%252F
https://www.ti.com/lit/ds/symlink/msp430fr4133.pdf

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据你提供的代码和文件链接,你的温度读取代码看起来大致是正确的。但是,你可能需要确保以下几点来确保正确读取温度:

    1. 初始化ADC: 在initTemperatureSensor()函数中,你设置了ADC的初始配置。确保这些配置与你的硬件设置相匹配。特别注意ADCCTL0和其他相关寄存器的配置。
    2. 参考电压值: 你定义了ADC_30_REFADC_85_REF作为30°C和85°C时的参考电压值。确保这些值是从你的MSPFR4133设备中正确获取的。这些值通常存储在设备的特定内存位置或通过特定的校准过程获得。
    3. 读取ADC值: 在readTemperature()函数中,你通过ADCCTL0 |= ADCSC;启动ADC转换,然后等待转换完成。之后,你从ADCMEM0读取原始温度值。这部分看起来是正确的。
    4. 温度计算: 你使用提供的公式来计算温度。这个公式似乎是根据设备的数据手册中的特性方程来得出的。确保你的设备支持这个公式,并且公式的系数(例如55)是正确的。
    5. 调试: 使用调试工具(如Code Composer Studio的调试器)来检查你的代码。查看ADCMEM0中的值,以及计算出的温度值,确保它们符合你的预期。
    6. 硬件连接: 确保你的传感器正确连接到MSP430设备上,并且所有相关的引脚和配置都已正确设置。

    如果你已经检查了上述所有点并且仍然遇到问题,那么可能需要更深入地检查设备的硬件规格和数据手册,或者考虑是否有其他外部因素(如电源噪声、电磁干扰等)影响ADC的读数。此外,考虑使用已知工作正常的设备或传感器进行交叉测试,以排除设备本身的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月20日