博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zigbee学习之ADC采集芯片内部的温度
阅读量:6607 次
发布时间:2019-06-24

本文共 825 字,大约阅读时间需要 2 分钟。

这个章节没得什么讲得,用的时候记得调用模块,自己配置一些寄存器。

ADC对自身芯片温度的采集:

void InitClock(void)//还是原来的味道
{   
    CLKCONCMD &= ~0x40;              //设置系统时钟源为 32MHZ晶振
    while(CLKCONSTA & 0x40);         //等待晶振稳定 
    CLKCONCMD &= ~0x47;              //设置系统主时钟频率为 32MHZ
}
void InitSensor(void)//温度传感器初始化函数
   IEN0 = IEN1 = IEN2 = 0x00     //关闭所有中断 
   InitClock();                  //设置系统主时钟为 32M 
   TR0=0x01;                     //设置为1来连接温度传感器到SOC_ADC
   ATEST=0x01;                   //使能温度传感
}   
float GetTemperature(void)//获取温度传感器 AD 值 通过计算返回实际的温度值
   uint  value; 
   
   ADCCON3  = (0x3E);            //选择1.25V为参考电压;14位分辨率;对片内温度传感器采样
   ADCCON1 |= 0x30;              //选择ADC的启动模式为手动
   ADCCON1 |= 0x40;              //启动AD转化  
   while(!(ADCCON1 & 0x80));     //等待 AD 转换完成 
   value =  ADCL >> 4;           //ADCL 寄存器低 2 位无效,由于他只有12位有效,ADCL寄存器低4位无效。网络上很多代码这里都是右移两位,那是不对的
   value |= (((uint)ADCH) << 4);
   
   return (value-1367.5)/4.5-5;  //根据 AD 值,计算出实际的温度,芯片手册有错,温度系数应该是4.5 /℃
                                 //进行温度校正,这里减去5℃(不同芯片根据具体情况校正)
}
 sprintf(strTemp,"%.02f", AvgTemp);//将浮点数转成字符串

转载地址:http://ukdso.baihongyu.com/

你可能感兴趣的文章
PHP操作MongoDB学习
查看>>
monkeyrunner 录制与回放
查看>>
常见的四种Animation详解(深入可以制作效果动画)
查看>>
开源 java CMS - FreeCMS2.8 自定义标签 info
查看>>
NotificationManagerService启动流程以及和app交互实现原理
查看>>
WebDriver--firefox.webdriver.WebDriver 下的属性
查看>>
Wget Tomcat deploy
查看>>
<[^>]+> 正则匹配HTML标签
查看>>
mycncart1.0.2.0版 发布
查看>>
linux 安装mariadb
查看>>
FISCO-BCOS v1.3.1 通过物料包安装记录
查看>>
Extjs4源码解释TreeStore的autoLoad无效
查看>>
Apache日志文件太大的解决方法
查看>>
MySQL用户权限管理详解
查看>>
Linux 修改pip源
查看>>
Netty-http协议
查看>>
centos安装python框架
查看>>
Logwatch linux日志监视器解析
查看>>
EXT ajax loadmask
查看>>
【第8章】JVM内存管理
查看>>