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

CC1310丢包与CRC

测试CC1310通信的过程中发现下面的问题,使用studio测试时,在距离较远或信号不佳的情况下,studio可以打印接收到的CRC校验错误的数据包,在使用例程测试的时候,发现即便是丢包严重,也不会打印出错的数据包,请问一下这个是在哪边去处理的,因为我需要拿到出错的包,判断重传或校验。

请问是否是rfc_CMD_PROP_RX_ADV_t 的.pktConf.bUseCrc = 0x1,去处理的,在EasyLink.c下面的接收函数EasyLink_receive及EasyLink_receiveAsync处拿不到出错的包。

Felix ZF:

你可以在EasyLink.c文件中,

asyncCmdHndl = RF_postCmd(rfHandle, (RF_Op*)&EasyLink_cmdPropRxAdv, RF_PriorityNormal, rxDoneCallback, EASYLINK_RF_EVENT_MASK);

语句之前,加入

EasyLink_cmdPropRxAdv.pktConf.bUseCrc = 0;

试试能否收到crc error的数据包

da qin zheng sheng:

crc检验在接收方硬件自动处理的吧?前提是能够收到包数据,尽管可能是乱包。

fei chen10:

回复 da qin zheng sheng:

.pktConf.bUseCrc = 0x0,.pktConf.bCrcIncSw = 0x0,.pktConf.bCrcIncHdr = 0x0,

这三个配置为0,可以接收到误码包

fei chen10:

回复 Felix ZF:

Felix ZF,你好

还有点问题请教下

CC1310 设备A给B发送数据,B接收到数据会给A一个答复吗,还是需要像rfWsnConcentrator demo那样发送数据包响应一下?

如果没有答复,发送的数据包丢失,有什么好的办法去处理重传呢

Eggsy Pang:

回复 fei chen10:

B接收到数据不会主动给A一个答复,需要自己发数据包。

方法可以 用定时器定时一下,在规定时间内没收到,重传,再定时,重复三次(自己定义尝试次数),还是没收到,放弃发送

Felix ZF:

回复 fei chen10:

这种ack需要通过程序来实现

一般的流程时发送方发送完数据后,切换到接收状态等待ack

接收方在收到正确的数据包后回复一个ack

发送方在设定时间内如果收到ack,则知道对方已经正确接收到数据了;如果在设定时间内一直都没收到ack,则判定对方没有收到数据,需要重发

赞(0)
未经允许不得转载:TI中文支持网 » CC1310丢包与CRC
分享到: 更多 (0)