STM32内置一个温度传感器,经过ADC_IN16这个通道能够读出温度传感器的电压。在STM32的技能参考手册中给出了一个核算公式:
Temperature (in ℃) = {(V25 – VSENSE) / Avg_Slope} + 25
公式中的Vsense便是在ADC_IN16读到的数值。Avg_Slope便是温度与ADC数值转化的斜率。
想象一个XY坐标,X轴为ADC的电压读数,Y轴为温度,两轴之间有一条直线代表了温度与转化电压的联系;在这条直线上假如X轴电压为V25时,Y轴即为25℃;当读出的电压是其它数值时,即读出的电压是Vsense时,运用这个公式就能够得到温度的数值。
在STM32F103xx的数据手册平别离给出了V25和Avg_Slope的值:
V25 最小=1.34V 典型=1.43V 最大=1.52V
Avg_Slope 最小=4.0 典型=4.3 最大=4.6 单位是 mV/℃
例如读到Vsense = 1.30V。别离取V25和Avg_Slope的典型值,核算得到:
(1.43 – 1.30)/0.0043 + 25 = 55.23
所以温度大约为 55℃