如何在STM32 L496ZGT4中校准内部温度传感器值

问题描述

我正在使用 STM32 L946ZGT4 创建简单的项目。我想使用内部温度传感器。我配置了 ADC,我可以从中获得价值。我的问题是校准这个传感器。使用参考手册和数据表说明,我的最终值以摄氏度为单位等于 -17。 ADC 值约为 800。这是我的传感器校准代码。

    #include "Myfun.h"
    #include "HD44780.h"
    
    extern uint16_t tab[100];
    char buf[16];
    float sum,avg;
    
    #define TS_CAL1((uint16_t*)((uint32_t) 0x1FFF75A8))
    #define TS_CAL2((uint16_t*)((uint32_t) 0x1FFF75CA))
    #define TS_CAL1_TEMP 30.0 f
    #define TS_CAL2_TEMP 130.0 f
    
    int32_t temperature;
    
    int main(void)
    {
        SysTick_Config(4000000 / 1000);
        LCD_Init();
        Led_Conf();
        ADC_Conf_DMA_TempSensor();
        while (1)
        {
            sum = 0;
            for (int i = 0; i < 100;)
            {
                sum = sum + tab[i];
                ++i;
            }
            avg = sum / 100;    // here is my value from ADC
            temperature = (int32_t)(((TS_CAL2_TEMP - TS_CAL1_TEMP) / ((float)(*TS_CAL2) - (float)(*TS_CAL1))) *
                (avg - (float)(*TS_CAL1)) + 30.0);
            sprintf(buf,"%d C",temperature);
    
            LCD_Clear();
            LCD_WriteText(buf);
    
            delay_ms(60);
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)