STM32温度传感器
内部温度传感器初始化函数
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//关闭连续转换 ADC_InitStructure.ADC_ExternalTrigConv =ADC_ExternalTrigConv_None;//禁止 触发检测,使用软件触发 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//右对齐 ADC_InitStructure.ADC_NbrOfChannel = 1; //1 个转换在规则序列中 也就是只 转换规则序列 1 ADC_Init(ADC1, &ADC_InitStructure);//ADC 初始化 ADC_Cmd(ADC1, ENABLE);//开启 AD 转换器 ADC_ResetCalibration(ADC1);//重置指定的 ADC 的校准寄存器 while(ADC_GetResetCalibrationStatus(ADC1));//获取 ADC 重置校准寄存器的状 态 ADC_StartCalibration(ADC1);//开始指定 ADC 的校准状态 while(ADC_GetCalibrationStatus(ADC1));//获取指定 ADC 的校准程序 ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能或者失能指定的 ADC 的软件转换启动功能 }
部温度传感器配置步
。具体步骤如下: (ADC 相关库函数在 stm32f10x_adc.c和 stm32f10x_adc.h 文件中) (1)初始化 ADC1_IN16 相关参数,开启内度温度 传感器ADC1_IN16 的初始化步骤与上一章介绍 AD 模数转换实验一样,这里我们只需要开启内部温度 传感器即可,调用的库函数为: ADC_TempSensorVrefintCmd(ENABLE);//打开 ADC 内部温度传感器 (2)读取 ADC1_IN16 AD 值,将其转换为对应温度 上一步配置好后,我们就可以读取温度传感器的电 压值,根据温度计算公式,可以求出对应电压值的 温度
温度传感器输入通道结构
STM32F1 内部温度传感器的使用很简单, 只要初始化下 ADC1_IN16 通道,并激活其 内部温度传感器通道就差不多了
温度用 STM32F1 的内部温度传感器,必须先激活 ADC 的内部通道,这里通过 ADC_CCR 的 TSVREFE 位 ( bit23)设置。设置该位为 1 则启用内部温度传感器, 否则关闭内部温度传感器。 (2)STM32F103ZET6 的内部温度传感器固定的连接在 ADC1_IN16 上,所以,我们在设置好 ADC1 之后只要读 取通道 16 的 AD 值,就知道温度传感器返回来的电压 值了。根据这个值,我们就可以计算出当前温度。计算 公式如下: T(℃) ={( V25 - Vsense) /Avg_Slope}+25 公式中: V25=Vsense 在 25 度时的数值(典型值为:1.43V)。 Avg_Slope=温度与 Vsense 曲线的平均斜率(单位为 mv/℃或 uv/℃)(典型值为 4.3mV/℃)。
简介
STM32F1 内部含有一个温度传感器,可用 来测量 CPU 及周围的温度(TA)。 此温度传感器与 ADC1 内部输入通道相连接, 如图 29.1.1 所示。它连接在ADC1_IN16 上。 ADC1 可以将传感器输出的电压转换成数字 值。STM32F1 的内部温度传感器支持的温 度范围为:-40~125 度,精度为±1.5℃左 右。
STM32F103温度传感器
简介
我们介绍了 ADC 模数转换实验,知道 ADC 内部有一个通道连接着芯片的温度传感器, 这一章我们就来学习下 STM32F1 的内部温 度传感器。本章要实现的功能是:通过芯 片内部温度传感器读取温度,并将读取的 温度数据打印出去,D1 指示灯闪烁提示系 统正常运行
温度读取函数
int Get_Temperture(void) { u32 adc_value; int temp; double temperture; adc_value=Get_ADC_Temp_Value(ADC_Channel_16,10); //读取 通道 16 内部温度传感器通道,10 次取平均 temperture=(float)adc_value*(3.3/4096); //电压值 temperture=(1.43-temperture)/0.0043+25; //转换为温度值 temp=temperture*100; //扩大 100 倍. return temp; }
内部温度传感器初始化函数
void ADC_Temp_Init(void) { ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div6); // 分 频 因 子 6 时 钟 为 72M/6=12MHz ADC_TempSensorVrefintCmd(ENABLE);//打开 ADC 内部温度传感 器 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC 工作 模式:ADC1 和 ADC2 工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE;//非扫描模式