STM32L051内部温度传感器温度读取

条件:

  1. STM32L051开发板
  2. HAL库
  3. Keil MDK 5

官方RM0377 参考手册读内部温度公式:

STM32L051内部温度传感器温度读取_第1张图片

参考手册给了2个公式,第1个是利用出厂校准的130度的值和30度的值来计算,第2个公式是利用V30和Avg_Slope来计算。 然而在我能找到的资料当中并未找到STM32L051的V30是多少,网上找到的都是F103或者F407的值,而且是V25不是V30。所以只能利用公式一来计算。

STM32L051的规格书中给出了TS_CAL2和TS_CAL1的值:

STM32L051内部温度传感器温度读取_第2张图片

TSENSE_CAL1即 TS_CAL1,TSENSE_CAL2即TS_CAL2。

STM32L051内部温度传感器温度读取_第3张图片

ADC配置使用CUBE配置,使用DMA。以下是计算的部分的程序:

//MCU内部温度传感器
#define TEMP130_CAL_ADDR 	((uint16_t*) ((uint32_t) 0x1FF8007E))	//130摄氏度时的MCU内部温度传感器校准值
#define TEMP30_CAL_ADDR 	((uint16_t*) ((uint32_t) 0x1FF8007A))	// 30摄氏度时的MCU内部温度传感器校准值


temp = ((130.0 - 30) / (*TEMP130_CAL_ADDR - *TEMP30_CAL_ADDR) * (int16_t)(adc_measure_buffer - *TEMP30_CAL_ADDR)) + 30;

printf("temp = %.2f \r\n",temp);

我的MCU读出TS_CAL1=902,TS_CAL2=668。

STM32L051内部温度传感器温度读取_第4张图片

你可能感兴趣的