Zigbee协议栈网络管理
一、补充基础知识
每个cc2530芯片出厂时候都有一个全球唯一的32位MAC地址,当设备连入网络的时候,每个设备都能获得由协调器分配的16位短地址,协调器默认地址0x0000,很多时候网络就是通过短地址进行管理。
二、实验现象
路由器、设备终端发送自己定义的设备号给协调器,协调器通过接收到的设备号判断设备类型,并且获取设备的短地址,通过串口打印出来。
三、实验步骤
- 串口初始化
图1
先在SampleApp.c添加串口通信的头文件。(如图1)
#include “MT_UART.h”
然后在初始化函数中添加串口初始化函数。(如图2)
MT_UartInit();
MT_UartRegisterTaskID(task_id);
图2
在MT_UartInit();处右键找到该函数的定义。(如图3)
图3
注意其中的波特率和流控,右键查看它们的定义,并修改参数。波特率设置115200,流控参数改成FALSE。(如图4)
图4
- 该实验是基于点播方式的,故配置点播的环境。
在SampleApp.c中新定义一个afAddrType_t型变量Point_To_Point_DstAddr,如图5。
图5
在初始化函数SampleApp_Init()中配置它的参数。(如图6)
图6
- 在SampleApp.c下新建一个自己的点播发送函数,代码如下:
1 void SampleApp_SendPointToPointMessage(void) 2 3 { 4 5 uint8 device; 6 7 //设备类型号在SampleApp_NwkState中查看 8 9 if(SampleApp_NwkState == DEV_ROUTER) 10 11 device = 0x01; //路由器 12 13 else if(SampleApp_NwkState == DEV_END_DEVICE) 14 15 device = 0x02; //终端 16 17 else 18 19 device = 0x03; //出错 20 21 22 23 if ( AF_DataRequest( &Point_To_Point_DstAddr, &SampleApp_epDesc, 24 25 SAMPLEAPP_POINT_TO_POINT_CLUSTERID, 26 27 1, 28 29 &device, 30 31 &SampleApp_TransID, 32 33 AF_DISCV_ROUTE, 34 35 AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) 36 37 { 38 39 } 40 41 else 42 43 { 44 45 // Error occurred in request to send. 46 47 } 48 49 }