测试设备,1个协调器,10个终端,没有路由,距离大概5-6米。终端全部设置了RFD_RCVC_ALWAYS_ON=TRUE,终端不需要poll。协调器每隔25s对10个终端进行点播发送数据,每一条数据1个字节,终端收到数据不做任何处理。每次点播一条数据都必须等到AF_DATA_CONFIRM_CMD事件再进行下一个地址的发送。总的来说就是发完10个终端再相隔25s再发送下一轮数据。
经测试发现,一开始协调器从调用AF_DataRequest到收到AF_DATA_CONFIRM_CMD事件之间的时间间隔只有10 – 15ms左右(通过串口打印以及抓包得出),但经过2、3个小时的数据发送,这个时间间隔将变成300 – 400ms左右,通信速度明显变慢,只有重启终端或者协调器才能解决,但使用久了依旧会有这个问题。
之前看到论坛有网友说,是因为协调器AssociatedDevList.linkInfo.txCost的值从0x01变成0x00导致,但经过测试,即便修改了这个值,依然会有这个情况出现。测试过2.5.1a版本和Mesh 1.0.0两个版本都有这个问题。现在想咨询各位TI的技术,这个问题是否无解,还是协议栈本身的bug?可以的话麻烦各位技术解答下,或者实际测试下这个问题,谢谢。
YiKai Chen:
协调器调用AF_DataRequest的速度多快?
zexin zeng:
回复 YiKai Chen:
调用一次AF_DataRequest,直到收到AF_DATA_CONFIRM_CMD事件就再调用AF_DataRequest,没有具体的间隔时间。
YiKai Chen:
回复 zexin zeng:
你試著間隔每50ms再做一次AF_DataRequest看看還會不會有同樣的問題
zexin zeng:
回复 YiKai Chen:
会,这个跟时间没关系,比50ms时间更长我都试过
Viki Shi:
你把 -DRFD_RCVC_ALWAYS_ON=TRUE取消掉试试,之前遇到过类似问题,原因就在于此
zexin zeng:
回复 Viki Shi:
取消了,本身的通信就慢,poll的速率也就1秒poll一次,那意思是使用了-DRFD_RCVC_ALWAYS_ON=TRUE这个就有这个问题?
Viki Shi:
回复 zexin zeng:
我把那个帖子找到了,你参考一下: e2e.ti.com/…/689142
zexin zeng:
回复 Viki Shi:
谢谢
Viki Shi:
回复 zexin zeng:
不客气,后续实验结果也欢迎反馈上来
zexin zeng:
回复 Viki Shi:
好的,没问题。