博客首页 | 排行榜 |

wolaiye945的博客

我的STM32F学习之路

个人档案
博文分类
STM32F内部温度传感器实验与心得  2009-02-02 20:59
没想到因为网络不便把一次年前的实验拖到了现在,不过还好,一切顺利,在此把要点和心得跟大家分享一下。也欢迎做过这个实验的同学跟我一起交流经验、探讨问题~
下面言归正传,首先修正一下上篇文章的参数。
温度传感器特性

如上表所示,为STM32F103ZET6系列的温度传感器标准电气参数表,可以当做参考数据。
由以上数据,再根据公式:温度(°C) = {(V25 - VSENSE) / Avg_Slope} + 25
首先将数据进行比例转化,可以使用微软系统自带的计算器,根据参考电压3.3V在12位AD转换对应最大值0xFFF可知,1.42V对应0x6E2(1762D),而斜率每摄氏度4.35mV对应每摄氏度0x05,故此时公式可以修正为:温度(°C) = {(0x6E2- VSENSE) / 5} + 25

综上所述,芯片的温度已经可以通过计算存入变量,在经过相应的位处理就可以显示在LCD上。
本人使用的代码仅供参考,如下:
//变量声明部分略去
mytemp = (0x6E2- ADC_ConvertedValue_Bak) / 0x05 + 25;

    for (v2=3;v2;v2--)
    {
    v1=mytemp%10;
    mytemp/=10;
    LCD_DrawChar(3,(v2-1)<<3,HexValueOffset[v1]);
    }

最后,还需要提示一下,在使用的时候不要忘记唤醒温度传感器(默认处于休眠状态),也就是需要设置ADC控制寄存器2(ADC_CR2)的TSVREFE位为1,否则会得到一个几乎为零的极小AD值,通过公式得到一个远远超出范围的温度值,显然是错误的。
给控制寄存器置位可以使用直接置位的方法,但为了增强程序的模块化程度,我建议使用STM32预定义的函数ADC_TempSensorVrefintCmd(ENABLE);
在初始化ADC后和开始转换前的代码段中调用该函数,即可唤醒温度传感器的检测。

实验结果:在初步开机后芯片温度在25°C左右,经过一段时间逐步升温至30°C左右,并保持相对稳定。

最后,祝各位好运~!
类别:心得体会 |
上一篇:【原创】STM32时钟控制RCC探究 | 下一篇:STM32内置温度传感器探究
以下网友评论只代表其个人观点,不代表本网站的观点或立场