测量芯片周围的环境温度用。这个温度传感器输出的电压与温度成一定比例,获取温度基本就是用ADC测量这个电压。
在芯片内部,温度传感器与ADC1的CH16相连。当不使用改传感器时,可将其设置为PowerDown模式以省电。
主要特性:
测温范围:-45~+125摄氏度
测温精度:±1.5摄氏度
使用步骤:
1、选择ADC1 CH16作为ADC的输入
2、设置采样时间
3、设置ADC1寄存器ADC_CCR的TSVREFE位,将温度传感器从PowerDown模式唤醒。
4、开始ADC转换
5、读取转换值Value并换算成电压Vsense,Vsense = Value×3300/4096 (mV)
6、计算温度。
温度计算公式:Temp = ((Vsense - V25)/Avg_Slope)+25
V25是Vsense 在25度时候的值,Avg_Slope 是温度转换率。这两个值可在datasheet里边查到。
V25 = 0.76V Avg_Slope = 2.5 mV/°C
Temp = (Vsense– 760)/2500 + 25;
【代码实现】
首先,唤醒温度传感器:
ADC_TempSensorVrefintCmd(ENABLE);
将上一程序的4通道,改为16通道:
ADC_RegularChannelConfig(ADC1,ADC_Channel_16,4,ADC_SampleTime_144Cycles);
读取这个转换的值,用上边公式计算即可:
aa = adcvalue[i]-760;
printf("当前温度是: %f摄氏度\r\n",(aa)/2.5+25);
printf("%d\r\n",adcvalue[i]);
这里要注意数据类型,adcvalue定义的是uint16_t的,是无符号数。
这里能读出温度了,但是还有点问题:温度不准,夜里读出的温度竟然有68度,我乖乖还活不了。不知道是片子工作久了内部温度高还是我的计算有错误。
但是这个温度确实是随着温度的变化而变化的,板子断电一会温度就下降了,但还是不准
关键字:STM32F4 ADC 内部温度传感器
引用地址:
STM32F4 ADC之内部温度传感器
推荐阅读最新更新时间:2024-03-16 15:26
STM32F407ZGT6芯片SysTick定时器模块介绍
本文参考资料《ARM Cortex™-M4F技术参考手册》-4.5章节SysTick Timer(STK),和4.48章节SHPRx,其中STK这个章节有SysTick的简介和寄存器的详细描述。因为SysTick是属于CM4内核的外设,有关寄存器的定义和部分库函数都在core_cm4.h这个头文件中实现。所以学习SysTick的时候可以参考这两个资料,一个是文档,一个是源码。 SysTick简介 SysTick——系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于168M。当重装载数值寄存器的值递
[单片机]
STM32之ADC配置
对于STM32,在使用ADC的时候需要配置几个参数。 (1) 第一个参数是ADC_Mode,这里设置为独立模式: ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; 在这个模式下,双ADC不能同步,每个ADC接口独立工作。所以如果不需要ADC同步或者只是用了一个ADC的时候,就应该设成独立模式了。 (2) 第二个参数是ADC_ScanConvMode,这里设置为DISABLE。 ADC_InitStructure.ADC_ScanConvMode = DISABLE; 如果只是用了一个通道的话,DISABLE就可以了,如果使用了多个通道的话,则必须将其设置为ENAB
[单片机]
关于stm32f407 串口程序编写过程 总结
一.背景介绍 17/07毕业,通过完成试用期的几个小项目,感觉自己能独立的完成部分项目,便接手了配合硬件工程师,将公司模块升级的任务(M3-- M4) 目标: 1.bootloader更改 2.将rt_thread 系统移植到 stm32f407板子上 3.将485,can , gsm ,以太网 驱动接口补上 4.重新设计程序收发流程,完成实时收发数据 (数据字典,wwdg , 校验设计,对上,对下的协议修改等等 ,这些已在之前完成,只要调用响应接口,调试下即可) 二.目标实现 目标1.bootloader更改 通过学
[单片机]
STM32的时钟系统学习笔记(基于STM32F407)
RCC(Reset clock Control 复位时钟控制器) 时钟源(时钟生成) 常规:外部晶振、芯片内部振荡器、锁相环(PLL) PS:(Phase Locked Loop): 为锁相回路或锁相环 其他:以太网、USB OTG FS、或其他外设的时钟源 STM32F407时钟树关系图(重点理解经常用到) 时钟总线 RCC通过多个预分频器配置时钟总线 PS:预分频器 (Prescaler-PSC)用来将定时器时钟源进行分频输出 总线类型:AHB、低速APB1、高速APB2 PS: AHB(Advanced High Performance Bus),高级高性能总线 APB(Advanc
[单片机]
MSP430--ADC程序
1.ADC和P6是复用的。所以要设置P6.0为AD功能,要确保P6DIR=0X00,即为输入。 其次P6SEL |= 0X01;设置需要的A0端口PIN为AD功能。 2.ADC时钟问题,通过ADCSSEL选择进入的时钟源默认为ADC12OSC,经过分频之后才是ADC12CLK. 当SHP=1时,t_sample是由采样定时器来决定的,整个采样周期的长度是4n倍的ADC12CLK,n由SHT决定。 WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC12CTL0 = SHT0_2 + ADC12ON; // 设置采样保持的时间为8倍的ADC时钟,Set s
[单片机]
玩转STM32CubeMX | 内部温度传感器
1.内部温度传感器简介 STM32F1有一个内部的温度传感器,可以用来测量CPU及周围的温度。该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值,温度传感器模拟输入推荐采样时间是17.1us,内部温度传感器支持的温度范围为:-40~125℃,精度为±1.5℃左右 通过读取ADC通道16的值,通过如下计算公式即可算出当前温度: T = { (V25 - Vsense) / Avg_Slope } + 25 上式中: V25 = Vsense在25℃时的数值(典型值为:1.43) Avg_Slope = 温度与Vsense曲线的平均斜率(典型值为:4.3 mV/℃) 以上典型值请参考
[单片机]
ADI两款16位ADC具79dB信噪比,速率达130MSPS
美国模拟器件公司(ADI)推出两款16位数据转换器AD9460和AD9461,并称具有业界最好信噪比(SNR)和中频(IF)取样性能,目标用在高端仪器仪表、医疗设备和无线通信应用,使设计者即使在高输入频率时也能保持有低噪音和高动态范围。医疗系统如需要复杂的多路的磁共振成像和病人监视接收器的设计者将会从这些新的转换器中受益。 器件的SNR为79dB,在高IF时提供16位的精度,支持取样速率高达130MSPS。除了能隔离和容易驱动ADC输入的内部缓冲器,和现有的解决方案相比,新器件的抖动要低15%,这对于保持低系统噪音是重要的因素。 据介绍,新的转换器AD9460和AD9461具有信号分析、雷达、磁共振成像(MRI),以及多载
[新品]
基于AVR单片机的卫星地面测控系统设计
引言 本文介绍了单片机Atmega128在一种卫星地面测控系统中的应用,该系统利用Atmega128完成了10路模拟信号的测量、4路脉冲信号的频率测量以及脉冲宽度的测量,由单片机上的16位定时计数器输出两路与输入信号具有相位关系的信号,并通过外扩串口与其它测试模块及工控机进行通信。由于要求系统能够连续稳定工作3年,并且数据不能丢失,因此,在设计时采用了双电源冗余热备份的方案,并且采用两个工控机同时接收数据并互为备份的设计方案。 图1 卫星地面测控系统结构图 图2 测试箱的硬件原理图 图3 电地球波相位关系 硬件设计 Atmega12
[单片机]