你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L431内部温度AD值不随温度变化

[复制链接]
懵逼 提问时间:2025-9-4 14:49 / 未解决

本人使用STM32L431RCT6单片机和STM32CUBEMX配置ADC进行内部温度采集,程序如下:

/ ADC1 init function / void MX_ADC1_Init(void) {

/ USER CODE BEGIN ADC1_Init 0 /

/ USER CODE END ADC1_Init 0 /

ADC_ChannelConfTypeDef sConfig = {0};

/ USER CODE BEGIN ADC1_Init 1 /

/ USER CODE END ADC1_Init 1 /

/* Common config / hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV16; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.LowPowerAutoWait = DISABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.NbrOfConversion = 1; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc1.Init.DMAContinuousRequests = DISABLE; hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED; hadc1.Init.OversamplingMode = DISABLE; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); }

/* Configure Regular Channel / sConfig.Channel = ADC_CHANNEL_TEMPSENSOR; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5; sConfig.SingleDiff = ADC_SINGLE_ENDED; sConfig.OffsetNumber = ADC_OFFSET_NONE; sConfig.Offset = 0; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } / USER CODE BEGIN ADC1_Init 2 /

/ USER CODE END ADC1_Init 2 /

}

采集AD程序如下:

void GetInternalTemp(void) { HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, 0xff); if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)) { ADC_Value = (float)HAL_ADC_GetValue(&hadc1);

ADC_Value = ADC_Value*3.0/2.5;
measure.temperture_internal = (float)((ADC_Value-*TEMP30_CAL_ADDR)*1.0/(int16_t)(*TEMP130_CAL_ADDR-*TEMP30_CAL_ADDR))+30;

} }

可以获取AD值,但是AD值随温度不变化,求助这是什么原因导致的

收藏 评论3 发布时间:2025-9-4 14:49

举报

3个回答
xmshao 回答时间:2025-9-12 10:15:51

提醒几点:

1、针对温度传感器做测量时,校准时使用的参考电压与实际应用不一致时要做换算,换算成相同参考电压的数据后再做计算。

2、采样时间要够。

正常来讲应该是可以观察到温度的影响的。image.png

下面文章内容是以STM32G4系列的内部AD通道讨论的,你完全可以参考。

基于STM32片内信号的ADC应用演示

butterflyspring 回答时间:2025-9-12 17:51:14
用STM32L432KC测试了一下,用风枪加热,看到了ADC值的变化,所以传感器没问题。

需要注意一下,由于外壳的存在,对外部的温度变化不敏感。
所以通常用来测内部结温。
目中无神-STM 回答时间:6 天前

butterflyspring 发表于 2025-9-12 17:51
用STM32L432KC测试了一下,用风枪加热,看到了ADC值的变化,所以传感器没问题。</p>
<p>需要注意一下,由于外壳的 ...

有没有STM32L431RCT6中文数据手册发一份

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版