微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > CC2530发送数据问题。

CC2530发送数据问题。

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

问题描述:

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

你好,

1)有没有开启NV功能,如果没有的话,重新入网后会分配新的地址,协调器发的时候是不是按照原来的地址在发

2)有没有抓包的文件

3)ZMacTransactionExpired是指父节点buffer子节点数据的时间,现在父节点向子节点发送数据,是indirect的,父节点发给子节点的数据是通过子节点发data rquest,poll的形式把父节点处的数据拿走了,如果长时间没有data request就会产生expired

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

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

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

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

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

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

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

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

 

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

网站地图

Top