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

CC2530发送数据问题。

问题描述:

一个半功能设备(END设备)掉网后,从新入网后(此时父设备更改了),然后这个END设备通过路由发送数据给协调器,协调器能正确的收到,但是协调器给他发数据就出错了。串口返回的值是这样子 FE 03 44 80 F0 02 00 35 ,这个状态值是0xF0,我看资料里说的是ZMacTransactionExpired,我不知道这个是怎么引起的,我看文档和协议栈中都没有详细说明,我想问这个情况怎么解决,是怎么引起的。谢谢·

bin xu3:

回复 VV:

我找到原因了,是因为这个协调器已经这个设备还是他的子设备,其实他已经重新入网,换了父设备,只是这个协调器没有收到设备申明,所以没有更新自己网络信息表,我看你们的新协议栈Zstack2.5.1a更新错误中有提到这个。但是我们用你们2.5.0版本基本都完成整个程序了,现在这个BUG怎么解决啊。

还有一个问题我想问问 void NLME_SetPollRate( uint16 newRate );NLME_SetQueuedPollRate( uint16 newRate );NLME_SetResponseRate( uint16 newRate );这三个函数的参数最小设置为多少是有效的啊?我现在发现一个问题,我的设备唤醒200ms,我将newRate设置为100有时都没法从父设备读取到数据,我很诧异,难道建立通信需要很长时间吗?newRate 短一点是不是频率就更快?这个最小值设置我多少比较合适?

VV:

回复 bin xu3:

你可以比较下void ZDO_ProcessDeviceAnnce( zdoIncomingMsg_t *inMsg )这个函数。

void NLME_SetPollRate( uint16 newRate ); 是用于子设备向父设备请求数据用

NLME_SetQueuedPollRate( uint16 newRate );是用于poll indication用

NLME_SetResponseRate( uint16 newRate );是用于poll confirm用的

这几个数据并不是说越小越好,如果太小你的协议栈频繁处于poll,反而会影响其他工作。

我们协议栈里面提供的默认值,是经过测试验证的,一般情况下不要去修改

 

赞(0)
未经允许不得转载:TI中文支持网 » CC2530发送数据问题。
分享到: 更多 (0)