第二十三章内部温度传感器实验战舰STM32开发板.pdf
文本预览下载声明
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
显示全部