OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2462|回复: 2

STM32F0使用 内部温度传感器 的数据处理

[复制链接]

28

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2015-3-23
在线时间
54 小时
发表于 2019-3-20 20:34:17 | 显示全部楼层 |阅读模式
1. STM32内部温度传感器温度计算公式
根据AN3964《STM32L1x temperature sensor example》文档中的公式
Temp = (TC2 TC1) ⁄ (ValC2 ValC1) × (ValTS ValC1) + TC1
ValC1 ValC2是厂商生产时,标准电压(3.3V)下,TC1温度 和 TC2温度下ADC采样的值,存储在一个固定的地址中。例如我采用的芯片为STM32F051C8T6,则TC1=30 oC,TC2= 110oC,ValC1的数据存储在0x1FFFF7B8地址中,ValC2的数据存储在0x1FFFF7C2地址中。ValTS为通道16即温度通道的采样值,Temp为计算出来的温度值,单位为oC。
理论上根据以上的公式就能计算出温度的值,但是如果STM32供电电压跟厂商生产是的标准电压不一致时,就需要对ValTS进行缩放。
2.  供电电压与标准电压不一致时,对采样到的值进行缩放
先说明几个名词,例如Val的代表ADC通道采样的值,V接其他英文字符的代表电压值,Val*cal代表厂商存储在flash上的,标准电压下的通道采样的值。
a)  将当前供电电压下采样的值转换为标准供电电压下采样的值
在同一个供电电压下,电压与ADC采样的值为一定比率关系,Vch16 = Val_ch16*Vdda/4096;在供电电压为3V下算出的通道上的电压值为Vch16 = Val_ch16_3 * 3/4096,在标准供电电压3.3V算出的通道上的电压值为Vch16 = Val_ch16_3p3 * 3/4096;则将3v下的ADC通道采样值转换到3.3v下ADC通道采样的值为:Val_ch16_3p3 = 3 * Val_ch16_3 / 3.3,当前的供电电压用Vdda 替换则:Val_ch16_3p3 = Vdda * Val_ch16_3 /3.3
b)  计算Vdda的值
在相同的供电电压下,ADC通道上电压的值与ADC通道采样值比率一致,即内部参考电压的通道(通道17)上:Vdda/4096 = Vref / Val_ref,则Vdda = 4096 * Vref / Val_ref;根据出厂时,记录下来的参考电压通道采样值为Val_refcal(存储在地址0x1FFFF7BA上),即:Vref / Val_refcal = 3.3 / 4096,两条公式中和得出:Vdda = 3.3*Val_refcal / Val_ref;
    结合a)和b)最后一条公式,得出:
Val_ch16_3p3      = Vdda * Val_ch16_3 / 3.3
= (3.3*Val_refcal/ Val_ref) * Val_ch16_3 / 3.3
                      = Val_ch16_3 *Val_refcal / Val_ref
    将Val_ch16_3p3替换到1公式中的ValTS
参考文献:
1.利用ST MCU内部基准参考电压监测电源电压及其它:http://www.51hei.com/bbs/dpj-40944-1.html
3.stm32f051数据手册
4.stm32f0xx 参考手册
5. stm32l1x 温度传感器例子:AN3964《STM32L1xtemperature sensor example》
file:///C:/Users/fpga/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10571
金钱
10571
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-3-21 09:36:00 | 显示全部楼层
回复 支持 反对

使用道具 举报

4

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2017-4-24
在线时间
44 小时
发表于 2019-7-25 15:51:28 | 显示全部楼层
我看下,把你的公式总结一下,如果用电池供电,电压是V,采样得到的数值是Val,那么最后的温度公式是:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 23:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表