STM32芯片内部温度传感器
2015-08-13 20:06
330 查看
1、STM32的内部温度传感器
STM32内部温度传感器与ADC的通道16相连,与ADC配合使用实现温度测量。测量范围–40~125℃,精度 ± 1.5℃
操作流程:
1)、设置ADC相关参数
ADC_InitTypeDef ADC_InitStructure;//ADC配置
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
//转换通道数目
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1,ADC_SampleTime_55Cycles5); //每个采样通道配置-温度传感器是配置通道16,采样时间可以设置长一点,毕竟温度变化不快
ADC_TempSensorVrefintCmd(ENABLE);//使能温度传感器
ADC_Cmd(ADC1,ENABLE);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
//软件启动
2)、转换采样值为温度
ADC转换结束以后,读取ADC_DR寄存器中的结果,转换温度值计算公式如下:
V25
- VSENSE
T(℃) = ------------ + 25
Avg_Slope
V25: 温度传感器在25℃时 的输出电压,典型值1.43 V。
VSENSE:温度传感器的当前输出电压,与ADC_DR 寄存器中的结果ADC_ConvertedValue之间的转换关系为:
ADC_ConvertedValue
* Vdd
VSENSE = --------------------------
Vdd_convert_value(0xFFF)
Avg_Slope:温度传感器输出电压和温度的关联参数,典型值4.3 mV/℃。
//Converted Temperature
Vtemp_sensor = ADC_ConvertedValue *
Vdd / Vdd_convert_value;
Current_Temp = (V25 - Vtemp_sensor)/Avg_Slope + 25;
2、VDDA的电压范围
STM32的数据手册规定,VDD与VDDA之间的压差不能大于300mV。ADC的工作电压范围在2.4V~3.6V,供电电压VDD范围在2.0V~3.6V.
STM32内部温度传感器与ADC的通道16相连,与ADC配合使用实现温度测量。测量范围–40~125℃,精度 ± 1.5℃
操作流程:
1)、设置ADC相关参数
ADC_InitTypeDef ADC_InitStructure;//ADC配置
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
//转换通道数目
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1,ADC_SampleTime_55Cycles5); //每个采样通道配置-温度传感器是配置通道16,采样时间可以设置长一点,毕竟温度变化不快
ADC_TempSensorVrefintCmd(ENABLE);//使能温度传感器
ADC_Cmd(ADC1,ENABLE);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
//软件启动
2)、转换采样值为温度
ADC转换结束以后,读取ADC_DR寄存器中的结果,转换温度值计算公式如下:
V25
- VSENSE
T(℃) = ------------ + 25
Avg_Slope
V25: 温度传感器在25℃时 的输出电压,典型值1.43 V。
VSENSE:温度传感器的当前输出电压,与ADC_DR 寄存器中的结果ADC_ConvertedValue之间的转换关系为:
ADC_ConvertedValue
* Vdd
VSENSE = --------------------------
Vdd_convert_value(0xFFF)
Avg_Slope:温度传感器输出电压和温度的关联参数,典型值4.3 mV/℃。
//Converted Temperature
Vtemp_sensor = ADC_ConvertedValue *
Vdd / Vdd_convert_value;
Current_Temp = (V25 - Vtemp_sensor)/Avg_Slope + 25;
2、VDDA的电压范围
STM32的数据手册规定,VDD与VDDA之间的压差不能大于300mV。ADC的工作电压范围在2.4V~3.6V,供电电压VDD范围在2.0V~3.6V.
相关文章推荐
- 在java中对按钮图像的缩放
- Highways
- what's up
- hdu1316 How Many Fibs?
- object-c的内存管理
- 黑马程序员--java语言基础之--流程控制和函数
- wiki 调研
- Highways
- heat项目动态(2015/8/14)
- VB与数据库连接方式
- cocos2-d-x之runAction与clone的不解之缘
- 【Java】-小项目-小型学生管理系统
- 图结构练习——最小生成树
- 周赛-mZY寻宝(bfs搜索)
- poj 1258 Agri-Net
- OC 找出在只有空格字母的字符串中出现次数最多的单词
- POJ3213(矩阵乘法)
- POJ3213(矩阵乘法)
- Asp.Net+Easyui实现重大CRUD
- AngularJS实践(介绍)