基于CC2530的温度监测系统设计毕业论文.doc_第1页
基于CC2530的温度监测系统设计毕业论文.doc_第2页
基于CC2530的温度监测系统设计毕业论文.doc_第3页
基于CC2530的温度监测系统设计毕业论文.doc_第4页
基于CC2530的温度监测系统设计毕业论文.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

第43页中国矿业大学2014届本科生毕业设计基于CC2530的温度监测系统设计毕业论文目 录1.绪 论11.1课题的研究背景及意义11.2国内外研究概况11.3论文的主要内容及结构安排22.ZigBee协议简介32.1 ZigBee协议体系结构32.1.1物理层(PHY)42.1.2媒体介质访问层(MAC)42.1.3网络层(NWK)52.1.4应用层(APL)52.2 ZigBee基本概念62.2.1设备类型62.2.2网络拓扑结构72.2.3信标与非信标模式82.2.4 ZigBee术语82.2.5绑定92.2.6 ZigBee原语93.基于CC2530的温度监测系统103.1系统设计思路及整体结构103.2系统硬件设计103.2.1 ZigBee开发套件103.2.2 CC2530概述123.2.3 DS18B20概述153.3系统软件设计153.3.1软件开发环境IAR简介153.3.2 Z-Stack体系架构及工作流程153.3.3网络通信过程193.3.4温度测量与数据传输213.3.5节点休眠233.3.6上位机软件设计244.系统测试274.1系统测试步骤274.2系统测试结果274.3系统测试结果分析285.总结与展望295.1工作总结295.2前景展望29参考文献31翻译部分32中文译文32原文37致 谢421.绪 论1.1课题的研究背景及意义煤炭自燃产生的有害气体不仅严重危害井下人员的健康,而且容易诱发瓦斯、煤尘爆炸事故,并造成严重的资源浪费,因此研制煤矿采空区火源点感知网络系统是煤矿安全生产的迫切需要,对于制定采空区防灭火措施,实现煤矿安全高效生产和可持续发展具有重大的现实意义。基于CC2530的温度监测系统不仅能有效满足煤矿采空区火源点感知的需求,而且还因为其具有低成本、低功耗等特点,受到人们的广泛青睐。由于简化协议,对于控制器的要求已经很低,以8051的8位控制器测算,每块芯片仅需要2美元,而且ZigBee协议免专利费,免执照频段,进一步降低了产品成本。CC2530在众多无线通讯芯片中最为突出的优势是低功耗,在休眠模式下,2节5号电池就可以维持1 至2年。因此,研究基于CC2530的温度监测系统是非常有意义的。1.2国内外研究概况煤矿采空区自然发现火源位置的探测在技术实现上的难度较大。国内外在这一领域内进行了大量的研究工作。现有技术主要有:电磁探测法、气体探测法和温度探测法。它们各具特点,适应不同的开采条件,也存在着各自的不足之处。 气体探测法。主要包括采空区气体成分分析法和测氡法。束管是当前我国煤矿火灾监测的主要手段,它利用在采空区不同位置布置多条空气采集管,定时抽取特定区域的气体样本,对该区域某点的O2、N2、CO、CH4、CO2、C2H4、C2H6、C2H2等自然火灾标志气体含量循环监测,判断煤面的氧化情况,预测预报发火点的温度变化,为煤矿自然火灾的防治工作提供科学依据。具统计我国目前获得安标的都是该类产品。国内外,还开展了测氡法探测火源位置的研究。其基本原理是放射性元素存在衰变现象,在衰变过程中产生氡气,而在实际的地层测量中。人们找到了温度与氡气浓度之间的关系,依据这种关系可以从氡气浓度的变化反过来推算出火源的温度。电磁法。包括磁性探测法和电阻率探测法。磁性探测法,利用煤层上覆岩中常含有大量菱铁矿及黄铁矿结核,发生自燃时,上覆岩受高温烘烤,铁质成分发生变化而形成磁性物质,且磁性随自燃温度的升高而增强的原理,实现对采空区发火点的检测。电阻率法,地下煤层沿走向或其它方向电阻率基本保持不变,自燃后引起煤层和周围岩石电阻率变化;自燃初期电阻率下降,后期表现较高电阻率,比较未自燃区和自燃区的变化来判断自燃位置。温度探测法。主要有二类系统,基于无线的采空区温度监测系统、基于分布式光纤传感器的采空区温度监测系统。无线传感器网络温度监测技术是近年来逐步发展起来的监测煤自然发火的检测方法。河南理工大学、西安科技大学、黑龙江科技学院、太原电子研究设计院等相继对采空区温度场无线自组网传感器监测系统进行了理论研究和开发。他们的研究表明,煤自燃温度场无线网络监测法能及时预测温度场的微弱变化 ,比 CO的预报更早 ,对于煤炭自然发火早期预警预报有十分重要的意义 ,已经被业界认可。但是,这方面至今还没有产品推出。山东省科学院,提出了利用光纤拉曼散射效应(Raman scattering)和光时域反射测量技术(Optical Time-Domain Reflectometry,简称OTDR)来获取空间温度分布信息。其中光纤拉曼散射效应(Raman scattering)用于实现温度测量,光时域反射测量技术(Optical Time Domain Reflectometer)用于实现温度定位,是近几年发展起来的一种用于实时测量空间温度场分布的高科技技术,它能够连续测量光纤沿线的温度分布情况,测量距离可达30公里,空间定位精度达到米的数量级,能够进行不间断的自动测量,特别适宜于需要长距离、大范围多点测量的应用场合。综上所述,束管监测系统属于对自然发火的间接测量,发火点定位困难,且束管监测系统的管线较长,投入大,维护困难,且经常发生管路漏气或堵塞现象。分布式光纤温度监测系统,在采空区温度检测中遇到的最大问题,是监测光纤极可能被塌落的顶板砸断,造成不可恢复故障。测氡法,该方法与实用还有很大距离,首先是地质因素的影响,并不是所有矿都具有可供测量的氡气存在;另一方面就是氡气浓度与火源温度之间的关系并不是单调增减,而是在某一基轴线上的减幅波动,从而影响火源定位准确性。电磁法自然发现火点探测技术,必须等煤炭燃烧起来才可以使用,适用于已经火灾已经形成情况下,不适用于火源点的预警与报警。1.3论文的主要内容及结构安排本论文主要研究“基于CC2530的温度监测系统设计”,包括节点的硬件设计、无线传感器网络的组建、对温度监测功能的实现分析。本文共分为六章:第一章,绪论阐述了基于CC2530的温度监测系统研究的背景及意义,国内外研究煤矿采空区自然发现火源位置的探测的概况;第二章,简述ZigBee协议栈结构、协议中各子层功能;第三章,对CC2530开发套件及CC2530芯片进行简介,对设计采用的软件开发环境IAR进行简介,详细介绍Z-Stack协议栈工作流程,对温度采集、处理、传输程序进行分析和对休眠与唤醒程序进行分析,分析上位机软件设计;第四章,简述该系统设计的测试及调试过程,分析实验结果;第五章,总结与展望,对整个设计进行总结分析出自己的心得体会。2.ZigBee协议简介2.1 ZigBee协议体系结构ZigBee协议基于IEEE802.15.4标准,由IEEE802.15.4和ZigBee联盟共同制定。ZigBee协议栈由物理层(PHY)、媒体介质访问层(MAC)、网络层(NWK)和应用层(APL)共4层构成,其中PHY层和MAC层由IEEE802.15.4标准工作组制订,而NWK层和APL层由ZigBee联盟自行制订。每一层都完成其各自特定的任务并且向上一层提供服务,数据服务实体主要负责数据传输服务,管理服务实体则主要负责所有的其他管理服务。每个服务实体为其上层提供需要的接口都是通过其相应的服务接入点(SAP)实现的,每个SAP所对应的功能通过服务原语来完成,且每个SAP支持许多种不同的服务原语。ZigBee协议体系结构如图2.1所示:图2.1 ZigBee协议体系结构图2.1.1物理层(PHY)物理层定义了物理无线信道和MAC 层之间的接口,提供三种不同的通信频段:868MHz-868.6MHz、902MHz-928MHz和2400MHz-24835MHz,以及1个、10个以及16个不同的信道。物理层提供两种服务:物理层数据服务(PD)和物理层管理服务(PLME)。通过无线信道的发送和接收以及物理层协议数据单元(PPDU)来实现物理层数据服务。PLME主要通过调用物理层管理功能函数来提供管理和服务,其中物理层数据服务接入点(PD-SAP)给MAC层提供数据服务接口,而物理层管理实体服务接入点(PLME-SAP)给MAC层提供管理服务接口。驱动程序为物理层提供的接口是无线射频服务接入点(RF-SAP),从外界接收到数据包后,从物理层中提取信息并通过PD-SAP上传给上层协议。物理层结构及接口示意图如图2.2所示。图2.2 物理层结构及接口示意图物理层的主要功能包括:1)ZigBee系统的启动和关闭;2)当前信道的能量检测;3)链路质量信息;4)信道评估与选择;5)传输和接收数据。2.1.2媒体介质访问层(MAC)MAC层控制无线信道访问时使用CSMA-CA冲突避免机制,是所有无线信道的维护接口,提供两个相邻设备之间可靠的链路。MAC层由MAC层管理实体(MLME)提供MAC层管理服务和MAC层数据服务实体(MCPS)提供MAC层数据服务两部分构成。MAC层数据服务是指MAC层协议数据单元(MPDU)通过物理层数据服务发送和接收,而MAC层数据服务接入点(MCPS-SAP)给网络层提供数据服务接口。MAC层管理实体以提供可调用MAC层管理功能接口为目的,MAC层管理实体服务接入点(MLME-SAP)为网络层提供管理服务接口。MAC层的结构接口示意图如图2.3所示。图2.3 MAC层结构和接口图MAC层主要功能包括:1)信标的产生与同步;2)信道接入;3)保证系统的安全性; 4)管理时隙(GTS)机制;5)提供可靠的通信链路。2.1.3网络层(NWK)网络层是ZigBee协议栈的核心部分。网络层由网络层数据服务实体(NLDE)和网络层管理实体(NLME)两部分共同组成,不仅为MAC层提供函数而且为应用层提供服务接口。网络层数据服务实体产生网络层协议数据单元(NPDU)为设备间的数据传输提供必要的服务,通过网络层数据实体服务接入点(NLDE-SAP)为应用层提供数据服务接口。网络层管理实体主要负责网络中的管理服务,通过网络层管理实体接入点(NLME-SAP)实现。网络层结构和接口图如图2.4所示。网络层主要功能包括:1)网络的发现、形成和维护;2)路由器初始化;3)提供网络节点地址分配;4)允许设备直接或间接同网络连接;5)断开网络连接;6)复位配置;7)信息库管理。图2.4 网络层结构和接口图2.1.4应用层(APL)ZigBee应用层框架由应用支持子层(APS)、应用程序框架(AF)、ZigBee设备对象(ZDO)和用户定义的应用对象4个部分组成。ZigBee应用层除了提供必要的函数以及服务接口外,另一个重要的功能是让用户在应用层里编辑自己的应用对象。应用支持层(APS)具有管理绑定表、在绑定设备间传输数据的功能。它由主要负责为设备间的数据传输提供相应服务的应用支持子层数据服务实体(APSDE)和主要负责根据命令提供相应管理和服务的应用支持子层管理实体(APSME)共同组成。在应用层中,应用支持子层数据接入点(APSDE-SAP)和应用支持子层管理服务接入点(APSME-SAP)分别为上层的应用实体提供数据和管理服务。应用支持子层结构与接口图如图2.5所示。应用程序框架(AF)其本质就是各个制造商所自定义的应用对象,并提供键值对(KVP)服务和报文(MSG)服务以满足应用对象的数据传输,用户自定义应用对象必须遵循在端点1-240上运行的规范(profile)原则。设备在网络中的角色(例如是ZigBee协调器或是ZigBee终端设备或是ZigBee路由器)是由ZigBee设备对象(ZDO)定义的,同时ZigBee设备对象还负责对绑定请求的响应和初始化,在设备间建立可靠的联系。图2.5 应用支持子层结构与接口图2.2 ZigBee基本概念ZigBee协议栈主要包含6个基本概念:设备类型、网络拓扑结构、信标与非信标模式、ZigBee术语、绑定、ZigBee原语。2.2.1设备类型ZigBee系统中的设备可能包含协调器(Coordinator)、路由器(Router)和终端节点(End Device)3种逻辑类型中的两种或三种,一个完整的ZigBee网络由至少一个协调器、一个或多个路由器和一个或多个终端节点组成。协调器ZigBee网络的拓扑形式可以多种多样,但是每个ZigBee网络中有且只有一个协调器节点。协调器负责选择网络的信道、启动并建立整个网络。协调器也可以协助网络中安全服务和应用层的绑定服务的建立。但是协调器的角色只涉及网络的启动和配置,之后整个网络的运行就不再依赖于协调器是否存在。路由器在树形和网状拓扑结构中,需要有路由器节点的加入,它是网络远距离延伸的必要部分。路由器节点的功能是允许其他节点加入网络,协助各个节点之间的通信。终端设备终端设备主要负责信息的接收和发送,不需要维持特定的网络结构,可以根据需要进入休眠或唤醒状态以降低功耗。终端设备一般由电池供电,对存储空间要求比较小。2.2.2网络拓扑结构ZigBee支持3种网络拓扑结构,包括:星型拓扑网络、树形拓扑网络和网状拓扑网络。如图2.6所示。其中,全功能设备(FFD,Router)可以支持任何一种网络结构,可以作为网络协商者和普通协商者使用,并且可以和任何一种设备进行相互通信。精简功能设备(RFD)只支持星型网络结构,不能成为任何一种协商者使用,但是可以和网络协商者相互通信。图2.6 ZigBee网络拓扑结构星型拓扑网络星型拓扑网络是最简单的一种拓扑结构,由一个协调器和一个或多个终端设备组成,只存在协调器与终端设备的通信,而没有路由节点的参与,终端设备之间的相互通讯必须通过协调器转发。树形拓扑结构树形拓扑网络结构可以理解为由一个协调器和一个或多个星型结构连接而成,直接通信只能在父子节点之间进行,而非父子节点之间的通信只能通过树状路由器间接完成。网状拓扑网络网状拓扑网络具有灵活、减少消息延时和可靠的特点,网络中所有具有路由功能的节点直接互联,任意两个节点间可相互传输数据,网络路径通过路由器中的路由表按照算法选择。2.2.3信标与非信标模式ZigBee网络可以分为信标(Beacon)和非信标(Non-beacon)两种工作模式。为最大限度的节约能源消耗,信标模式可以使所有网络设备同步工作和同步休眠;而在非信标模式下,协调器和路由器必须长时间处于工作状态,只允许终端设备周期性进入休眠模式。在信标模式下,协调器向网络广播16个相同时间槽间隔的信标帧一般以15ms-4min之间的时间为间隔。时间槽被分为网络活动区和网络休眠区两个部分,消息只能在网络活动区内发送。在非信标模式下,采用终端节点向父节点提取数据,父节点为子节点缓存数据的机制,使终端设备可以周期性进入休眠模式以达到低功耗。在ZigBee网络中,子节点大部分时间通常都处于休眠工作状态,但需要周期性醒来确认自己仍处于网络中,并可在15ms的延时后转入数据传输模式,提取数据。2.2.4 ZigBee术语图2.7 ZigBee术语结构图属性反映物理数量或状态的数据值称为属性,如开关值(On/Off),温度值、百分比等。群集群集就是属性的集合,每一个群集都被系统分配一个独有的的群集ID 且每个群集至多可以有65536个属性。设备描述设备描述包含一个或多个集群,指定集群是输入或输出,描述符有4种,分别是简单描述符、节点描述符、电源描述符、端点描述符。端点端点是协议栈应用层的入口,是为实现一个设备描述而定义的一组群集。用户可以在每个设备上自定义240个应用对象(也就是端点1-240)。每个ZigBee设备必须使用端点0用于与ZDO接口,而被保留用于广播的端点是255,端点241-254则被保留下来为了将来做扩展时使用。节点每个节点有且只有一个信道使用,包含一组ZigBee设备,也可以理解为是一个专门的ZigBee设备的容器。2.2.5绑定通过使用ClusterI使不同的节点上的独立端点之间能够建立一个逻辑上的连接的特殊操作被称为绑定。绑定操作的实现是协调器在接收到两个端点的绑定请求之后,通过建立绑定表使端点间建立一种逻辑链路。在两个端点建立绑定表后,端点间的通信是由一个端点将信息传递给协调器,再由协调器通过查找已有绑定表将收到的信息发送给所绑定的另一个端点,这样实现端点间的间接通信。2.2.6 ZigBee原语ZigBee协议栈各层之间是通过各自所关联的服务访问点来提供服务的,各层根据各自的功能独立运行,但ZigBee协议栈又是一个有机的整体,各层之间需要共同协作以便完成任务。因此,层与层之间的信息交互通过服务“原语”的操作实现,“原语”分为4种类型,分别是请求(Request)、指示(Indication)、响应(Response)和证实(conform)。原语的操作概念如图2.7所示。请求(Request):请求原语从N+1实体发送到N实体,请求发起一个服务,如请求建立连接、数据传送等。指示(Indication):指示原语从N实体发送到到N+1实体,指示一个对N+1实体有外部N层事件发生,这个事件可能由内部事件产生或与远程服务请求有关。响应(Response):响应原语由N+1实体向N实体传递,用来响应上一个指示原语。证实(conform):确认原语由N实体向N+1实体传递,对前面一个或多个服务请求相关的执行结果予以确认。图2.7 原语操作概念图3.基于CC2530的温度监测系统3.1系统设计思路及整体结构本文的温度监测系统是利用ZigBee无线通讯技术为基础,采用CC2530芯片为核心设计的无线传感系统。在现实中所应用的温度监测系统通常需要一个或多个路由器节点和至少一个或多个终端设备,往往是一个非常庞大的ZigBee无线网络系统,具有非常复杂的网络结构,但是由于在实验环境下,节点数量、制作成本、技术能力等多方面因素,无法构成像现实中的大型无线网络,目前只能实现点对点的温度监测和数据传输来模拟现实中的温度监测ZigBee网络。本文中所设计的温度监测系统采用点对点通信的模式,可以理解为简化的星型拓扑网络,由一个协调器和一个终端节点组成。协调器具有无线收发通信部分、处理器部分、与PC机通信的串口部分和电源供电部分。终端节点与协调器相比不具有串口通信部分而是增加了温度采集传感器部分。当需要温度采集时,协调器向终端节点发送控制命令,终端节点通过温度传感器DS18B20进行温度的采集,之后终端节点将采集的温度数据通过无线发送给协调器,由协调器对温度数据进行处理后通过串口将温度数据传输给PC机,通过上位机软件对温度数据进行显示、分析、存储等处理。由于ZigBee的特点是低功耗,因此本设计中为使节点满足低功耗要求,终端节点还能进入休眠模式,采用定时器唤醒模式每10秒唤醒一次,以最大限度的降低功耗。系统总体方案图,如图3.1所示。图3.1 系统总体方案图3.2系统硬件设计3.2.1 ZigBee开发套件本设计所用ZigBee开发套件由节点(底板和核心板)2套、仿真器1个、10pin排线1条、USB线2条、2db天线2条和DS18B20温度传感器1个构成。此开发套件具有以下特点:设计小巧,布局合理。底板尺寸5*5cm,核心板尺寸2.5*2.5cm;采用底板加核心板的设计,便于更换模块或板载天线模块;板上接口资源丰富,传感器即插即用;板载USB转串口电路,方便笔记本以及没有串口的电脑用户;传输距离远;具备USB高速下载功能,支持IAR集成开发环境;ZigBee开发套件节点底板实物图,如图3.2所示。图3.2 节点底板实物图ZigBee开发套件底板电路示意图,如图3.3所示。图3.3 节点底板电路示意图在本温度监测系统设计中,由底板和核心板所组成的两套节点分别作为协调器和终端节点。协调器节点协调器节点主要由CC2530芯片、射频天线电路、供电模块、晶振电路以及串口通讯电路五部分组成。协调器节点的功能是将计算机发送的指令发送给终端节点,再接收终端节点传来的的数据信息,并将接收到的数据发送给计算机显示。协调器设计如图3.4所示。图3.4 协调器节点终端节点终端节点主要由CC2530芯片、射频天线电路、供电模块、晶振电路以及温度传感器DS18B20五部分组成。终端节点主要负责完成对温度数据的采集,并且将温度传感器采集的温度数据周期性的发送给协调器。终端节点设计如图3.5所示。图3.5 终端节点设计除了节点外还有仿真器,仿真器提供连接PC的USB接口,通过Download程序至协调器和终端节点。可以实现单步调试、断点调试、观测调试、数据流调试和观察寄存器。ZigBee开发套件仿真器实物图,如图3.6所示。图3.6 仿真器实物图3.2.2 CC2530概述CC2530芯片是由TI公司设计开发的一款支持IEEE802.15.4标准/ZigBee/ZigBee RF4CE的新一代SOC芯片,是真正的片上系统解决方案。CC2530是理想的ZigBee专业应用,因为其拥有多达256KB的快闪记忆体。CC2530拥有一个高性能无线收发器、一个标准增强型8051微处理器、8KB的RAM、32/64/128/256KB闪存、4种供电模式以及包括12位数模转换器 、2个通用串口模块和21个通用GPIO等的强大外设支持。此外,CC2530还通过TI的标准兼容网络协议栈Z-Stack来简化开发。特性描述CC2530具有强大的无线前端:采用2.4GHzIEEE802.15.4标准RF发射器,可编程输出功率为+4.5dbm,总体无线连接102dbm,6*6mm的QFN40封装。CC2530还具有低功耗的特点:接收模式24mA,发送模式29mA,4微秒唤醒0.2mA,睡眠计时器运行1mA,外部中断0.4mA,电源电压范围2-3.6V。CC2530的微控制器包括:高性能的8051MCU内核,32/64/128/256KB闪存,8KB内存。CC2530还具有强大的外设集:五通道DMA,21个通用I/O引脚,3个通用定时器,32kHz睡眠计时器和定时捕获,CSMA/CA硬件支持,8通道12为ADC,AES加密安全协处理器,WatchDog定时器,两个USART等。应用范围CC2530广泛应用于RF4CE摇杆控制系统、楼宇自动化系统、照明系统、工业控制和监控、电子消费、医疗保健等领域。引脚描述CC2530采用40引脚的QFN封装,其引脚如图3.7所示:图3.7 CC2530引脚顶视图引脚描述CC2530外围主电路图如图3.8所示。图3.8 CC2530外围主电路3.2.3 DS18B20概述DS18B20是最常用的温度传感器之一,具备体积小、成本低、抗干扰能力强、精度高等特点。DS18B20由4个主要部分组成:64位光刻ROM、温度传感器、配置寄存器和非挥发的温度报警触发器TH和TL。DS18B20有效工作电压3-5.5V之间,测温范围在-55- +125(测温误差1)之间,单线接口方式,无需任何外围元件。DS18B20使用范围广泛,包括:测温控制领域、狭小的工业设备测温和控制等。3.3系统软件设计本设计所使用的软件开发平台是CC2530适用的IAR-EB8051-V8.1,采用ZStack-CC2530-2.3.0-1.4.0协议栈。3.3.1软件开发环境IAR简介IAR的C/C+交叉编译器和调试器是目前世界上最容易利用的专业嵌入式应用开发工具。IAR由嵌入式C/C+优化编译器和调试器,实时操作系统,状态机建模工具,硬件仿真器组成,是一套完整的集成开发工具集合,包含嵌入式系统设计、开发和测试的每一个阶段。IAR支持30多种ARM微处理器结构,提供统一的用户界面,使用户在开发和调试的过程中仅仅使用统一的开发界面就能够满足多种工作需要。IAR集成编译器主要产品特征:高效 PROMable 代码、完全标准 C 语言兼容、内建对应芯片的程序速度和大小优化器、目标特性扩充、版本控制和扩展工具支持良好、便捷的中断处理和模拟、瓶颈性能分析、高效浮点支持、内存模式选择和工程中相对路径支持。利用IAR编译器能够大量节省硬件资源,极大限度地降低产品的研发成本,提高产品市场竞争力。3.3.2 Z-Stack体系架构及工作流程Z-Stack协议栈是由TI公司在2007年4月推出的Zigbee无线通讯协议,是一种半开源式的协议栈,很多关键代码都是以库文件的形式给出的,历经多年发展,功能不断完善。Z-Stack协议栈体系架构示意图如图3.9所示。图3.9 Z-Stack协议栈体系架构示意图Z-Stack软件架构Z-Stack 协议栈首先从main()函数开始执行,main()位于ZMain.c文件中。main()函数中全部内容包含有:关闭全部中断,初始化系统时钟,检查芯片电压是否正常,初始化I/O、LED、Timer等,初始化芯片各硬件模块,初始化Flash存储器,初始化MAC层,确定IEEE地址,初始化非易失变量,调用AF初始化程序,初始化操作系统,使能全部中断,初始化按键,显示设备信息,执行操作系统。但是main()函数最主要做两件事: 一是系统初始化, 二是开始执行操作系统, 如图3.10所示。图3.10 main()函数主要流程ZMain.c文件中main()函数主要内容:int main( void ) osal_init_system(); /初始化操作系统 osal_start_system(); /执行操作系统 / main()Z-Stack操作系统初始化在main()函数中的重点之一就是osal_init_system()系统初始化函数。该函数在初始化任务系统中创建任务表中定义任务(osal_task.h)。osal_init_system()函数中包含需要初始化的内容有:内存分配系统初始化、消息队列初始化、定时器初始化、电源管理初始化、系统任务初始化,其中重点是初始化系统任务。在OSAL.c文件中osal_init_system()函数主要内容:uint8 osal_init_system( void ) osalInitTasks(); /初始化系统任务 在osal_init_system()函数中重点是osalInitTasks()任务初始化函数,函数中每个任务都是调用初始化函数对协议栈每一层进行初始化。osalInitTasks()函数中主要进行了内存的分配、设置内存空间单元、按照任务优先级由高向低(高优先级对应taskID值小)进行任务初始化3件事,而对用户应用的初始化是关键。在OSAL_SampleApp.c文件中osalInitTasks()函数主要内容:void osalInitTasks( void ) SampleApp_Init( taskID ); /用户应用任务初始化执行操作系统在main()函数中的另一重点就是osal_start_system()执行操作系统函数。Z-Stack协议栈中的操作系统是基于优先级的轮询式操作系统。此函数将所有的任务事件和调用task_event_processor()事件的任务功能,如果没有事件(任务),这一功能使处理器进入睡眠状态。此函数没有返回值。函数中包括:扫描事件设置标志位,轮询定时器和串口,准备任务,在临界区中提取、处理、清除、保存事件,使系统休眠。在OSAL_SampleApp.c文件中osal_start_system()函数主要内容:void osal_start_system( void ) events = tasksEventsidx; /提取需要处理的任务中的事件 events = (tasksArridx)( idx, events ); /通过指针调用任务处理函数 osal_pwrmgr_powerconserve(); /使进程/系统休眠程序中重点是events=tasksEventsidx;进入tasksEventsidx数组,是osalInitTasks()函数里初始化的tasksEvents。taskID把任务联系起来一一对应,数组中事件的顺序必须与任务初始化函数中的顺序相同,以达到初始化和调用的目的。 用户应用系统初始化函数SampleApp_Init()对于通用应用程序系统初始化函数,就是初始化过程中应该包含任何特定于应用程序的初始化(即硬件初始化设置,表的初始化等)。在osalInitTasks()任务初始化函数中,包含用户应用系统初始化函数SampleApp_Init(),由此进入由用户创建的任务。在SampleApp_Init()函数中主要包含6个部分工作:分配任务ID,串口初始化,注册串口任务,温度传感器引脚初始化,设置发送数据的方式和目的的地址寻址模式,定义端点描述符。在SampleApp.c文件中,SampleApp_Init()函数主要内容如下:void SampleApp_Init( uint8 task_id ) SampleApp_TaskID = task_id; /osal分配的任务ID随着用户添加任务的增多而改变 MT_UartInit(); /串口初始化 MT_UartRegisterTaskID(task_id); /注册串口任务 P0SEL &= 0x7f; /DS18B20的I/O口初始化 p0.7 /发送模式:点播发送 SampleApp_P2P_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; /点播 SampleApp_P2P_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;/指定端点号 SampleApp_P2P_DstAddr.addr.shortAddr = 0x0000;/发给协调器 /定义本设备用来通信的APS层端点描述符 SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT; SampleApp_epDesc.task_id = &SampleApp_TaskID; /SampleApp描述符的任务ID SampleApp_epDesc.simpleDesc /SampleApp简单描述符 = (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc; SampleApp_epDesc.latencyReq = noLatencyReqs; /延时策略用户应用任务的事件处理函数SampleApp_ProcessEvent()通用应用程序任务事件处理器。这个函数被调用来处理任务的所有事件活动,包括定时器信息和其他用户定义的事件。SampleApp_ProcessEvent()函数主要负责接收系统消息并对消息进行处理,在网络状态发生改变时完成对协调器和终端设备的设置,周期性发送消息,返回未处理事件,处理周期性事件。在SampleApp.c文件中,SampleApp_ProcessEvent()函数主要内容如下:uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) case ZDO_STATE_CHANGE:/只要网络状态发生改变,就通过ZDO_STATE_CHANGE事件通知所有任务。同时完成对协调器、终端的设置 SampleApp_NwkState = (devStates_t)(MSGpkt-hdr.status); if (SampleApp_NwkState = DEV_END_DEVICE) ) / 启动初始化后开始有规律的发送周期信息 osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) /处理周期性事件,每10s唤醒1次 SampleApp_Send_P2P_Message(); osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, 10000 );3.3.3网络通信过程开发板A作为协调器,上电启动后自动建立网络并周期性向终端设备发送数据包;开发板B作为终端设备,上电启动后加入网络,并且也周期性向协调器发送数据包。启动过程分析无论是协调器还是终端设备,启动过程和网络初始化的步骤都是一样的,只是配置文件在编译时会根据设备的不同类型而有所区别。启动过程如下:A.操作系统初始化;B.系统任务初始化;C.设备对象初始化和用户应用任务初始化;D.ZDApp_init()设备对象初始化函数主要内容包括:保存任务ID,分配地址,初始化ZDO,为设备注册端点描述符;E.ZDOInitDevice()函数在网络启动中,会完成初始化设备网络状态,初始化RAM项目表,初始化控制逻辑,确定设备类型,初始化设备安全属性,形成网络这些工作;F.ZDApp_NetworkInit()函数用于启动连接网络;G.ZDApp_event_loop()函数是主函数循环的ZigBee设备对象的任务,功能是网络初始化事件处理;协调器建网在设备初始化结束后,由协调器建立无线网络。如果协调器新建网络成功,允许协调器设定为绑定。此时协调器检测是否有节点要求加入网络,如果有,协调器建立绑定表,建立绑定,同时发出请求,节点确认后,协调器开始接收数据,最后通过串口发送给上位机。协调器程序流程图如图3.11所示。图3.11 协调器流程图终端设备入网设备初始化后,终端节点会根据ZigBee协议栈搜寻附近的网络,并请求加入网络。当请求得到协调器确认后,终端设备会将自己的地址发给协调器,并自动与协调器建立绑定。在接受到数据传送请求之后,终端设备就会将所测量的温度值周期性的传送给协调器。终端设备流程图如图3.12所示。图3.12 终端设备流程图3.3.4温度测量与数据传输DS18B20驱动程序DS18B20驱动程序包括两个文件ds18b20.c和ds18b20.h。在文件ds18b20.c中主要有以下几部分工作:A.设置温度传感器引脚:#define Ds18b20IO P0_7;B.设置时钟频率:void Ds18b20Delay(unsigned int k) while (k-) asm(NOP); (省略31次asm(NOP);) C.设置输入端口:P0DIR &= 0x7f;D.设置输出端口:P0DIR &= 0x7f;E.初始化DS18B20;F.温度读取函数:/温度读取函数 带1位小数位unsigned int floatReadDs18B20(void) unsigned char V1,V2; /定义高低8位 缓冲 unsigned int temp; /定义温度缓冲寄存器 float fValue; Ds18b20Initial(); Ds18b20Write(0xcc); / 跳过读序号列号的操作 Ds18b20Write(0x44); / 启动温度转换 Ds18b20Initial(); Ds18b20Write(0xcc); /跳过读序号列号的操作 Ds18b20Write(0xbe); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 V1 = Ds18b20Read(); /低位 V2 = Ds18b20Read(); /高位 temp=V2*0xFF+V1; fValue = temp*0.625; return (unsigned int)fValue;初始化串口和温度传感器引脚在文件SampleApp.c中的SampleApp_Init()处写入语句:Void SampleApp_Init(uint8 task_id) MT_UartInit(); /串口初始化; MT_UartRegisterTaskID(task_id); /注册串口任务; POSEL&=0x7f; /DS18B20的I/O口初始化p0.7读取温度数据在文件SampleApp.c中有SampleApp_Send_P2P_Message()函数负责温度的读取和传输:void SampleApp_Send_P2P_Message( void )char str4;unsigned int temp;temp = floatReadDs18B20(); /读取温度数据 str0 = temp%1000/100+ 48;str1 = temp%100/10+48;str2 = .;str3 = temp%10 + 48;if ( AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc, SAMPLEAPP_P2P_CLUSTERID, 4, str, &SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) = afStatus_SUCCESS )接收数据在文件SampleApp.c中有SampleApp_MessageMSGCB ()函数负责对温度数据的接收,并且发送给上位机显示:void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) uint16 flashTime; switch ( pkt-clusterId ) case SAMPLEAPP_P2P_CLUSTERID: HalUARTWrite(0,$,1); HalUARTWrite(0, pkt-cmd.Data, pkt-cmd.DataLength); /输出接收到的数据 HalUARTWrite(0,#,1); break; 3.3.5节点休眠由于在实际应用中终端节点是由电池供电,所以为保证低功耗,必须设计程序使节点能够休眠,本设计中采用定时器中断方式,一次休眠时间10秒。在OSAL中是使用睡眠定时器来控制睡眠时间的,在系统初始化的时候要将电源控制结构体中的pwrmgr_device设备属性设置为PWRMGR_BATTERY(电源管理设备属性有有PWRMGR_ALWAYS_ON和PWRMGR_BATTERY两种,选择PWRMGR_ALWAYS_ON的话将不会进入睡眠模式,选择PWRMGR_BATTERY将允许HAL管理CPU进入SLEEP LITE或者SLEEP DEEP状态)。初始化电源管理函数在OSAL.C里面的osal_init_system()调用,将电源管理模式调成可以进入睡眠模式:void osal_pwrmgr_init( void )pwrmgr_attribute.pwrmgr_device = PWRMGR_BATTERY; /设置睡眠模式pwrmgr_attribute.pwrmgr_task_state = 0; /清零osal_pwrm

温馨提示

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

评论

0/150

提交评论