文档详情

第二十三章内部温度传感器实验战舰STM32开发板.pdf

发布:2017-07-13约5.34千字共5页下载文档
文本预览下载声明
ALIENTEK 战舰STM32开发板 第二十三章 内部温度传感器实验 本章我们将向大家介绍STM32 的内部温度传感器。在本章中,我们将利用STM32 的内部 温度传感器来读取温度值,并在TFTLCD 模块上显示出来。本章分为如下几个部分: 23.1 STM32 内部温度传感器简介 23.2 硬件设计 23.3 软件设计 23.4 下载验证 319 ALIENTEK 战舰STM32开发板 23.1 STM32 内部温度传感器简介 STM32 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA)。该温度传感器 在内部和 ADCx_IN16 输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感 器模拟输入推荐采样时间是 17.1 μs 。 STM32 的内部温度传感器支持的温度范围为:-40~125 度。精度比较差,为±1.5℃左右。 STM32 内部温度传感器的使用很简单,只要设置一下内部 ADC ,并激活其内部通道就差 不多了。关于 ADC 的设置,我们在第十八章已经进行了详细的介绍,这里就不再多说。接下 来我们介绍一下和温度传感器设置相关的2 个地方。 第一个地方,我们要使用STM32 的内部温度传感器,必须先激活ADC 的内部通道,这里 通过ADC_CR2 的AWDEN 位(bit23 )设置。设置该位为1 则启用内部温度传感器。 第二个地方,STM32 的内部温度传感器固定的连接在ADC 的通道16 上,所以,我们在设 置好ADC 之后只要读取通道16 的值,就是温度传感器返回来的电压值了。根据这个值,我们 就可以计算出当前温度。计算公式如下: T (℃)={ (V25-Vsense )/Avg_Slope }+25 上式中: V25=Vsense 在25 度时的数值(典型值为:1.43)。 Avg_Slope=温度与 Vsense 曲线的平均斜率(单位为 mv/ ℃或 uv/ ℃)(典型值为 4.3Mv/ ℃)。 利用以上公式,我们就可以方便的计算出当前温度传感器的温度了。 现在,我们就可以总结一下STM32 内部温度传感器使用的步骤了,如下: 1)设置ADC,开启内部温度传感器。 关于如何设置ADC ,上一节已经介绍了,我们采用与上一节相似的设置。不同的是上一节 温度传感器是读取外部通道的值,而内部温度传感器相当与把通道端口连接在内部温度传感器 上。所以这里,我们要开启内部温度传感器功能: ADC_TempSensorVrefintCmd(ENABLE); 2 )读取通道16 的AD 值,计算结果。 在设置完之后,我们就可以读取温度传感器的电压值了,得到该值就可以用上面的公式计 算温度值。从上个实验的ADC 通道与GPIO 对应表(图22.1.20 ADC 通道与GPIO 对应表)可 以知道,内部温度传感器是通过对应的是ADC 的通道16。其它的跟上一节的讲解是一样的。 23.2 硬件设计 本实验用到的硬件资源有: 1)指示灯DS0 2 )TFTLCD 模块 3 )ADC 4 )内部温度传感器 前三个之前均有介绍,而内部温度传感器也是在 STM32 内部,不需要外部设置,我们只 需要软件设置就OK 了。 320 ALIENTEK 战舰STM32开发板 23.3 软件设计 打开内部温度传感器实验工程,可以看到文件中多了一个tsensor.c 文件和tsensor.h 文件。 tsensor.c 文件中有三个函数分别为T_Adc_Init, T_Get_Temp, T_Get_Adc_Average.这三个函 数的作用跟上章ADC 实验基本是一样的。不同的是在Adc_Init 函数中设置为开启内部温度传 感器模式,代码如下: void T_Adc_Init(void) //ADC 通道初始化 { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Pe
显示全部
相似文档