LAT1332
Local Application Tips
LAT1332 Rev 1.0 Oct. 2023
基于 STM32U5 片内温度传感器正确测算温度
关键字:STM32U5内部温度传感器
1. 引言
STM32 在内部都带有一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度
传感器虽然不太适合用来测量外部环境的温度,但是用于监控一下晶圆上的温度也是挺好
的,可以防止芯片过温运行。
2. 问题
2.1. 问题详情
某客户在使用 STM32U575ZIT6Q 时,使用 ADC4 对内部温度传感器 V
SENSE
进行采样
计算,但是总是觉得得到的温度值不对。那么,应该如何对内部温度传感器的 ADC 采样
进行计算以得到正确温度值呢?
2.2. 问题分析
首先,应该先来看一下参考手册中,如何描述内部温度传感器的。参考手册说明了,
未经校准的内部温度传感器更适用于对温度变量而非绝对温度进行测量的应用。为了提高
温度传感器测量的准确性,ST 在生产过程中将校准值存储在每个器件的系统存储器中。用
户在软件开发中,可以在应用中去读取这些数据,用于提高温度传感器的准确性。
这个校准值是写在数据手册的,如 1 所示。
LAT1332
LAT1332 - Rev 1.0 page 2/7
1. 内部温度传感器
这张表格告诉我们,校准值 TS_CAL1 的数值位于存储器地 0x0BFA0710
0x0BFA0711,也就是它是一个 16-bit 数据;同理,校准值 TS_CAL2 的数值位于存储器地
0x0BFA0742 0x0BFA0743
再回过头来看一下参考手册是如何描述怎么读取内部温度传感器的温度的,如图 2 所示。
2. 读取温度传感器
这里描述的是如何读取内部温度传感器的温度,前面主要介绍 ADC 的配置和对温度传
感器的采样,最后根据得到的数据使用公式进行计算,得到温度值。前面的 ADC 的配置
和采样就不说了,我们主要来看一下公式的使用
𝑇𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑒
(
𝑖𝑛
)
=
𝑇𝑆_𝐶𝐴𝐿2_𝑇𝐸𝑀𝑃 − 𝑇𝑆_𝐶𝐴𝐿1_𝑇𝐸𝑀𝑃
𝑇𝑆_𝐶𝐴𝐿2 − 𝑇𝑆_𝐶𝐴𝐿1
×
(
𝑇𝑆_𝐷𝐴𝑇𝐴 𝑇𝑆_𝐶𝐴𝐿1
)
+ 𝑇𝑆_𝐶𝐴𝐿1_𝑇𝐸𝑀𝑃