APM32F4xx 系列内部集成温度传感器,可实时监测芯片内核温度,广泛用于过热保护、功耗监测、环境温度估算等场景。AN1091 官方例程基于 ADC1_CH16 实现温度采集,并通过串口输出电压与温度值,简单稳定、可直接移植量产。本文完全依照官方手册,用最直白的工程化讲解,带你快速实现芯片内部温度采集。
资料获取:AN1091_APM32F4xx_TSensor demo例程
1. 内部温度传感器 TSENSOR 基础原理
APM32F4xx 内部温度传感器有以下关键特性:
- 连接通道:ADC1_CH16(固定通道)
- 测温范围:-40℃ ~ +125℃
- 采样时间建议:≥17.1μs
- 精度:典型误差 ±4℃ 以内
- 供电:内部直接连接,无需任何外围电路
温度计算公式(官方实测校准)
T = (Vsensor - 0.7782) / 0.0024 + 28
- Vsensor:温度传感器输出电压(V)
- 0.7782V:28℃ 时的基准电压
- 0.0024V/℃:温度斜率
- 结果单位:℃
2. 硬件实现(零外围)
- 无需任何外部电路
- 使用 ADC1_CH16(内部自动连接)
- 只需串口输出结果:USART1(PA9/PA10)
硬件完全免设计,直接跑例程即可测温。
3. 软件实现流程(官方标准步骤)
3.1 使能内部温度传感器
ADC_EnableTempSensorVrefint();
3.2 配置 ADC1
- 分辨率:12 位
- 对齐:右对齐
- 转换模式:连续转换
- 通道:ADC_CHANNEL_16
- 采样时间:480 周期(保证精度)
3.3 配置 DMA
- DMA2 Stream0 Channel0
- 方向:外设 → 内存
- 数据宽度:半字(16bit)
- 循环模式使能
3.4 启动 ADC 转换
ADC_SoftwareStartConv(ADC1);
3.5 读取并计算温度
VSensorValue = (float)DMA_Buf / 4095 * 3.3;
Temperature = (VSensorValue - 0.7782f) / 0.0024f + 28;
3.6 串口打印输出
例程默认输出三项信息:
- ADC 原始值
- 传感器电压
- 芯片温度(℃)
4. 最精简可移植代码(直接复制)
// ADC 初始化
void TSensor_ADC_Init(void)
{
ADC_Config_T adcConfig;
ADC_CommonConfig_T adcCommonConfig;
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_ADC1);
adcCommonConfig.prescaler = ADC_PRESCALER_DIV4;
ADC_CommonConfig(&adcCommonConfig);
adcConfig.resolution = ADC_RESOLUTION_12BIT;
adcConfig.dataAlign = ADC_DATA_ALIGN_RIGHT;
adcConfig.scanConvMode = DISABLE;
adcConfig.continuousConvMode = ENABLE;
adcConfig.extTrigEdge = ADC_EXT_TRIG_EDGE_NONE;
ADC_Config(ADC1, &adcConfig);
ADC_ConfigRegularChannel(ADC1, ADC_CHANNEL_16, 1, ADC_SAMPLETIME_480CYCLES);
ADC_EnableTempSensorVrefint();
ADC_EnableDMA(ADC1);
ADC_Enable(ADC1);
ADC_SoftwareStartConv(ADC1);
}
// 温度计算
float Get_Chip_Temperature(uint16_t adc_val)
{
float vol = (float)adc_val / 4095.0f * 3.3f;
float temp = (vol - 0.7782f) / 0.0024f + 28.0f;
return temp;
}
5. 例程运行效果
串口输出示例:
ADC REGDATA = 0x09D2
Voltage = 0.7812V
Temperature = 29.25℃
可直接用于:
- 芯片过温保护
- 设备工作状态监测
- 散热系统控制
- 低功耗设备温控
6. 注意事项(AN1091 重点强调)
- 必须使用 ADC1_CH16,不支持其他 ADC
- 采样时间必须 ≥17.1μs,推荐 480 周期
- 内部温度 ≈ 环境温度 + 芯片自身发热
- 基准电压按 3.3V 计算,如使用外部 VREF 需修正公式
- 误差 ±4℃ 属于正常范围,适合监控,不做精密测量
AN1091 是 APM32F4xx 内部温度传感器最简单、最稳定的官方例程,无需外围、无需校准、直接可用。只需配置 ADC + DMA,即可实时获取芯片温度,适合温控、保护、监测类项目快速落地。
阅读全文
225