微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZigBee协调器连续广播10次失败,只有前6次成功

ZigBee协调器连续广播10次失败,只有前6次成功

时间:10-02 整理:3721RD 点击:

大家好,

最近用到ZigBee的广播技术,代码中设定协调器在接收到串口数据之后将数据广播出去,设定广播10次,但是只有前6次能广播成功,这是问什么?麻烦解释一下。

修改代码如下:

-DMAX_BCAST=25
#if !defined ( MAX_BCAST_RETRIES )

#define MAX_BCAST_RETRIES 2
#endif
#if !defined ( PASSIVE_ACK_TIMEOUT )
#define PASSIVE_ACK_TIMEOUT 5
#endif
#if !defined ( BCAST_DELIVERY_TIME )
#define BCAST_DELIVERY_TIME 5 //30
#endif

调用广播函数如下:

for(i=0; i<TOTAL_PU_NUMBER; i++)
{
while(*(p+1) < 97 && *(p+1) != '\0')
{
if(*(p+1) != ',' && *(p+2) == ',')
{
pu[j] = (*(p+1)-0x30)*100;
p += 2;
j++;
}
else if(*(p+1) != ',' && *(p+2) != ',' && *(p+3) == ',')
{
pu[j] = (*(p+1)-0x30)*1000+(*(p+2)-0x30)*100;
j++;
if(*(p+4) >= 97)
{
p += 4;
break;
}
else p += 3;
}
}

puWareInit( &puWare[i], pu[j-1], pu, j/(i+1)-1, 1);
len = CaculateOtaDataLen(pData);
RailCommsApp_Send_BROADCAST_Message( pData, len );
}

附上抓包文件,谢谢

附件如下图

调试发现当发送第七个数据包时的返回值是0x11,这是什么问题?

0x11表示ZBufferFull

应该是网buffer里面放数据放的太快了,是否可以在两次广播之间加一定的延时呢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top