TIwilliam hill官网
直播中

h1654155275.5771

7年用户 225经验值
私信 关注
[问答]

zstack3.0 终端断网后,进行重新搜索网络,而这个过程需要10s,请问这10s终端是一直等待协调器回应吗?有没办法缩减该时间?

如题:因为功耗原因,所以想要缩短; 而且通过测试,终端只会在一开始发送一个Beacon包,后面什么消息都没有发出,如果协调器没有收到这包beacon,终端在这段时间内也无法入网,需要等待下一包Beacon。
1. 发出Beacon包后,终端是一直处于接收模式,等待协调器入网响应吗?
2.能否缩短这一段时间?

回帖(3)

h1654155275.5771

2018-5-31 07:53:32
这10s内的电流,都处于30mA左右;
举报

h1654155275.5771

2018-5-31 08:09:25
引用: hu_wflllllllg21 发表于 2018-5-31 07:53
这10s内的电流,都处于30mA左右;

填坑:
发送Beacon的流程:
发送信标后,PA设置为强化接收。
(如果主机在该次周期没有收到信标,就需要等待下一次发送信标)
该流程导致10s电流会维持在30mA左右的电流,因为相当于10s接收

修改方式:将PA接收关闭,并进入睡眠
是否能进入睡眠需要通过两个方面决定:

1.OSAL方面
  PM2: 有定时任务,并且开启电源保护
  PM3: 将轮询设置为0,并且开启电源保护
2.MAC层
  在mac_sleep.c中,
macRxActive || macRxOutgoingAckFlag || macTxActive || macRxEnableFlags都为0。
只有都为0才能进入睡眠
两个方面都达到,才能进入睡眠

减少Beacon包,接收时间的方法:
(一个Beacon信标的总时间为10s,一个周期10s)
在ZDApp.c - ZDApp_event_loop - ZDO_NETWORK_INIT - 添加一个定时任务:
    ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
    DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );
     osal_start_timerEx(Copy_TaskID, TEST_EVT_7, 3000);
     (这里的3000,表示发送信标的时间)

定时任务中,关闭PA接收:
  if( events & TEST_EVT_7 )
  [
      macRxHardDisable();  //关闭PA的RX强化接收
      isSleep(1); //进入睡眠
    return ( events ^ TEST_EVT_7 );
  ]
(剩下的时间进入睡眠)

现在有个问题:每次申请入网后的最后会出现一个尖峰,还需优化
举报

h1654155275.5771

2018-5-31 08:23:22
引用: hu_wflllllllg21 发表于 2018-5-31 07:53
这10s内的电流,都处于30mA左右;

发送Beacon的流程:
发送信标后,PA设置为强化接收。
(如果主机在该次周期没有收到信标,就需要等待下一次发送信标)
该流程导致10s电流会维持在30mA左右的电流,因为相当于10s接收

修改方式:将PA接收关闭,并进入睡眠
是否能进入睡眠需要通过两个方面决定:

1.OSAL方面
  PM2: 有定时任务,并且开启电源保护
  PM3: 将轮询设置为0,并且开启电源保护
2.MAC层
  在mac_sleep.c中,
macRxActive || macRxOutgoingAckFlag || macTxActive || macRxEnableFlags都为0。
只有都为0才能进入睡眠
两个方面都达到,才能进入睡眠

减少Beacon包,接收时间的方法:
(一个Beacon信标的总时间为10s,一个周期10s)
在ZDApp.c - ZDApp_event_loop - ZDO_NETWORK_INIT - 添加一个定时任务:
    ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
    DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );
     osal_start_timerEx(Copy_TaskID, TEST_EVT_7, 3000);
     (这里的3000,表示发送信标的时间)

定时任务中,关闭PA接收:
  if( events & TEST_EVT_7 )
  [
      macRxHardDisable();  //关闭PA的RX强化接收
      isSleep(1); //进入睡眠
    return ( events ^ TEST_EVT_7 );
  ]
(剩下的时间进入睡眠)

现在有个问题:每次调用入网后的最后会出现一个尖峰,需要抓包
举报

更多回帖

发帖
×
20
完善资料,
赚取积分