STM32内部温度传感器示例 每日消息
1. 内部温度传感器简介
STM32F4 有一个内部的温度传感器,可以用来测量 CPU及周围的温度(TA)。该温度传感器在内部和 ADC1_IN16(STM32F40xx/F41xx 系列)或 ADC1_IN18(STM32F42xx/F43xx系列)输入通道相连接,此通道把传感器输出的电压转换成数字值。 STM32F4 的内部温度传感器支持的温度范围为:-40~125 度。精度为±1.5℃左右。
2. 主要特性和框图
● 支持的温度范围:—40 °C 到 125 °C
(资料图片仅供参考)
● 精度:±1.5 °C
读取温度
要使用传感器,请执行以下操作:
选择 ADC1_IN16 或 ADC1_IN18 输入通道。
选择一个采样时间,该采样时间要大于数据手册中所指定的最低采样时间。
在 ADC_CCR 寄存器中将 TSVREFE 位置 1,以便将温度传感器从掉电模式中唤醒。
通过将 SWSTART 位置 1(或通过外部触发)开始 ADC 转换
读取 ADC 数据寄存器中生成的 V SENSE 数据
使用以下公式计算温度:
温度(单位为 °C)= {(V SENSE — V 25 ) / Avg_Slope} + 25
其中:
— V 25 = 25 °C 时的 V SENSE 值
— Avg_Slope = 温度与 V SENSE 曲线的平均斜率(以 mV/°C 或 μV/°C 表示)
有关 V 25 和 Avg_Slope 实际值的相关信息,请参见数据手册中的电气特性一节。
温馨提示
传感器从掉电模式中唤醒需要一个启动时间,启动时间过后其才能正确输出 V SENSE 。 ADC 在上电后同样需要一个启动时间,因此,为尽可能减少延迟间,应同时将 ADON 和 TSVREFE位置 1
温度传感器的输出电压随温度线性变化。由于工艺不同,该线性函数的偏移量取决于各个芯片(芯片之间的温度变化可达 45 °C)。
内部温度传感器更适用于对温度变量而非绝对温度进行测量的应用情况。如果需要读取精确温度,则应使用外部温度传感器。
3. 硬件模块
用到的硬件资源有:
1) 指示灯 DS0
2) TFTLCD 模块
3) ADC
4) 内部温度传感器
4. 编程步骤
① 选择ADC_IN16或者ADC_IN16输入通道。
② 设置采样时间大于17.1us。
③ 设置ADC_CCR的TSVREFE位,打开内部温度传感器。
④ 设置ADC_CR2的SWSTART位启动转换。
⑤ 读取ADC结果。
⑥ 计算。
程序示例初始化函数
//ADC通道初始化void ADC1_Init(void){GPIO_InitTypeDef GPIO_InitStructure;ADC_CommonInitTypeDef ADC_CommonInitStructure;ADC_InitTypeDef ADC_InitStructure;//开启GPIO时钟PA5 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //开启ADC1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //GPIO初始化 初始化为模拟功能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE); //ADC1复位 RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE); //复位结束 //使能内部温度传感器 ADC_TempSensorVrefintCmd(ENABLE); //初始化ADC_CCR寄存器 ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; ADC_CommonInit(&ADC_CommonInitStructure); //初始化ADC1 ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC1, &ADC_InitStructure); //设置ADC规则组通道 一个序列 采样时间 ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_480Cycles); ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_480Cycles); //使能ADC ADC_Cmd(ADC1, ENABLE);
}
获取温度值的函数
//获取温度值s16 Get_Temperature(void) >{u32 value = 0;s16 result = 0;double temperature = 0;//读取通道16内部温度传感器的值 value = Get_Adc_Average(ADC_Channel_16, 10); //转化为电压值 temperature = (float)value * (3.3 / 4096); //转化为温度值 temperature = (temperature - 0.76) / 0.0025 + 25; temperature *= 100; result = temperature; return result;
}
主函数
#include "sys.h"#include "delay.h"#include "usart.h"#include "led.h"#include "beep.h"#include "key.h"#include "usmart.h"#include "lcd.h"#include "rtc.h"#include "rng.h"#include "key.h"#include "wkup.h"#include "adc.h"int main(void){//u16 value = 0;s16 temp = 0; NV **IC** _PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); uart_init(115200); //usmart_dev.init(84); LED_Init(); LCD_Init(); ADC1_Init(); POINT_COLOR = RED; LCD_ShowString(30,50,200,16,16,"Explorer STM32F4"); LCD_ShowString(30,70,200,16,16,"Temperature TEST"); LCD_ShowString(30,90,200,16,16,"ATOM@tom"); LCD_ShowString(30,110,200,16,16,"2020/09/13"); //设置字体为蓝色 POINT_COLOR = BLUE; LCD_ShowString(30,140,200,16,16,"Temperate:00.00C"); while(1) { //得到温度值 temp = Get_Temperature(); printf("temperature: %f\\r\\n", (float)temp / 100); LED1 = !LED1; delay_ms(250); }}
- STM32内部温度传感器示例 每日消息
- 环球热门:官方平台一票难求 “黄牛”加价倒票却为何屡禁不绝?
- 欧康医药(833230):获得2项发明专利证书
- 世界速读:“四维度”推动有限空间作业专项执法走深走实
- 光荣特库摩将员工年收入提高 7.7%,应届生起薪涨至 30.5 万日元
- 郧阳区一中召开班主任“提能力 转作风”培训会
- 桂树皮剥掉还能活吗(桂树)|消息
- 全球观点:武田有起
- 江苏阜宁:房土两税减免助力企业纾困解难-最新
- 机械革命预热新无界14锐龙版笔记本:屏幕升级到 2.8K
- IAM:2022年中国专利申请数量华为以8440份居榜首
- 赛摩智能(300466):该股换手率大于8%(05-30)
- 全球快播:90后教师吴秀琼带着女儿到山村任教:“山里的孩子,也是我的孩子”
- 以改革促进“三医”协同发展(大家谈·一起来想一起来干(17)·新时代新征程新伟业)
- 俄媒:莫斯科遭无人机袭击 建筑物损坏,暂无人伤亡
- 西甲夏窗第一炮可能来自皇马本泽马_全球短讯
- 我国计划于年底前完成第四批预备航天员选拔 10余名港澳地区候选对象进入复选_天天热推荐
- 今日讯!碘伏泡脚能治脚气吗_韭菜煮水泡脚能治好脚气吗
- 移动改套餐怎么改短信_移动改套餐怎么改|新消息
- 当前头条:遏制隐形加班现象蔓延,专家建议劳动法中引入“离线权”
- 河南理工大学教务处官网网址_河南理工学校
- 张茜新剧_张茜电视剧
- 环球热门:安庆桐城一工厂发生事故致3死1伤,安徽安委会挂牌督办
- 当前视点!72492人看一场第3级别比赛!加时赛123分钟1-0绝杀,他们压哨升级
- 这次的“戎装”有点薄 揭秘神舟十六号航天员乘组“太空出征服”
- 陕西省印台区发布大雾橙色预警_当前头条
- 郑州晚报改版21年特刊 | “党建+网格” 撬动基层治理大格局 全球即时
- 文献阅读法的优缺点-简述文献阅读的方法
- 汽车后视镜小圆镜的最佳安装位置_汽车小圆镜最佳位置
- 有栖川宫正仁亲王(关于有栖川宫正仁亲王介绍)