This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【20170626】请教:CC2530-2.5.1a协调器发出广播信号,如何确认所有终端都接收到信号?

Other Parts Discussed in Thread: CC2538

目前协调器要广播给终端修改panid,然后协调器自己重启,目前已经得到的结论:终端设备越多,广播所需时间也就越多,具体是怎么一个线性关系还没有研究。。

所以现在准备通过确认所有终端都收到广播信息后协调器才重启。

请教大神有没有好的方法?(协议栈里面有啥可以用的吗?)

先谢谢了! 

  • 目前实现的方案,由于终端改完panid重启后,无法与未重启的协调器通讯,所以协调器加判断一分钟没有收到任何数据后重启。

  • 建议节点在收到PANID修改的数据以后,通过应用层数据告知协调器。

    如果协调器没有收到没几个设备的回复,也可以单独控制,不需要再广播控制。

  • 感谢VV的建议!
           我新人尝试着用协调器对终端进行单播代码如下:

    if(events & SmartPv_Send_EVT)
    {
    Y++;
    if( device_info[Y].device_add )
    {
    afAddrType_t my_DstAddr;
    my_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
    my_DstAddr.addr.shortAddr = device_info[Y].device_add;//存短地址的表
    my_DstAddr.endPoint = SmartPvApp_ENDPOINT;             //#define SmartPvApp_ENDPOINT           10
    AF_DataRequest( &my_DstAddr, //控制广播单播组播
                                      &SmartPvApp_epDesc,//端口号
                                         SmartPvApp_CLUSTERID,                 //#define SmartPvApp_CLUSTERID          1
                                         6,//数据长度
                                        (byte *)&uartbuf,//发送的数据
                                        &SmartPvApp_TransID,//发送数据的次数
                                        AF_SKIP_ROUTING,
                                       AF_DEFAULT_RADIUS
                                        );
    }
    if(Y == (NWK_MAX_DEVICES-1))Y=0;
    osal_start_timerEx(SmartPvApp_TaskID, SmartPv_Send_EVT, 500);

    return (events ^ SmartPv_Send_EVT);
    }

     在AF_DataRequest打了断点是可以进来的,短地址是对的,但是终端就是接收不到数据。

    请教VV大神 指点一下协调器单播的上面哪些地方有问题? 

  • 了解下终端设备接收数据的原理,如果终端设备不是rx always on的设备话,需要主动发送data request去向父设备拿数据的。

  • 感谢@VV 解答 !
            抓包看终端是一直有 data request的。今天发现如果设备过多的话,太多的 data request把信道阻塞了,导致协调器发的数据终端接收不到。
    查了一些资料后,让已经接收到协调器广播的终端 NLME_SetPollRate(65535);//DataRequest轮询时间增大,减少信道的压力,并且 现在协调器采取一边单播 一边多次广播,这种暴力的方式~
            目前测试了多次,26个终端 十几秒就能完成所有终端的panid配置。
            后续准备看CC2538一次配置200+个终端panid的效果如何。到时可能还需要VV大神的帮助啊!