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

关于z-stack接收数据的问题

各位同仁大家好,我在尝试用z-stack设备接收数据时,当发过来的数据包时间间隔比较小,在一毫秒左右,即使数据包包含的数据量很小(所有的数据加起来十几个字节),也是一个间隔一个的接收到,意思发过来十个包,我只能收到五个。我不知道是z-stack那个地方的瓶颈,请各位高手指教

Susan Yang:

您的发送数据的时间间隔有点短,您现在采用的是广播还是?建议增加时间间隔试试

brown jimmy:

回复 Susan Yang:

谢谢您的回答,可能我没说清楚,出现掉包的情况是我处于接收的状态时,发送端采用广播的方式,作为接收端,我不能改变发送的时间间隔,当没有跑z-stack协议栈时,cc2530能够把所有的包都接收完整,所以,我想是否有方法把z-stack最耗时的模块去掉,因为毕竟1ms相对一个32M的单片机也该也算很长一段时间吧

VV:

回复 brown jimmy:

这个不是说CC2530芯片做不到,而是对于ZigBee协议来说这样做法是不可取的。

以广播数据为例,如果一个节点1ms的间隔区广播数据,其他节点收到广播数据以后都会进行转发,所以你可想而知你的网络就是广播风暴了,导致其他的节点收不正,发也不正常。

所以如果你为了完成点对点的快速发送的话,建议不要用Z-Stack。

brown jimmy:

回复 VV:

谢谢你的回答。 

我在发送数据的时候也碰到速度的问题。
我用macTxFrame(MAC_TX_TYPE_UNSLOTTED_CSMA)发送数据时,遵照协议,我需要发送两个数据包,
第一个数据包(41 88 13 00 30 FF FF 0F 00 17 00 FF 47 75 29 48 04 01 00 00 01 00 00 01 A0 04 01 00 00 01 00 00),每隔2400us发送一次。
第二个数据包(41 88 15 00 30 FF FF 0F 00 90 00 17 70),每隔1000us发送一次。
但我实际测试,第一个数据包从执行 txGo(); 到执行完成中断 macTxDoneCallback 的时间在4000us左右,第二个数据包为3000us左右。
但实际按cc2530的发送速度,从txGo();到发送完成,应该两个数据包都在1ms以内吧。
我想咨询下,这是不是因为进入完成中断完成中断 macTxDoneCallback 的延时造成的,加入需要在上述的时间发送这样的两个包,有什么好的实现办法。
(我以前的做法是MAC_ISFLUSHTX();后直接用macMemWriteTxFifo(pData,length);往里面填数据,也能在要求的时间内发送完成,但总觉得不太靠谱)

brown jimmy:

回复 VV:

这次我没有用z-stack,仅仅调用了里面的macTxFrame(MAC_TX_TYPE_UNSLOTTED_CSMA);函数

赞(0)
未经允许不得转载:TI中文支持网 » 关于z-stack接收数据的问题
分享到: 更多 (0)