CC1310的rfWakeOnRadioRx
CC1310的rfWakeOnRadioRx的接受超时时间是否可以修改?
CC1310在RF打开后(RF_open),能否通过指令进入睡眠?
我这边的应用其实比较简单,就和rfWakeOnRadioRx一样,只是RX打开的超时时间可以调整,大部分时间都是使用外部的RTC进行定时并进入待机。
rxSniffCmd->endTime设定了命令结束的时间,可以通过这个调整接收超时时间。
RF_cmdPropRxSniff.endTime是否是在RF_cmdPropRxSniff.startTime的基础上增加超时时间呢?比如startTime = 1s,endTime=1.010,则超时是10ms。
这个取决于你的rxSniffCmd->endTrigger.triggerType是怎么设置的
比如SDK的示例工程中,
rxSniffCmd->endTrigger.triggerType = TRIG_REL_START;
因此这个时间是相对与这个命令开始的时间。
关于triggerType的设置可以参考TRM文档23.3.2.5.1 Triggers中的Table 23-4. Supported Trigger Types。
您好,TI工程师。我发现按照您的修改建议,还是不能修改RX的时间。
尝试一:
// CMD_PROP_RX
rfc_CMD_PROP_RX_t RF_cmdPropRx =
{
.commandNo = 0x3802,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.pktConf.bFsOff = 0x0,
.pktConf.bRepeatOk = 0x0,
.pktConf.bRepeatNok = 0x0,
.pktConf.bUseCrc = 0x1,
.pktConf.bVarLen = 0x1,
.pktConf.bChkAddress = 0x0,
.pktConf.endType = 0x0,
.pktConf.filterOp = 0x0,
.rxConf.bAutoFlushIgnored = 0x0,
.rxConf.bAutoFlushCrcErr = 0x0,
.rxConf.bIncludeHdr = 0x1,
.rxConf.bIncludeCrc = 0x0,
.rxConf.bAppendRssi = 0x0,
.rxConf.bAppendTimestamp = 0x0,
.rxConf.bAppendStatus = 0x1,
.syncWord = 0xd391d391,
.maxPktLen = 0x80, // MAKE SURE DATA ENTRY IS LARGE ENOUGH
.address0 = 0xAA,
.address1 = 0xBB,
.endTrigger.triggerType = TRIG_ABSTIME,//TRIG_REL_START,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.endTime = 0x1960000,
.pQueue = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx
.pOutput = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};
尝试2:
while(1)
{
/* Set next wakeup time in the future */
RF_cmdPropRxSniff.startTime += WOR_WAKE_UP_INTERVAL_RAT_TICKS(WOR_WAKEUPS_PER_SECOND)*5;
RF_cmdPropRxSniff.endTrigger.triggerType = TRIG_REL_START;
RF_cmdPropRxSniff.endTime = 960000*2;
/* Schedule RX */
RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff, RF_PriorityNormal, &callback, RF_EventRxEntryDone);
// PIN_setOutputValue(ledPinHandle, Board_PIN_LED0, !PIN_getOutputValue(Board_PIN_LED0));
/* Log RX_SNIFF status */
switch(RF_cmdPropRxSniff.status) {