当前位置:首页 > 单片机 > 单片机
[导读]简介:STM32有一个内部的温度传感器,可以用来测量CPU及周围的温度(TA)。特点:该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值温度传感器模拟输入推荐采样时间是17.1μsSTM32的

简介:

STM32有一个内部的温度传感器,可以用来测量CPU及周围的温度(TA)。
特点:

该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值

温度传感器模拟输入推荐采样时间是17.1μs

STM32的内部温度传感器支持的温度范围为:-40~125度。精度比较差,为±1.5℃左右

内部温度传感器更适合于检测温度的变化,而不是测量绝对温度。如果需要测量绝度温度,应该使用一个外部温度传感器,如DS18B20

使用注意事项:
第一个地方,我们要使用STM32的内部温度传感器,必须先激活ADC的内部通道,这里通过ADC_CR2的TSVREFE位(bit23)设置。设置该位为1则启用内部温度传感器。
等价于库函数:

ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器

温度计算公式:

T(℃)={(V25-Vsense)/Avg_Slope}+25

V25=Vsense在25度时的数值(典型值为:1.43)。
Avg_Slope=温度与Vsense曲线的平均斜率(单位为mv/℃或uv/℃)(典型值为4.3Mv/℃)。
利用以上公式,我们就可以方便的计算出当前温度传感器的温度了

CODE:
//tsensor.c#include"tsensor.h"#include"delay.h"#include"sys.h"//初始化ADC//这里我们仅以规则通道为例//我们默认将开启通道0~3voidT_Adc_Init(void)//ADC通道初始化{ADC_InitTypeDefADC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);//使能GPIOA,ADC1通道时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//分频因子6时钟为72M/6=12MHzADC_DeInit(ADC1);//将外设ADC1的全部寄存器重设为缺省值ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作模式:ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_ScanConvMode=DISABLE;//模数转换工作在单通道模式ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//模数转换工作在单次转换模式ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC数据右对齐ADC_InitStructure.ADC_NbrOfChannel=1;//顺序进行规则转换的ADC通道的数目ADC_Init(ADC1,&ADC_InitStructure);//根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器ADC_TempSensorVrefintCmd(ENABLE);//开启内部温度传感器ADC_Cmd(ADC1,ENABLE);//使能指定的ADC1ADC_ResetCalibration(ADC1);//重置指定的ADC1的复位寄存器while(ADC_GetResetCalibrationStatus(ADC1));//获取ADC1重置校准寄存器的状态,设置状态则等待ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));//获取指定ADC1的校准程序,设置状态则等待}u16T_Get_Adc(u8ch){ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);//ADC1,ADC通道3,第一个转换,采样时间为239.5周期ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能指定的ADC1的软件转换启动功能while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待转换结束returnADC_GetConversionValue(ADC1);//返回最近一次ADC1规则组的转换结果}//得到ADC采样内部温度传感器的值//取10次,然后平均u16T_Get_Temp(void){u16temp_val=0;u8t;for(t=0;t<10;t++){temp_val+=T_Get_Adc(ADC_Channel_16);//TampSensordelay_ms(5);}returntemp_val/10;}//获取通道ch的转换值//取times次,然后平均u16T_Get_Adc_Average(u8ch,u8times){u32temp_val=0;u8t;for(t=0;t


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

简介:OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。OLED显示技术具有

关键字: OLED stm32系列

电气特性:工作电压:3.3V-5.5V工作电流 :平均0.5mA输出:单总线数字信号测量范围:湿度20~90%RH,温度0~50℃精度 :湿度±5%,温度±2℃分辨率 :湿度1%,温度1℃其数据包由5Byte(40Bit...

关键字: dht11 stm32系列 温湿度传感器

简介:CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后,CAN通过ISO11898及ISO11519进行了...

关键字: can总线 stm32系列

串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口插件电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协

关键字: 485通信 stm32系列

ADC特点:12位逐次逼近型的模拟数字转换器最多带3个ADC控制器最多支持18个通道,可最多测量16个外部和2个内部信号源支持单次和连续转换模式通道0到通道n的自动扫描模式自动校准采样间隔可以按通道编程规则通道和注入

关键字: adc stm32系列

简介:NRF24L01是NORDIC公司生产的一款无线通信芯片,采用FSK 调制,集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。...

关键字: nrf24l01 stm32系列 无线通信

  STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和输出寄存器GPI...

关键字: io口 stm32系列 单片机 模式设置

特点:独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。测温范围 -55℃~+125℃,精度为±0.5℃。支持多点组网功能,多个DS...

关键字: ds18b20 stm32系列

原理:R:外接电容充放电电阻。Cs:TPAD和PCB间的杂散电容。Cx:手指按下时,手指和TPAD之间的电容。开关:电容放电开关,由STM32IO口代替。没有按下的时候,充电时间为T1(default)。按下TPAD,电...

关键字: stm32系列 电容触摸 按键原理

位操作& 与~ 取反| 或^ 异或> 右移define宏定义关键词define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。#define标识符字符串1ifdef条件编译单片...

关键字: C语言 stm32系列
关闭
关闭