Zigbee网络设备启动基本问题说明Word下载.docx

上传人:b****3 文档编号:15701973 上传时间:2022-11-15 格式:DOCX 页数:21 大小:194.04KB
下载 相关 举报
Zigbee网络设备启动基本问题说明Word下载.docx_第1页
第1页 / 共21页
Zigbee网络设备启动基本问题说明Word下载.docx_第2页
第2页 / 共21页
Zigbee网络设备启动基本问题说明Word下载.docx_第3页
第3页 / 共21页
Zigbee网络设备启动基本问题说明Word下载.docx_第4页
第4页 / 共21页
Zigbee网络设备启动基本问题说明Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Zigbee网络设备启动基本问题说明Word下载.docx

《Zigbee网络设备启动基本问题说明Word下载.docx》由会员分享,可在线阅读,更多相关《Zigbee网络设备启动基本问题说明Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

Zigbee网络设备启动基本问题说明Word下载.docx

自动启动模式:

个人认为就是自动通过ZDApp(具体讲是ZDOInitDevice())来开启设备并初始化建立/加入网络,设备的逻辑类型由所携带的配置文件来决定.

2、三种逻辑类型节点的配置文件

协调器:

f8wCoord.cfg配置文件中同时编译了路由功能RTR_NWK和协调器功能ZDO_COORDINATOR

/*CommonToAllApplications*/

-DCPU32MHZ//CC2430sRunat32MHz

-DFORCE_MAC_NEAR//MACcodeinNEAR

-DROOT=__near_func//MAC/ZMACcodeinNEAR

-DMAC_CFG_APP_PENDING_QUEUE=TRUE

/*CoordinatorSettings*/

-DZDO_COORDINATOR//CoordinatorFunctions

-DRTR_NWK//RouterFunctions

/*OptionalSettings*/

-DBLINK_LEDS//LEDBlinkFunctions

/*Compilerkeywords*/

-DCONST="

const__code"

-DGENERIC=__generic//Ptrdeclaration

路由器:

f8wRouter.cfg配置文件中编译了路由功能RTR_NWK

/*RouterSettings*/

终端:

f8wEdev.cfg配置文件中没有编译这两个功能.

-DMAC_OPT_FFD=0//ZigBeeRFD

协调器的配置文件只比路由器配置文件多编译了个-DZDO_COORDINATOR//CoordinatorFunctions

如果同时编译非自动启动模式HOLD_AUTO_START和软启动模式SOFT_START,设备可以通过应用程序来选择成为路由器或协调器.当然这个设备所带的配置文件应为f8wCoord.cfg.对于设备携带的是何种配置文件,可以打开project->

options->

c/c++compiler->

extraOptions选项查看.

比如SampleApp中的DemoEB,同时编译了SOFT_START和HOLD_AUTO_START,貌似下载进去后通过外部跳线来选择是当协调器还是路由器,不过这部分程序已经被注销了.当然的,DemoEB所带的配置文件应该是同时编译了路由功能和协调器功能的f8wCoord.cfg,即编译了RTR_NWK和ZDO_COORDINATOR.再比如SimpleApp中两个实验中的灯与开关实验.开关设备SimpleSwitchEB无论按K1还是K2都是作为终端设备的,其预编译选项只有HOLD_AUTO_START而没有SOFT_START,配置文件为f8wEndev.cfg,没有协调器和路由功能;

而灯设备SimpleControllerEB按键K1则作为协调器,按K2则作为路由器,其预编译选项同时编译了SOFT_START和HOLD_AUTO_START,配置文件为f8wCoord.cfg,即编译了RTR_NWK和ZDO_COORDINATOR.SimpleApp中传感器实验也一样,只能作为终端设备的SimpleSensorEB预编译了HOLD_AUTO_START,配置文件为f8wEndev.cfg;

而SimpleCollectorEB按K1作为协调器按K2作为路由器,预编译了SOFT_START和HOLD_AUTO_START,配置文件f8wCoord.cfg.可以通过project->

extraOptions选项查看,也可由workspace看出,如下:

作为终端的开关节点与作为协调器/路由器的灯节点:

空白的文件表示没有包含在这个workspace中.

作为终端的传感器节点与作为协调器、路由器的中心收集节点:

***********************************

3、有两种方式来设置非自动启动模式:

HoldAutoStart

(1)、手工方式:

在ZDApp_Init()函数中有个ZDAppCheckForHoldKey();

(//Checkformanual(手工的)"

HoldAutoStart"

).

来看下这个函数:

********************

voidZDAppCheckForHoldKey(void)

{

#if(definedHAL_KEY)&

&

(HAL_KEY==TRUE)

//直接通过读取按键来判断是否需要采用HOLD_AUTO_START模式,如果发现

//SW_1处于按下(普通按键?

)/向上(Joystickup)状态,则设置devState为DEV_HOLD;

//GetKeypaddirectlytoseeifaHOLD_STARTisneeded.

//HolddowntheSW_BYPASS_STARTkey(seeOnBoard.h)

//whilebootingtoavoidstartingupthedevice.

if(HalKeyRead()==SW_BYPASS_START)//HAL_KEY_SW_1

//ChangethedevicestatetoHOLDonstartup

devState=DEV_HOLD;

}

#endif//HAL_KEY

*********************

可以看到如果手工使HAL_KEY_SW_1置位状态,则会设置devState=DEV_HOLD.

这里HAL_KEY的初始化见hal_board_cfg.h:

#ifndefHAL_KEY

#defineHAL_KEYTRUE

#endif

而对SW_BYPASS_START的初始化见OnBoard.h:

//TheseKeydefinitionsareuniquetothisdevelopmentsystem.

//Theyareusedtobypassfunctionswhenstartingupthedevice.

//这些键的定义仅适用于本应用例子,可以在设备启动时避开一些功能:

//避开网络层的NV存储和避开网络初始化

#defineSW_BYPASS_NVHAL_KEY_SW_5//BypassNetworklayerNVrestore

#defineSW_BYPASS_STARTHAL_KEY_SW_1//BypassNetworkinitialization

因此避开网络层NV存储也可以通过手工方式来完成.

(2)、预编译方式:

project->

preprocessor->

definedsymbols下编译选项:

HOLD_AUTO_START

SimpleApp例子里四种节点都预编译了HOLD_AUTO_START:

非自动启动模式

在ZDApp.c中:

#ifdefined(HOLD_AUTO_START)

devStates_tdevState=DEV_HOLD;

#else

devStates_tdevState=DEV_INIT;

把devState初始化为DEV_HOLD.

以上两种方式最终都会设置devState=DEV_HOLD//Initialized-notstartedautomatically

****************************************

4、devStartMode和devState的初始化,ZDApp.c中:

devStartMode:

#ifdefined(ZDO_COORDINATOR)&

!

defined(SOFT_START)

//Setthedefaulttocoodinator

devStartModes_tdevStartMode=MODE_HARD;

devStartModes_tdevStartMode=MODE_JOIN;

//Assumejoining

//devStartModes_tdevSt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1