新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > ZigBee2006协议栈的 无线传感执行网络构建

ZigBee2006协议栈的 无线传感执行网络构建

作者:时间:2009-08-17来源:网络收藏

OSAL层初始化时,通过osalAddTasks函数提供任务列表,向实时操作系统中添加用户所需要的任务。在该函数中,TI公司已经添加了一些任务,如硬件应用层初始化及处理函数、层初始化及处理函数、应用层初始化及处理函数等。在该函数中添加自己的任务,添加任务函数如下: osalTaskAdd(CSCE_Init,CSCE_ProcessEvent,OSAL_TASK_PRIORI-TYLOW);
osalTaskAdd函数在OSAL层中的OSAL_Task.C文件中定义,其作用是添加一个任务到任务列表。其中,第1个参数CSCE_Init为用户任务的初始化函数的函数名,第2个参数CSCE_ProcessEvent为用户任务的处理函数的函数名,第3个参数 OSAL_TASK_PRlORITY_LOW为用户任务的优先级。
任务初始化函数CSCE_Init和任务处理函数CSCE_ProcessEvent都需要遵循栈的格式。其中,CSCE_Init函数和CSCE_ProcessEvent函数需要在应用层头文件SampleApp.h中进行声明。
CSCE_Init函数有一个参数task_id,该参数为任务ID,具体值由OSAL进行分配。CSCE_ProcessEvent函数有2个参数:第 1个参数与CSCE_Init函数相同,为任务ID;第2个参数events为需要处理的事件,它是一个16位的二进制数,每一位代表一个事件。
利用OSAL层进行任务设计时,必须保留系统任务事件SYS_EVENT_MSG(0x8000),该事件为强制事件。进行任务处理时,首先要对系统任务事件是否发生进行判断,任务处理流程如图5所示。由于栈为全功能栈,不需要对IEEE 802.15.4和ZigBee规范进行全面的了解,只需要在应用层进行一些设计和改动,即可实现数据的发送、接收以及组建功能。在终端节点的 CSCE_ProcessEvent函数的上电初始化处理部分,加入物理地址和短地址提取函数,然后调用发送函数将物理地址向协调器发送。协议栈中的物理地址获取函数为NLME_GetExtAddr(),其返回结果为一个指向节点的64位IEEE地址的指针。短地址的获取函数为 NLME_GetShortAddr(),其返回结果为一个16位的无符号整型数据。
数据发送函数在规范的原语中已经规定了其参数的顺序及意义。具体到TI/Chipcon公司所提供的ZigBee2006协议栈中,该函数为AF_DataRequest,其具体形式如下:


在协调器端和路由器(或终端节点)的CSCE_Pro-cessEvent函数中接收到数据部分(即CSCE_MessageMS-GCB函数)中对数据进行处理,将所接收到的数据(即物理地址和短地址)通过串口发送到计算机端,进行显示。
ZigBee2006协议栈中设计了串口接收处理函数:


该函数在MT目录的SPIMgr.C中。实验中,在协调器端调用该函数,即可从PC机端接收数据并进行相应的处理。



评论


相关推荐

技术专区

关闭