教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

基于ZigBee技术的无线数据采集系统 - 图文(14)

来源:网络收集 时间:2026-10-05
导读: 江 苏 大 学 硕 士 学 位 论 文 这是通过函数aplJoinNetwork()来实现的。其中的具体设定如下: //加入一个网络 a_nwk_service.cmd = LRWPAN_SVC_NWK_JOIN_NETWORK; //扫描信道的选择,为32位数据。每位为1:扫描信

江 苏 大 学 硕 士 学 位 论 文

这是通过函数aplJoinNetwork()来实现的。其中的具体设定如下:

//加入一个网络

a_nwk_service.cmd = LRWPAN_SVC_NWK_JOIN_NETWORK;

//扫描信道的选择,为32位数据。每位为1:扫描信道,0:不扫描

a_nwk_service.args.join_network.ScanChannels=RWPAN_DEFAULT_CHANNEL_MASK; //设置扫描每个信道的时间

a_nwk_service.args.join_network.ScanDuration=LRWPAN_DEFAULT_CHANNEL_SCAN_DUR

ATION;

//设置网络标识符

a_nwk_service.args.join_network.PANid = LRWPAN_DEFAULT_PANID; // 重新加入网络设置为假

a_nwk_service.args.join_network.RejoinNetwork = FALSE;

在具体加入网络中所需完成的工作包括:

nwkState = NWK_STATE_JOIN_NETWORK_START; //设定为加入网络状态 phyInit(); //初始化物理层 macInit(); //初始化MAC层 ntInitTable(); //初始化邻近表 a_nwk_service.status = macInitRadio(); //开启无线通信

4.2 终端节点软件设计

4.2.1 主程序设计

终端节点的主要功能:加入到现在的网络中去,读取采集终端数据,能够接收从ZigBee网络上传来的数据和命令。

终端节点首先初始化CC2430,包括与串行口通信的基本设置等,然后程序初始化协议栈并打开中断,之后发送加入网络信号,等待网络协调器响应,并给自己分配网络地址。如果网络加入成功,终端节点上的二极管被点亮。加入网络成功后,等待中断,响应相应得中断。终端节点软件流程图如图4.6所示。

36

江 苏 大 学 硕 士 学 位 论 文

发送加入网络信号加入网络是否成功?是否等待信息CC2430初始化否是否为数据信息?是初始化协议栈采集数据终端数据发送采集终端数据初始化串口中断使能信息应答完成

图4.6 终端节点流程图

Fig.4.6 Program flow chart of terminal nodes

4.2.2 初始化程序

在CC2430上电复位后,要先进行初始化工作,包括协议栈初始化、串口初始化,定时器初始化、频率信道初始化,变量初始化等。

halInit(); //硬件层的初始化 evbInit(); //CC2430初始化 aplInit(); //初始化协议栈

initUART(); //初始化串口,波特率2400,8位数据位,无奇偶校验,1位停止位 ENABLE_GLOBAL_INTERRUPT(); //使能中断

协议栈使用免费的精简版ZigBee协议栈,支持ZigBee协议的三种网络拓扑结构:星状网、树状网、网状网。主要包含的源程序如表4.1所示。

表4.1 精简版ZigBee协议栈的源程序 Tab.4.1 Source program of ZigBee protocol stack

37

江 苏 大 学 硕 士 学 位 论 文

函数名 具体函数及其功能

aps.c/aps.h应用子层程序

memalloc.c/memalloc.h内存申请释放

应用层程序

zep.c/zep.h设备对象相关操作程序 console.c/console.h输出控制相关程序 neighbor.c/neighbor.h邻近节点相关程序

网络层程序 MAC层程序 PHY物理层程序

nwk.c/nwk.h网络层相关程序 mac.c/mac.h MAC层相关程序 phy.c/phy.h物理层相关程序

halstack.h/evboard.h/ioCC2430.h 与CC2430相关的一些定义 ieee_lrwpan_defs.h

IEEE定义的一些相关头文件 lrwpan_common_types.h

lrwpan_config.h

4.2.3 无线数据的收发

如果需要把数据进行无线发送,需要建立一个良好的机制,首先要监测是否有数据要以无线射频的方式发送,如果没有,则继续保持一个Idle(闲置)状态,当有数据要发时,产生一个中断,来发送数据。

应用层定义一个发送程序,如下所示:

void aplFmtSendMSG (BYTE dstMode,

LADDR_UNION *dstADDR, BYTE dstEP, BYTE cluster, BYTE srcEP,

BYTE* pload, BYTE plen, BYTE tsn, BYTE reqack);

BYTE dstMode:数据发送的地址模式。当为1时,以16位的网络地址发送数据;当为2时,以64位的物理地址发送数据。

LADDR_UNION *dstADDR:发送数据的目的地址。可以为16位的网络地址,也可以是64位的物理地址。 BYTE dstEP:目的地终点。 BYTE cluster:串状态标示符。 BYTE srcEP:来源终点。

38

江 苏 大 学 硕 士 学 位 论 文

BYTE* pload:本帧发送的数据。 BYTE plen:发送数据的长度。 BYTE tsn:传输序列号。

BYTE reqack:是否需要应答。当为0时,需要应答。 4.2.4 定时中断子程序

CC2430含有一个MAC定时器、一个16位的定时器以及2个8位的定时器,本论文中我们选用一个8位的定时器。定时器3是一个典型的输入捕获/输出比较的8位定时器,具有以下特点:双通道操作、上升沿/下降沿/任何边沿的输入比较、置位/清除/触发输出比较、1/2/4/8/16/32/64/128的时钟分频、由捕获/比较和计数引起的中断请求、DMA触发。

所有定时/计数的实现都是基于定时器3中的一个8位计数器。时钟边沿的周期由特殊功能寄存器的位CLKCON.TICKSPD决定,而CLKCON.TICKSPD是由T3CTL.DIV的分频值决定。计数器的运作可分为free-running模式、down模式、modulo模式以及up/down模式。文中所选用的是module模式,这是一种计数值自装载模式。

定时器的开始与停止由位T3CTL.START决定,当为1时,启动定时器,当为0时,停止定时器。特殊功能寄存器TIMIF包含了定时器3所有的中断标志。只有在相应的中断标志位被置位时,才产生中断请求。如果存在悬而未决的中断,在CPU开始一个新的中断请求时,相应的中断标志需要清除。 …… 此处隐藏:1074字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于ZigBee技术的无线数据采集系统 - 图文(14).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/612130.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)