【Zigbee】协调器发送无线数据包到接收终端数据的时延问题

CBCU 2017-07-17 08:05:11
当初选用Zigbee的非常重要的原因就是其时延短,但我现在通过PC对Zigbee协调器写,使其发送数据到终端;终端接收到数据包就采集ADC然后发送数据包给协调器,协调器接收包立马串口发送给PC。经PC上串口写和串口读之间花费时间的输出,发现总共用了800+ms。然后我让Zigbee协调器接收到串口数据立马返回,然后用PC去测试,发现200ms。那就是说协调器发送一个数据包给终端、终端的ADC采集和终端将采集数据发送到协调器总共需要600+ms。在CC2530芯片的技术文档里,每个ADC采集时的序列转换只需要花费(16+分辨率)*0.25us的时间,也就是说采用14分辨率采集8路ADC也只需要花费60us,不到1ms的时间。那么从协调器发送无线数据包到终端和终端发送数据包到协调器的总时间需要300+ms的延时。这是因为什么原因啊?我能不能让这个时延变小到几十ms啊?谢谢
...全文
4171 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
物联网神教 2017-12-05
  • 打赏
  • 举报
回复
把终端的低功耗模式关掉,宏定义RFD_RCVC_ALWAYS_ON=TRUE就行了。或者在协调器端加一个卡塞格伦天线,外加一个大功率发射端,终端上加一组被动接收天线,并做一个比较电路连接到单片机的GPIO口做中断唤醒,这样就可以不用关闭低功耗了。
CBCU 2017-07-18
  • 打赏
  • 举报
回复
情况一:
对于Zigbee无线通信进行抓包,发现协调器发送数据给终端都会出现一个问题:
1.终端在协调器发送包几百毫秒后发一个CMD为Date request的包给协调器;
2.协调器收到这个CMD为Date request的包后重新发送最开始想发送给终端的数据包;
3.然后终端才能接受到这个数据包。

情况二:
然后在协调器没有给终端发消息的时间段里,终端总不停的以1s的间隔给协调器发送CMD为Date request的包。

思考和疑问:
1.通过在TI的论坛看到TI员工回答的一段话:“ 在最新版本的协议栈里面,针对End device有Child Aging这个功能,就是通过enddevice发送Data request来实现的,但是并没有什么关于心跳之类的参数,只是利用这个data request来记录这个节点在发送消息出来。你们也可以自己在应用层做关于心跳之类的功能。”
问题一:这个包仅仅是一个心跳的包,还是终端循环的休眠唤醒后向协调器发送包?

问题二:能否通过修改让每次协调器发包,终端立马接受到数据包,而不再是过100ms发一个要求协调器重发数据包的数据包。

3,846

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧