今天搞了下A/D转换,根据给的例程修改了下,用内置温度传感器把芯片的温度读了出来,大概在30度左右,貌似不能用这个来测定室温了,不过可以用来测定芯片温度,防止芯片烧坏,这个想法不错。
看了中文的数据手册,才发现不少东西都没有了,还是英文的全面。
参数如下:
1. 与ADC的通道16相连,与ADC配合使用实现温度测量;
2. 测量范围–40~125℃,精度±1.5℃。
3. 温度传感器产生一个随温度线性变化的电压,转换范围在2V < VDDA < 3.6V之间。
整个过称比较顺利,把例程里面的改成16通道就可以了。
ADC转换结束以后,读取ADC_DR寄存器中的结果,转换温度值计算公式如下:
V25 - VSENSE
T(℃) = ------------------
+ 25
Avg_Slope
其中
V25: 温度传感器在25℃时 的输出电压,典型值1.43 V。
VSENSE:温度传感器的当前输出电压,与ADC_DR 寄存器中的结果ADC_ConvertedValue之间的转换关系为:
ADC_ConvertedValue * Vdd
VSENSE = --------------------------
Vdd_convert_value(0xFFF)
Avg_Slope:温度传感器输出电压和温度的关联参数,典型值4.3 mV/℃。
转换完在LCD显示就可以了···
不过在A/D转换中,一次转换的结果可能会出现误差,在实际的应用中应该加一个滤波,防止不必要的干扰,将多次转换值取平均就可以了。