收藏 分享(赏)

STM32温度传感器.ppt

上传人:精品资料 文档编号:10671484 上传时间:2019-12-18 格式:PPT 页数:9 大小:1.47MB
下载 相关 举报
STM32温度传感器.ppt_第1页
第1页 / 共9页
STM32温度传感器.ppt_第2页
第2页 / 共9页
STM32温度传感器.ppt_第3页
第3页 / 共9页
STM32温度传感器.ppt_第4页
第4页 / 共9页
STM32温度传感器.ppt_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、STM32F103温度传感器,简介,我们介绍了 ADC 模数转换实验,知道 ADC 内部有一个通道连接着芯片的温度传感器,这一章我们就来学习下 STM32F1 的内部温度传感器。本章要实现的功能是:通过芯片内部温度传感器读取温度,并将读取的温度数据打印出去,D1 指示灯闪烁提示系统正常运行,简介,STM32F1 内部含有一个温度传感器,可用来测量 CPU 及周围的温度(TA)。 此温度传感器与 ADC1 内部输入通道相连接,如图 29.1.1 所示。它连接在ADC1_IN16 上。ADC1 可以将传感器输出的电压转换成数字值。STM32F1 的内部温度传感器支持的温度范围为:-40125 度,

2、精度为1.5左右。,温度传感器输入通道结构,STM32F1 内部温度传感器的使用很简单,只要初始化下 ADC1_IN16 通道,并激活其内部温度传感器通道就差不多了,温度值的计算,(1)要使用 STM32F1 的内部温度传感器,必须先激活 ADC 的内部通道,这里通过 ADC_CCR 的 TSVREFE 位( bit23)设置。设置该位为 1 则启用内部温度传感器,否则关闭内部温度传感器。 (2)STM32F103ZET6 的内部温度传感器固定的连接在 ADC1_IN16 上,所以,我们在设置好 ADC1 之后只要读取通道 16 的 AD 值,就知道温度传感器返回来的电压值了。根据这个值,我们

3、就可以计算出当前温度。计算公式如下: T() =( V25 - Vsense) /Avg_Slope+25 公式中: V25=Vsense 在 25 度时的数值(典型值为:1.43V)。 Avg_Slope=温度与 Vsense 曲线的平均斜率(单位为 mv/或 uv/)(典型值为 4.3mV/)。,部温度传感器配置步,。具体步骤如下: (ADC 相关库函数在 stm32f10x_adc.c和 stm32f10x_adc.h 文件中) (1)初始化 ADC1_IN16 相关参数,开启内度温度传感器ADC1_IN16 的初始化步骤与上一章介绍 AD 模数转换实验一样,这里我们只需要开启内部温度传

4、感器即可,调用的库函数为: ADC_TempSensorVrefintCmd(ENABLE);/打开 ADC 内部温度传感器 (2)读取 ADC1_IN16 AD 值,将其转换为对应温度上一步配置好后,我们就可以读取温度传感器的电压值,根据温度计算公式,可以求出对应电压值的温度,内部温度传感器初始化函数,void ADC_Temp_Init(void) ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div6); /

5、 分 频 因 子 6 时 钟 为72M/6=12MHz ADC_TempSensorVrefintCmd(ENABLE);/打开 ADC 内部温度传感器 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; /ADC 工作 模式:ADC1 和 ADC2 工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE;/非扫描模式,内部温度传感器初始化函数,ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;/关闭连续转换 ADC_InitStructure

6、.ADC_ExternalTrigConv =ADC_ExternalTrigConv_None;/禁止触发检测,使用软件触发 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;/右对齐 ADC_InitStructure.ADC_NbrOfChannel = 1; /1 个转换在规则序列中 也就是只转换规则序列 1 ADC_Init(ADC1, /使能或者失能指定的 ADC 的软件转换启动功能 ,温度读取函数,int Get_Temperture(void) u32 adc_value; int temp; double temperture; adc_value=Get_ADC_Temp_Value(ADC_Channel_16,10); /读取通道 16 内部温度传感器通道,10 次取平均 temperture=(float)adc_value*(3.3/4096); /电压值 temperture=(1.43-temperture)/0.0043+25; /转换为温度值 temp=temperture*100; /扩大 100 倍. return temp; ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报