无线温度检测_第1页
无线温度检测_第2页
无线温度检测_第3页
无线温度检测_第4页
无线温度检测_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ZigBee网络原理与应用,李曙英2015.2.28,无线温度检测,实例:协调器建立网络,终端节点加入网络,终端节点周期性的采集温度数据并发送给协调器,协调器将收到的温度值用串口送PC机显示与上个实例的区别?,-3-,ADC,CC2530的ADC支持多达14位的模拟数字转换,具有多达12位的有效数字位。它包括一个模拟多路转换器,具有多达8个各自可配置的通道,一个参考电压发生器。转换结果通过DMA写入存储器。,ADC特征ADC输入ADC转换,-4-,ADC特征,可选的抽取率,设置了712位的分辨率。8个独立的输入通道,可接收单端或差分信号。参考电压可选为内部单端、外部单端、外部差分或AVDD5。产生中断请求。转换结束时的DMA触发。温度传感器输入。电池测量功能。,-5-,ADC输入,ADC的输入是通过端口0来实现的。输入引脚AIN0-AIN7是连接到ADC的。ADC输入有两种配置:单端输入和差分输入,单端电压输入AIN0到AIN7以通道号码0到7表示。通道号码8到11表示差分输入,由AIN0-1、AIN2-3、AIN4-5和AIN6-7组成。通道号码12到15分别表示GND、温度传感器和AVDD5/3。以上输入方式在寄存器ADCCON2和寄存器ADCCON3中详细配置。,-6-,ADC输入,ADCCON2寄存器-定义ADC的序列转换,-7-,ADC输入,ADCCON3寄存器-定义ADC单个值转换,/单次转换,参考电压为电源电压,对P0.7进行采样12位分辨率ADCCON3=0 xb7;,-8-,ADC输入,除了输入引脚AIN0-AIN7,片上温度传感器的输出也可以选择作为ADC的输入,用于温度测量。通过配置寄存器TR0寄存器和ATEST寄存器可以获得片上温度TR0寄存器,-9-,ADC输入,除了输入引脚AIN0-AIN7,片上温度传感器的输出也可以选择作为ADC的输入,用于温度测量。通过配置寄存器TR0寄存器和ATEST寄存器可以获得片上温度ATEST寄存器,-10-,ADC转换,ATEST寄存器ADC的转换分为ADC序列转换和ADC单个转换。ADC执行一系列的转换,并把转换结果通过DMA移动到存储器,不需要任何CPU的干预ADC序列转换与APCFG寄存器的设置有关,APCFG为8位模拟输入的I/O引脚设置,如果模拟I/O使能,每一个通道正常情况下应是ADC序列的一部分。如果相应的模拟I/O被禁用,将启用差分输入,处于差分的两个引脚必须在APCFG寄存器中设置为模拟输入引脚。ADCCON2.SCH寄存器位用于定义一个ADC序列转换,它来自ADC输入。如果ADCCON2.SCH设置为一个小于8的值,转换序列来自AIN0-AIN7的每个通道上;当ADCCON2.SCH设置为一个在8和12之间的值,序列包括差分输入;当ADCCON2.SCH大于或等于12,为单个ADC转换。,-11-,ADC转换,除了序列转换,每个通道都可以进行ADC单个转换,ADC单个转换通过配置寄存器ADCCON3.SCH完成。当通过写ADCCON3触发的一个单个转换完成时,ADC将产生一个中断。ADC的数字转换结果可以通过设置寄存器ADCCON1获得。,/开启ADADCCON1=0 x40;,-12-,ADC转换,ADC的数字转换结果存放在寄存器ADCH和ADCL中,ADCLADC数据低位,ADCHADC数据低高位,/将转换的结果从ADC:ADCH中取出放入到temp中temp1=ADCL;temp0=ADCH;,-13-,ADC转换,下述内容用于实现任务描述,将AVDD(3.3v)AD转换,通过串口在PC机显示结果AD的初始化,voidInitialAD(void)/清EOC标志ADCH,-14-,ADC转换,下述内容用于实现任务描述,将AVDD(3.3v)AD转换,通过串口在PC机显示结果头文件、宏定义以及函数声明,#includeioCC2530.h#defineuintunsignedint/定义控制灯的端口#defineLED1P1_0#defineLED2P1_1chartemp2;uintadc;floatnum;charadcdata=0.0V;/函数声明voidDelay(uint);voidinitUARTtest(void);voidInitialAD(void);voidUartTX_Send_String(char*Data,intlen);,-15-,ADC转换,下述内容用于实现任务描述4.D.7,将AVDD(3.3v)AD转换,通过串口在PC机显示结果主函数部分,voidmain(void)/P1控制LEDP1DIR=0 x03;/关LEDLED1=1;LED2=1;/初始化串口initUARTtest();/初始化ADCInitialAD();while(1)/等待ADC转换完成if(ADCCON1,/开始下一转换ADCCON1|=0 x40;/adc赋值adc|=(uint)temp1;adc|=(uint)temp0)=2;if(adc,Zstack中ADC应用,协调器建立网络,终端节点加入网络,终端节点周期性的采集温度数据并发送给协调器,协调器将收到的温度值用串口送PC机显示协调器功能:建网,接收数据,向串口发数据终端节点功能:,无线测温-协调器编程,1建网2用户任务:事件1:接收数据-什么事件?SYS_EVENT_MSG下的AF_INCOMING_MSG_CMD事件2:向串口发数据-什么时候?接收到数据后-事件2包含在事件1内,无线测温-协调器编程,涉及:串口设置、初始化;-同上例温度数据存储区,无线测温-协调器编程,特殊之处:数据传递一般会用数据包。特点:命令头+数据+命令尾用结构体构建数据包本例中的温度数据:structRFRXBUFunsignedcharHead;unsignedcharvalue2;unsignedcharTail;BUF;,typedefunionhuint8TEMP4;structRFRXBUFunsignedcharHead;unsignedcharvalue2;unsignedcharTail;BUF;TEMPERATURE;,TEMPERATUREtemperature;/定义温度数据包存储区温度数据包在终端、协调器之间传递,TEMPERATURE类要告知协调器、终端-怎么做?加入Coordinator.h、Enddevice.h中,无线测温-协调器编程,事件1触发:CoordApp_ProcessEvent任务中caseAF_INCOMING_MSG_CMD:GenericApp_MessageMSGCB(MSGpkt);break;,无线测温-协调器编程,voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt)TEMPERATUREtemperature;switch(pkt-clusterId)caseGENERICAPP_CLUSTERID:osal_memcpy(,无线测温-终端编程,1、加入网络-同以前例2、周期性的将温度传感器上的电压转换成数字量温度值,再用无线发送给协调器,无线测温-终端编程,1片内温度传感器/使能片内温度传感器ATEST=0 x01;/连上温度传感器TR0|=0 x01;,无线测温-终端编程,2、ADCADCIF=0;/清除ADC中断ADCCON3=(HAL_ADC_REF_115v|HAL_ADC_DEC_256|HAL_ADC_CHN_TEMP);while(!ADCIF);/等待AD转换完成ADCIF=0;value=ADCL;/读取AD值value|=(uint16)ADCH)=4;,数据发送,voidGenericApp_SendTheMessage(void)uint8tvalue;TEMPERATUREtemperature;temperature.BUF.Head=,afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0 x0000;AF_DataRequest(,周期性触发发送事件,#defineSEND_DATA_EVENT0X01/定义事件/启动事件caseZDO_STATE_CHANGE:GenericApp_NwkState=(devStates_t)(MSGpkt-hdr.status);if(GenericApp_NwkState=DEV_END_DEVICE)osal_set_event(GenericApp_TaskID,SEND_DATA_EVENT);,/周期性工作if(events,无线测温-终端编程,程序结构传感器的操作为一个文件-Sensor.c,涉及到的名称常量定义-Sensor.h,无线测温-终端编程,Sensor.h#ifndefSENSOR_H#defineSENSOR_H#includeexternint8readTemp(void);#endif,无线测温-终端编程-Sensor.c,#includeSensor.h#include#defineHAL_ADC_REF_115v0X00/设置参考电压为内部参考电压:00(7-6位)#defineHAL_ADC_DEC_2560X20/设置抽取率256:10(5-4位)#defineHAL_ADC_CHN_TEMP0X0e/序列通道选择,1110:温度传感器(3-0位),无线测温-终端编程-Sensor.c,int8readTemp(void)staticuint16reference_voltage;staticuint8bCalibrate=TRUE;uint16value;int8temp;ATEST=0 x01;TR0|=0 x01;ADCIF=0;/清除ADC中断ADCCON3=(HAL_ADC_REF_115v|HAL_ADC_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论