




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验题目:实验6—无线温度检测实验实验时间:2023.12.14实验目的:学习TIZStack2007协议栈内容,掌握CC2530模块数据传输的实现过程。学习协议栈中关于串口的根本设置和操作。实验原理及程序分析:系统流程图协调器分立ZigBee无线网络,终端节点自动参加该网络中,然后终端节点周期性的采集温度数据并将其发送给协调器,协调器接收到温度数据后,通过串口将其输出到PC机。如下图。关键代码分析对于协调器而言,只需要将收集到的温度数据通过串口发送到PC机即可;对于终端节点而言,需要周期性地采集温度数据,采集温度数据可以通过读取温度传感器的数据得到。温度数据包结构设计该数据包结构体定义如下。typedefunionh{uint8TEMP[4];structRFRXBUF{unsignedcharHead;unsignedcharvalue[2];unsignedcharTail;}BUF;}TEMPRETURE;使用一个共用体来表示整个数据包,里面有两个成员变量,一个是数组TEMP,该数组有4元素;另一个是结构体,该结构体具体实现了数据包的数据头、温度数据、数据尾。结构体所占的存储空间也是4个字节。协调器代码:#include"OSAL.h"#include"AF.h"#include"ZDApp.h"#include"ZDObject.h"#include"ZDProfile.h"#include<string.h>#include"Coordinator.h"#include"DebugTrace.h"#if!defined(WIN32)#include"OnBoard.h"#endif#include"hal_led.h"#include"hal_lcd.h"#include"hal_key.h"#include"hal_uart.h"constcId_tGenericApp_ClusterList[GENERICAPP_MAX_CLUSTERS]={GENERICAPP_CLUSTERID\};constSimpleDescriptionFormat_tGenericApp_SimpleDesc={GENERICAPP_ENDPOINT,GENERICAPP_PROFID,GENERICAPP_DEVICEID,GENERICAPP_DEVICE_VERSION,GENERICAPP_FLAGS,GENERICAPP_MAX_CLUSTERS,(cId_t*)GenericApp_ClusterList,0,(cId_t*)NULL};endPointDesc_tGenericApp_epDesc;byteGenericApp_TaskID;byteGenericApp_TransID;unsignedcharuartbuf[128];voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pckt);voidGenericApp_SendTheMessage(void);/*staticvoidrxCB(uint8port,uint8event);staticvoidrxCB(uint8port,uint8event){HalUARTRead(0,uartbuf,16);if(osal_memcmp(uartbuf,"wlwmaker",16)){HalUARTWrite(0,uartbuf,16);}}*/voidGenericApp_Init(bytetask_id){halUARTCfg_tuartConfig;GenericApp_TaskID=task_id;GenericApp_TransID=0;GenericApp_epDesc.endPoint=GENERICAPP_ENDPOINT;GenericApp_epDesc.task_id=&GenericApp_TaskID;GenericApp_epDesc.simpleDesc=(SimpleDescriptionFormat_t*)&GenericApp_SimpleDesc;GenericApp_epDesc.latencyReq=noLatencyReqs;afRegister(&GenericApp_epDesc);uartConfig.configured=TRUE;uartConfig.baudRate=HAL_UART_BR_115200;uartConfig.flowControl=FALSE;uartConfig.callBackFunc=NULL;HalUARTOpen(0,&uartConfig);}UINT16GenericApp_ProcessEvent(bytetadk_id,UINT16events){afIncomingMSGPacket_t*MSGpkt;if(events&SYS_EVENT_MSG){MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(GenericApp_TaskID);while(MSGpkt){switch(MSGpkt->hdr.event){caseAF_INCOMING_MSG_CMD:GenericApp_MessageMSGCB(MSGpkt);break;default:break;}osal_msg_deallocate((uint8*)MSGpkt);MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(GenericApp_TaskID);}return(events^SYS_EVENT_MSG);}return0;}voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){unsignedcharbuffer[2]={0x0A,0x0D};TEMPRETUREtempreture;switch(pkt->clusterId){caseGENERICAPP_CLUSTERID:osal_memcpy(&tempreture,pkt->cmd.Data,sizeof(tempreture));HalUARTWrite(0,(uint8*)&tempreture,sizeof(tempreture));HalUARTWrite(0,buffer,2);break;}}终端节点编程://读取温度int8readTemp(void){staticuint16reference_voltage;staticuint8bCalibrate=TRUE;uint16value;int8temp;ATEST=0x01;TR0|=0x01;ADCIF=0;ADCCON3=(HAL_ADC_REF_115V|HAL_ADC_DEC_256|HAL_ADC_CHN_TEMP);while(!ADCIF);ADCIF=0;value=ADCL;value|=((uint16)ADCH)<<8;value>>=4;if(bCalibrate){reference_voltage=value;bCalibrate=FALSE;}temp=22+((value-reference_voltage)/4);return22;}//终端节点事件处理与无线数据发送UINT16GenericApp_ProcessEvent(bytetadk_id,UINT16events){afIncomingMSGPacket_t*MSGpkt;if(events&SYS_EVENT_MSG){MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(GenericApp_TaskID);while(MSGpkt){switch(MSGpkt->hdr.event){caseZDO_STATE_CHANGE:GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if(GenericApp_NwkState==DEV_END_DEVICE){//GenericApp_SendTheMessage();osal_set_event(GenericApp_TaskID,SEND_DATA_EVENT);}default:break;}osal_msg_deallocate((uint8*)MSGpkt);MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(GenericApp_TaskID);}return(events^SYS_EVENT_MSG);}if(events&SEND_DATA_EVENT){GenericApp_SendTheMessage();osal_start_timerEx(GenericApp_TaskID,SEND_DATA_EVENT,1000);return(events^SEND_DATA_EVENT);}return0;}voidGenericApp_SendTheMessage(void){//unsignedchartheMessageData[10]="EndDevice";int8tvalue;TEMPRETUREtempreture;tempreture.BUF.Head='&';tvalue=readTemp();tempreture.BUF.value[0]=tvalue/10+'0';tempreture.BUF.value[1]=tvalue%10+'0';tempreture.BUF.Tail='C';afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0x0000;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,sizeof(tempreture),(uint8*)&tempreture&GenericApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);HalLedBlink(HAL_LED_2,0,50,500);}实验步骤
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025写字楼租赁合同范本图片
- 家庭健康咨询服务协议书范本
- 图书报刊赠与合同
- 私人土地流转合同
- 2025光伏发电采购安装合同范本
- 2025年上海房屋租赁合同的范本
- 2025电子产品购销合同(批发)
- 福州房屋合购协议书
- 2025年03月宁波市鄞州区事业单位公开招聘15人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月北京市经济和信息化局直属事业单位公开招聘工作人员5人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- (2025)会计基础考试题库及答案(带答案解析)
- 2025年暖通空调考试试题及答案
- 2025年铁塔安全考试试题及答案
- AI技术在舞蹈实训空间设计中的创新应用
- 《中国传统民居建筑特点》课件
- TEE在心脏手术中的应用
- 2025年武汉农业集团限公司(校招)招聘【12人】高频重点模拟试卷提升(共500题附带答案详解)
- 新加坡可变资本公司VCC指南 -BBCG出版
- 木质垭口施工方案
- 高龄孕妇子痫前期危险因素分析及预测模型构建与验证
- 2025年春新苏教版数学一年级下册课件 数学连环画 2.画出你的数学故事
评论
0/150
提交评论