麻烦您了!
我们在学习分析TI公司CC1310 SDK中的例程rfWakeOnRadioTx.c与rfWakeOnRadioRx.c,测试时能够正常运行与数据传输。在rfWakeOnRadioRx.c主循环while(1) 中,读取RF_cmdPropRxSniff.status,并有几种状态进行处理,其中有个状态是PROP_DONE_RXTIMEOUT,对应的代码上注释是“Got valid preamble on the air, but did not find sync word”,意思是发现了前导同步码,但没有找到syncword。代码段是:
/* Schedule RX */
RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff,RF_PriorityNormal, &callback, RF_EventRxEntryDone);
/* Log RX_SNIFF status */
switch(RF_cmdPropRxSniff.status) {
case PROP_DONE_IDLE:
/* Idle based on RSSI */
worStatistics.doneIdle++;
break;
case PROP_DONE_IDLETIMEOUT:
/* Idle based on PQT */
worStatistics.doneIdleTimeout++;
break;
case PROP_DONE_RXTIMEOUT: //0x3401
/* Got valid preamble on the air, but did not find sync word */
worStatistics.doneRxTimeout++;
break;
case PROP_DONE_OK:
/* Received packet */
worStatistics.doneOk++;
break;
default:
/* Unhandled status */
break;
};
我们测试时已经能够正常运行与数据传输,我们的问题是:
1、请问PROP_DONE_RXTIMEOUT这个这个状态在什么情况下会发生?
2、我们在能够数据正常传输情况下,人为有意只将rfWakeOnRadioTx.c中的syncWord由原来的0x930B51DE改成0x930B51DF,并在“worStatistics.doneRxTimeout++”处设置断点,再次测试。此时无法进行正常的数据传输,但也无法运行至断点。
根据代码上的注释“Got valid preamble on the air, but did not find sync word”(即发现了前导同步码,但没有找到syncword),应该会运行到断点处。请问:为什么此时不能运行到断点处?是不是还有什么需要设置?
麻烦高手指点,万分感谢!
Viki Shi:
请看详细解释:
The RX command have an end trigger, given by endTrigger and endTime. If this trigger occurs while the receiver is searching for sync, the operation ends with the status PROP_DONE_RXTIMEOUT. If the trigger occurs while receiving a packet, the action depends on pktConf.endType.
If pktConf.endType = 0, the packet is received to the end and the operation then ends with PROP_DONE_ENDED as the status. If pktConf.endType = 1, the packet reception is aborted and the operation ends with PROP_DONE_BREAK as the status.
0574119:
回复 Viki Shi:
首先谢谢您的回复。这些原理基本上清楚,不过具体怎么实现还是不知道。难道TI公司的例程没有考虑这些吗?
我们查了例程,发现已经考虑了 trigger的结束时间:
既然TI已经考虑了,例程发布时测试过吗?
是不是这些参数还需要调整才能有效触发进入PROP_DONE_RXTIMEOUT状态?
望能得到指点!谢谢!
Viki Shi:
回复 0574119:
您好,这个帖子已经由E2E工程师接手,后续的跟进请查看这边:e2e.ti.com/…/896812
TI中文支持网

