请教F8的ZIGBEE协议栈怎样进行多频道选择?[原创]
- UID
- 124030
- 性别
- 男
|
请教F8的ZIGBEE协议栈怎样进行多频道选择?[原创]
请教各位大侠! 用FREESCALE13192+GT60与F8做ZIGBEE 802.15.4MAC软件使用手册中使用下面两个函数完成多频道搜索: uint8_t App_StartScan(uint8_t scanType) void App_HandleScanEdConfirm(nwkMessage_t *pMsg) ZIGBEE-F8文档中有关于下面函数的说明: ZDP_MgmtNwkDiscReq() NLME_NetworkFormationRequest() NLME_NetworkDiscoveryRequest() NLME_OrphanJoinRequest() 在灯光SLC项目中,启动Coordinator后,在NWKPRocessScanCnf()中处理了返回的单频道SCAN结果(默认频道),频道未占用时可以顺利启动,频道占用时不能顺利启动,没有通过频道选择来避免冲突.而在MAC中可以使用多频道选择函数来选择频道.编译标志里也没有找到相关标志的详细说明(ZDO_DISCOVERYREG_REQUEST,ZDO_MGMT_NWKDISC_REQUEST,ZDO_MGMT_NWKDISC_RESPONSE).灯光DEMO项目应该有多频道选择功能吧!?是需要自己将多频道选择的代码(zdp_mgmtnwkdiscreq())加上去吗?各位大侠有没有更详细一些的资料啊?请教了!谢谢! |
|
|
|
|
|
- UID
- 107585
- 性别
- 男
|
你需要改一下设置,路径如下:C:\F8W\FS-1.0-1.2.0\Z-Stack\Projects\HomeLighting\SLC03394\MC13192 你打开文件,然后在NWK下面有个NLMEDE.h里面 #define DEFAULT_CHANLIST 下面可以改一下bitmap, 你可以选择其中的几个频道,或者选择所有的频道。这样在建网络前,coordinator 会SCAN 你选定的频道,而不是固定在某个频道上面。 |
|
|
|
|
|
- UID
- 124030
- 性别
- 男
|
非常感谢!以前试过修改DEFAULTCHANLIST来选择不同的频道,不知道可以用做掩码选择多个频道,看来是我资料没有看好,呵呵
在文档中有这两个函数的介绍:
NLME_NetworkFormationRequest()
ScanChannels – This specifies the channels to be scanned before choosing one for the new network. It is 32-bit bitmap with the channels in the 2.4GHz being represented by bits 11 through 26.
ZDP_MgmtNwkDiscReq()
ScanChannels – Bit mask containing the channels to scan for this request. The channel definitions are contained in NLMEDE.h (ex. DEFAULT_CHANLIST).
在NLMEDE.H中有DEFAULTCHANLIST定义.
在NWK_GLOBALS.H中nwkDefaultChannelList=DefaultCHANLIST.
在NLME_NetworkFormationRequest()中调用了nwkDefaultChannelList参数.
一直以为在NLME_NetworkFormationRequest()中的ScanChannels是在NLMEDE.H中选择一个固定的频道,
在ZDP_MgmtNwkDiscReq()中的ScanChannels是一个可以选择多频道的掩码.呵呵.再看了看就非常清楚了!明天我就实验一下.
另外,想再请问一下:
A、灯光协议里有没有自动对频与自动跳频的功能?具体来说:
1、相邻的两套住房分别各安装一套ZIGBEE灯光电器开关,是依靠NETID来区分,还是使用不同的频道来防止相互干扰?如果是使用不同的频道,CHANNELS-SCAN只能确定没有网络在活动,不能确定没有网络存在,好象不太好实现自动选频。当然,可以在安装时使用手工选频。
2、设备安装完成后,相邻的住房自行安装了同样的系统,相互之间能否通过自动跳频来防止干扰?灯光电器轮廓是否具备这样的功能,还是需要二次应用开发者我们自己编写对码或对频与跳频协议?
B、灯光轮廓是基于FSL-DEMO板开发的,如果对IO分配与内部资源改动较大,软件开发是否比较麻烦?刚开始做ZIGBEE时由于我还使用了CAN,对FIG8也不熟悉,我实验过将GZ60与13192组合,想将FIG8移植过去,后来发现非常麻烦,放弃了,现在ZIGBEE用GT60,CAN用GZ16。
C、在OSAL.C中:
#if defined( POWER_SAVING )
// Put the processor/system into sleep
osal_pwrmgr_powerconserve();
#endif
能否通过定义PWER_SAVING标志在系统空闲时进入睡眠模式,通过键盘中断唤醒,完成电池供电系统节电管理?13192具不具备射频唤醒功能?
|
|
|
|
|
|
- UID
- 107585
- 性别
- 男
|
请看我的回答:
A:
1. ZIGBEE是没有自动跳频功能的,网络之间是用频道和PANID来区分的。每个网络在开始建立之前,COORDINATOR会去SCAN一个干净的频道,来建立一个网络。也就是说,在他周围某个频道已经被占用,他就是去SCAN其他的频道,直到找到一个没有被使用的频道,然后去建立网络。
2.这个问题可以参照上面.所以相邻的网络在开始的时候,会选择不同的频道。所以你可以在BITMAP那边选择多一点的频道,不过那样在建网络的时候,会久一点,因为它要SCAN.
B:建议你自己的板子完全参照开发板,这样你可以不需要对IO做太多更改。
C:系统进入休眠状态后,你可以通过内部时钟定时唤醒,或者通过外部中断来唤醒。13192不支持射频唤醒的。 |
|
|
|
|
|
- UID
- 124030
- 性别
- 男
|
|
|
|
|
|
- UID
- 135989
- 性别
- 女
|
相邻的两套住房分别各安装一套ZIGBEE灯光电器开关,相当于建立了两个zigbee网,device成员在加入的时候,怎么样去区别该加入哪个网络? |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
这个可以用户自己设定。
一般你可以知道两个网络各自的NETID,device选择一个ID加入。
|
|
|
|
|
|