用SmartRF06EB加载CC2650EM板,用Sampleswithc例程,给协调器CC2530发送数据后,CC2530马上返回ACK,但是当CC2530给终端发送数据时,sampleswitch能接收到数据,且进入Switch_processAfIncomingMsgInd函数,但是就是不发送ACK。抓帧数据如下:
CC2650-02.psd
问题如下:
1)ACK不是协议栈自动发的么?为什么sampleswithc不自动发送?
2)sampleswithc 的消息接收函数Switch_processAfIncomingMsgInd能否改成CC2530这种SerialApp_ProcessMSGCmd( afIncomingMSGPacket_t *pkt )形式?怎么改法?
Viki Shi:
有可能是编译器版本的问题,论坛有类似问题,请参考这边:e2echina.ti.com/…/167511
Alvin Chen:
回复 Alvin Chen:
你的POLL rate 是5s对吧,你上面失败的那一包数据应该是你的zed即CC2650再休眠,没有去poll 导致发送失败。
zhu weihua:
回复 Alvin Chen:
第八包的数据是CC2530协调器发送给终端CC2650的点播包,CC2650收到后是不是应该发ACK包,CC2650 没有发出任何的ACK包。 第八包和第十一包都一样。为啥重复发了这么多次?
zhu weihua:
回复 Alvin Chen:
是的5S
Alvin Chen:
回复 zhu weihua:
你的ZED此时在睡眠,自然没有没回即ACK, ZC判断失败启动了重传机制,所以传输的数据一样。
zhu weihua:
回复 Alvin Chen:
第8帧是ZC CC2530发送给ZED CC2650的数据,但此时CC2650在休眠,因此没能恢复ACK。所以CC2530发送了4回,直到第14帧,发送后,CC2650回复了第15帧的ACK。是这么理解吗?
Alvin Chen:
回复 zhu weihua:
是的, 14帧已经是新的一帧,不是第8帧的重传了,当重传超过三次没有回复就释放掉了buffer 放弃了这一帧。
zhu weihua:
回复 Alvin Chen:
谢谢!谢谢!很感谢你的及时回复!