STM32内置温度传感器探究
2009-01-23 22:15
今天晚上才有时间来学东西,本来想在原来的基础上把温度传感器搞出来,但最终发现还是有点儿轻敌,时间不大够,看来只好以后啦~把查到的资料和心得分享一下。
其实初始化仿照例程14通道的滑动变阻器,改为16通道的内置温度传感器就可以,我用的ADC1,至于2是否一样还没有尝试,但是3好像有些特殊,温度传感器尽量别用。中文的手册局限性还是很大的,不少内容被略去了,还是看英文的踏实。
● 支持的温度范围:-40到125度
● 精确度:+/- 1.5° C
参考手册的要求如下:
1. 选择ADCx_IN16输入通道
2. 选择采样时间大于2.2 μs (我用的最大转换周期)
3. 设置ADC控制寄存器2(ADC_CR2)的TSVREFE位,以唤醒关电模式下的温度传感器
4. 通过设置ADON位启动ADC转换(或用外部触发)
5. 读ADC数据寄存器上的VSENSE 数据结果
6. 利用下列公式得出温度
温度(°C) = {(V25 - VSENSE) / Avg_Slope} + 25
其它参数要到芯片手册上找,我是E板的,也就是103ZET6的芯片,手册上的参数如下:
Avg_Slope(1) Average slope 4.0 4.3 4.6 mV/°C
V25(1) Voltage at 25 °C 1.34 1.43 1.52 V
按照公式转换一下就应该没问题,输出的时候加一个BCD转换函数再加LCD_DrawString(是原来的函数,不是我改的那个)应该就没问题啦。不过他手册上写得误差1.5摄氏度着实让人心寒...呵呵,权当学习吧,反正本来测的就是芯片的温度,也跟外界温度是有出入的。
明天开始就要回老家过年啦,笔记本和开发板带着继续研究,但上网不方便,也许就很少更新甚至不能更新啦。再回来可能就要初八左右啦~在这里提前祝各位春节愉快、阖家幸福~!
上一篇:STM32F内部温度传感器实验与心得 | 下一篇:初试STM32中断