深圳网站制作开发,html代码颜色表,广州越秀区邮政编码,行业门户网站设计目录预览
1、引言
2、问题
3、小结 01
引言 STM32 在内部都集成了一个温度传感器#xff0c;STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度#xff0c;但是用于监控晶圆上的温度还是挺好的#xff0c;以防止芯片过温运行。 02
问题…目录预览
1、引言
2、问题
3、小结 01
引言 STM32 在内部都集成了一个温度传感器STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度但是用于监控晶圆上的温度还是挺好的以防止芯片过温运行。 02
问题 2.1.问题详情 某客户在使用 STM32U575ZIT6Q 时使用 ADC4 对内部温度传感器 VSENSE进行采样计算但是总觉得温度值不对。那么应该如何对内部温度传感器信号的 ADC 采样进行计算以得到正确温度值呢 2.2. 问题分析 首先我们应该看一下参考手册如何描述内部温度传感器的。参考手册说明了未经校准的内部温度传感器更适用于对温度变化而非绝对温度进行测量的应用。为了提高温度传感器测量的准确性ST 在生产过程中将校准值存储在每个器件的系统存储器中用户可以在应用中去读取这些数据。 这个校准值是写在数据手册的如图 1 所示。 图1. 内部温度传感器 这张表格告诉我们校准值 TS_CAL1 的数值位于存储器地址 0x0BFA0710 和0x0BFA0711也就是它是一个 16-bit 的数据同理校准值 TS_CAL2 的数值位于存储器地址 0x0BFA0742 和 0x0BFA0743。 再回过头来看一下参考手册是如何描述怎么读取内部温度传感器的温度的如图 2 所示。 图2. 读取温度传感器 这里描述的是如何读取内部温度传感器的温度前面主要介绍 ADC 的配置和对温度传感器的采样最后根据得到的数据使用公式进行计算得到温度值。前面的 ADC 的配置和采样就不说了我们主要来看一下公式的使用。 其中
Temperature (in ℃) 就是内部传感器的当前温度结果
TS_DATA 为内部传感器当前温度对应的采样值
TS_CAL2_TEMP 为校准值 2 的温度值TS_CAL2 为对应的采样值对于 STM32U5来说TS_CAL2_TEMP 为 130℃对应的采样值存储在 0x0BFA0742 和 0x0BFA0743
TS_CAL1_TEMP 为校准值 1 的温度值TS_CAL1 为对应的采样值对于 STM32U5来说TS_CAL1_TEMP 为 30℃对应的采样值存储在 0x0BFA0710 和 0x0BFA0711
对于 STM32U5 来说公式可简化为 那么是不是直接读取了 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。 那么如果直接放进去算 室温下这个 0.66℃显然不对。 2.3.1. 使用 ADC1 测量内部温度传感器的温度值 再来看数据手册里对校准值的描述如图 3 所示。 图3. 温度传感器校准值重要参数 这个表格有一个非常重要的参数就是 ADC1 的参考电压它是 3.0V而 NUCLEOU575ZI-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 再回到刚才的实验中计算的公式如下 这次算出来的结果为 29℃就对了。 2.3.2. 使用 ADC4 测量内部温度传感器的温度值 那对于 ADC4 是否也是一样的呢 首先要知道在 STM32U5 中ADC1 为 14-bit SAR ADC而 ADC4 为 12-bit SARADC。同样的这块板子同样的室温下由 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
计算的公式如下 算出来的结果也是 29℃。 03
小结 当我们使用芯片的内部温度传感器计算内部温度时需注意校准值是使用哪个 ADC、在什么参考电压下得到的。当实际应用与内部温度传感器校准时所使用 ADC 及条件不一样时应该对存储单元里的校准值先做计算转化然后才可以使用参考手册所提供的公式进行计算否则将会得到错误值。