基于 STM32U5 片内温度传感器正确测算温度

发布时间:2024-02-06  

1.    引言

本文引用地址:

STM32 在内部都带有一个, 也不例外。这个位于晶圆上的温度 传感器虽然不太适合用来测量外部环境的温度,但是用于监控一下晶圆上的温度也是挺好 的,可以防止芯片过温运行。

2.    问题

2.1.   问题详情

某客户在使用 75ZIT6Q 时,使用 ADC4 对内部 VSENSE 进行采样 计算,但是总是觉得得到的温度值不对。那么,应该如何对内部的 ADC 采样 进行计算以得到正确温度值呢?

2.2.   问题分析

首先,应该先来看一下参考手册中,如何描述内部温度传感器的。参考手册说明了, 未经校准的内部温度传感器更适用于对温度变量而非绝对温度进行测量的应用。为了提高 温度传感器测量的准确性,ST 在生产过程中将校准值存储在每个器件的系统存储器中。用 户在软件开发中,可以在应用中去读取这些数据,用于提高温度传感器的准确性。

这个校准值是写在数据手册的,如图 1 所示。

图1. 内部温度传感器

图片.png

这张表格告诉我们,校准值 TS_CAL1 的数值位于存储器地址 0x0BFA0710 和 0x0BFA0711,也就是它是一个 16-bit 的数据;同理,校准值 TS_CAL2 的数值位于存储器地 址 0x0BFA0742 和 0x0BFA0743。

再回过头来看一下参考手册是如何描述怎么读取内部温度传感器的温度的,如图 2 所示。

图2. 读取温度传感器

图片.png

这里描述的是如何读取内部温度传感器的温度,前面主要介绍 ADC 的配置和对温度传 感器的采样,最后根据得到的数据使用公式进行计算,得到温度值。前面的 ADC 的配置 和采样就不说了,我们主要来看一下公式的使用。

图片.png

其中,

Temperature (in ℃) 就是内部传感器的当前温度;

TS_DATA 为内部传感器当前温度对应的采样值;

TS_CAL2_TEMP 为校准值 2 的温度值,TS_CAL2 为对应的采样值,对于 来说,TS_CAL2_TEMP 为 130℃,对应的采样值存储在 0x0BFA0742 和 0x0BFA0743; TS_CAL1_TEMP 为校准值 1 的温度值,TS_CAL1 为对应的采样值,对于 STM32U5来说,TS_CAL1_TEMP 为 30℃,对应的采样值存储在 0x0BFA0710 和 0x0BFA0711; 对于 STM32U5 来说,公式可简化为:

图片.png

那么,是不是直接读取了 TS_CAL2 和 TS_CAL1,放到公式里,然后通过 ADC 得到TS_DATA,就可以直接算温度了呢?接着往下看。

2.3.   问题解决

在室温下使用 NUCLEO-U575ZI-Q 做个实验:

读取 0x0BFA0742 和 0x0BFA0743 得到 TS_CAL2 为 0x155D,也就是 0d5469;读 取 0x0BFA0710 和 0x0BFA0711 得到 TS_CAL1 的值为 0x102F,也就是 0d4143。

此时,由 ADC1 对内部温度传感器进行采样转换,得到 TS_DATA 为 0xEAA,也就是 0d3754。

那么,如果直接放进去算:

图片.png

室温下,这个 0.66℃显然不对。

2.3.1.  使用 ADC1 测量内部温度传感器的温度值

再来看数据手册里对校准值的描述,如图 3 所示。

图3. 温度传感器校准值重要参数

图片.png

这个表格有一个非常重要的参数,就是 ADC1 的参考电压,它是 3.0V,而 NUCLEO-U575ZI-Q 板子的 ADC 参考电压为 3.3V。所以,这两个 TS_CAL1 和 TS_CAL2 对于 NUCLEO-U575ZI-Q 中的 STM32U575ZIT6Q 的内部温度传感器肯定是不能直接用的, 需要先换算为 3.3V 参考电压的值才行。

所以,新的值计算如下:

TS_CAL2 = 5469 × 3 / 3.3 = 4972

TS_CAL1 = 4143 × 3 / 3.3 = 3766

再回到刚才的实验中,计算的公式如下:

图片.png

这次算出来的结果为 29℃就对了。

2.3.2.  使用 ADC4 测量内部温度传感器的温度值

那对于 ADC4 是否也是一样的呢?

首先,要知道在 STM32U5 中,ADC1 为 14-bit SAR ADC,而 ADC4 为 12-bit SAR ADC。同样的这块板子,同样的室温下,由 ADC4 对内部温度传感器进行采样转换得到的 值是 0x3AA,也就是 0d938。

要使用 0d938 计算温度值,TS_CAL1 和 TS_CAL2 也要相应转为 12 位的数据才行。 将它们由 14 位数据转为 12 位的数据,相当于就是右移 2 位,也相当于除以 4。

由于参考电压仍然是 3.3V,所以针对 ADC4 的 TS_CAL2 和 TS_CAL1 应该计算如下:

TS_CAL2 :由读取到的 0x155D 右移 2 位,得到 0x557,也就是 0d1367,再换算成 3.3V 的 。

TS_CAL2 = 1367 × 3 / 3.3 = 1243

也可以直接使用上面 ADC1 例子的值来计算。

TS_CAL2 = 4972 / 4 = 1243

TS_CAL1 :由读取到的 0x102F 右移 2 位,得到 0x40B,也就是 0d1035,再换算成 3.3V 的 。

TS_CAL2 = 1035 × 3 / 3.3 = 941

也可以直接使用上面 ADC1 例子的值来计算。

TS_CAL2 = 3766 / 4 = 941

计算的公式如下:

图片.png

算出来的结果也是 29℃。

3.    小结

当我们使用芯片的内部温度传感器计算内部温度时,需注意校准值是使用哪个 ADC、 在什么参考电压下得到的。当实际应用与内部温度传感器校准时所使用 ADC 及条件不一 样时,应该对存储单元里的校准值先做计算转化,然后才可以使用参考手册所提供的公式 进行计算,否则将会得到错误值。

更多相关信息请见:基于 STM32U5 片内温度传感器正确测算温度  https://share.eepw.com.cn/share/download/id/391491

文章来源于:电子产品世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>