嵌入式 · 2010-05-22

STM32 入门教程 内部温度传感器

(一) STM32 内部温度传感器概要

STM32 芯片内部一项独特的功能就是内部集成了一个温度传感器, 因为是内置, 所以测试的是芯片内部的温度, 如果芯片外接负载一定的情况下, 那么芯片的发热也基本稳定, 相对于外界的温度而言, 这个偏差值也是基本稳定的. 也就是说用 STM32 内部传感器来测量外界环境的温度.

在一些恶劣的应用环境下面, 可以通过检测芯片内部而感知设备的工作环境温度, 如果温度过高或者过低了 则马上睡眠或者停止运转. 可以保证您的设备工作的可靠性.

1.  STM32内部温度传感器与ADC的通道16相连,与ADC配合使用实现温度测量;
2.  测量范围–40~125℃,精度±1.5℃。
3.  温度传感器产生一个随温度线性变化的电压,转换范围在2V < VDDA < 3.6V之间。

转换公式如下图所示:

1.jpg

下载 (64.9 KB)

2009-8-23 21:50

手册中对于公式中的参数说明:

2.jpg

下载 (48.4 KB)

2009-8-23 21:24

(二) 程序编写

代码

的时候, 在测量要求不怎么高的情况下, 公式可以简化.

简化的公式:

Temperature= (1.42 – ADC_Value*3.3/4096)*1000/4.35 + 25;

程序编写:

1. 初始化ADC , 初始化

DMA

可以参考贴子:

[原创] MINI-STM32 开发板

入门教程

(六) 基于 DMA 的 ADC
http://www.mystm32.com/bbs/viewthread.php?tid=42&extra=page%3D1

主意:  内部温度传感器是使用了 ADC1 的第 16 通道哦.

2.  ADC_TempSensorVrefintCmd(ENABLE);

使能温度传感器和内部参考电压通道

3. 按照刚才列出的公式计算

Temperature= (1.42 – ADC_Value*3.3/4096)*1000/4.35 + 25;

第二步是做什么的呢?  参考下图:

3.jpg

下载 (20.42 KB)

2009-8-23 21:50

(三) 仿真调试

(1) 使用Keil uVision3 通过ULINK 2

仿真器

连接实验板,使用MINI-STM32 开发板附带的串口线,连接实验板上的 UART1 和 PC 机的串口,打开实验例程目录下的ADC.Uv2例程,编译

链接

工程;

(2) 在 PC 机上运行 windows 自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序;

(3) 点击

MDK

的Debug菜单,点击Start/Stop Debug Session;

(4) 全速运行程序, 显示结果如下所示。

麦思网原创教程
www.mystm32.com/bbs

1.jpg

下载 (54.75 KB)

2009-8-23 22:53