TI中文支持网
TI专业的中文技术问题搜集分享网站

NLME_OrphanJoinRequest发送时功耗过大

当节点跟父设备断开以后,会发送给ZDO层ZDO_NWK_JOIN_REQ命令,我的配置如下:

retryCnt = 0;
devStartMode = MODE_RESUME;
_tmpRejoinState = true;
osal_cpyExtAddr( ZDO_UseExtendedPANID, _NIB.extendedPANID );
zgDefaultStartingScanDuration = BEACON_ORDER_15_MSEC; //BEACON_ORDER_60_MSEC;
ZDApp_NetworkInit( NWK_START_DELAY );

节点变成MODE_RESUME状态,然后调用ZDO_StartDevice函数里面的

NLME_OrphanJoinRequest( runtimeChannel, zgDefaultStartingScanDuration ); 发送orphan notification,

其中runtimeChannel为26信道,

测试后zgDefaultStartingScanDuration参数好像没生效,测量其瞬间的发送电流大道27mA;

由于我们的产品是单火开关设备,无法提供这么大的电流,所以将 发送ZDO层ZDO_NWK_JOIN_REQ消息做了如下修改:

retryCnt = 0;
devStartMode = MODE_REJOIN;
_tmpRejoinState = true;
osal_cpyExtAddr( ZDO_UseExtendedPANID, _NIB.extendedPANID );
zgDefaultStartingScanDuration = BEACON_ORDER_15_MSEC; //BEACON_ORDER_60_MSEC;
ZDApp_NetworkInit( NWK_START_DELAY );

测试后发现,当设备离网后会进入ZDO_StartDevice函数里面调用NLME_NetworkDiscoveryRequest,一直返回失败。

触关发开,可以看见设备发送的ON/OFF数据包。

请问如果终端设备离线不想让其发送NLME_OrphanJoinRequest,需要怎么修改。

Aries Lord:

降低NLME_OrphanJoinRequest的发送次数,一分钟发一次

user4041165:

回复 Aries Lord:

感谢 Aries Lord回复

现在经过调整单火开关在接入3w的负载的情况下,能够提供持续2mA的电量,现在已经能够在开灯的情况下进行加网和控制,但是当单火开关发现与协调器失去同步信息,就会发送孤立节点申明,调用NLME_OrphanJoinRequest,不管怎么设置该函数的信道(runtimeChannel)和扫描间隔时间(zgDefaultStartingScanDuration),都无法降低发送时的电流,发射电流达到27ma,持续小于1s,请问是否还有其他的地方的配置影响到了NLME_OrphanJoinRequest的扫描时间。

同样的,在单火开关Rejoin的时候调用NLME_ReJoinRequest函数,发送电流也同样达到27ma,

 

user4381970:

回复 user4041165:

我也在弄单火开关,我也遇到这个问题,我测试orphan甚至比join更费电。关键在于信道的多少和扫描一个信道的时间,也就是函数的2个参数。尤其吧第二个参数改成0或1,默认是5,测试效果明显。

此外我们硬件加了电容并且adc检查它以控制是否组网。但碰到一个问题,不知道你有没有

就是在系统刚上电的时候,协议栈初始化过程中,会有接近1s时间的10ma的电流,就是这个时间的电流会导致系统起不来,反复卡在重新启动中。后来上电后延迟启动,等待电容充电。但是这个时间太长了体验非常不好。你有这个启动电流的问题吗?

VV:

回复 user4041165:

@edward ou,

CC2530在发送时候的峰值电流是27mA,应该是一个正常的值,详细可以看datasheet

user4041165:

回复 user4381970:

我这里没有遇到这个问题,我们的硬件设计方案,在关灯的情况下,可以提供持续200ma的电流,所以在上电后系统不会因为供电不足导致设备重启。而在开灯的情况下只能提供2ma的电流,所有需要优化加网间隔时间。

你是否测试过rejoin的电流,我这里测试得到的结果是,rejoin与orphan比join跟费电。

 

VV:

回复 user4041165:

rejoin和orphan应该省电,

首先搜网只要一次够了,也就是一个beacon request,接收一个beacon,

然后发送rejoin request,接收rejoin Response,这样就结束了。

如果是join的话,还要发送秘钥之类的。

user4041165:

回复 VV:

对于终端设备,在rejoin或orphan的时候分别调用NLME_OrphanJoinRequest(单个信道,BEACON_ORDER_15_MSEC) / NLME_ReJoinRequest设备的工作电量为27ma,并持续大概几百毫秒左右,

而我搜索网络的调用NLME_NetworkDiscoveryRequest,每次搜索一个信道,扫描时间为BEACON_ORDER_15_MSEC,测试后得到的电流只有4ma左右。

在rejoin或orphan的时候,这么把这几百毫秒的时间降低。

jian li20:

回复 user4041165:

你好,我也遇到了同样的问题,请问你解决了吗,能否帮助一下我,谢谢了

Aries Lord:

回复 user4041165:

CC2530单火供电,电源至少要能保证40mA*1s的瞬时功率,可以用个大电容。降低Poll的周期。

jian li20:

回复 Aries Lord:

这个回答可以解决这个问题吗

赞(0)
未经允许不得转载:TI中文支持网 » NLME_OrphanJoinRequest发送时功耗过大
分享到: 更多 (0)