微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1310的WakeOnRadio的RF_cmdPropRxSniff怎么立即变为IDLE状态

CC1310的WakeOnRadio的RF_cmdPropRxSniff怎么立即变为IDLE状态

时间:12-23 整理:3721RD 点击:

TI工程师,您好。请问下CC1310的WakeOnRadio的RF_cmdPropRxSniff怎么立即变为IDLE状态?我想在case PROP_DONE_OK: 之后,就立即变为IDLE。是变化RF_cmdPropRxSniff.commandNo吗?并且立即触发RF_cmdPropRxSniff.startTrigger.triggerType ,但是我只看到 CMD_PROP_RX_SNIFF的命令,没有看到IDLE的命令。谢谢!

RF_cmdPropRxSniff命令使RF进入Rx状态,结束RF_cmdPropRxSniff命令退出Rx状态就是处于IDLE状态了

结束RF_cmdPropRxSniff有两种方式,一个是使用RF_cmdPropRxSniff命令自身的EndTrigger结束命令,一个是使用RF_cancelCmd()

您好。如下红色部分所注,发现还是不能RF_Close,请问这个是啥原因啊。我关闭的目的是为了重新设置RF的参数。

/* Enter main loop */
while(1)
{
/* Set next wakeup time in the future */
RF_cmdPropRxSniff.startTime += WOR_WAKE_UP_INTERVAL_RAT_TICKS(WOR_WAKEUPS_PER_SECOND);

/* 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:
/* Got valid preamble on the air, but did not find sync word */
worStatistics.doneRxTimeout++;
break;
case PROP_DONE_OK:
/* Received packet */
worStatistics.doneOk++;

//

RF_cancelCmd(rfHandle,RF_cmdPropRxSniff.commandNo,0);
RF_cmdPropRxSniff.commandNo = 0x00;
RF_yield(rfHandle);
RF_close(rfHandle);


break;
default:
/* Unhandled status */
break;
};
}

如下,是SDK中rfPacketErrorRate示例工程中,使用RF_cancelCmd相关部分的代码,供参考。

rxCmdHndl = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropRx, RF_PriorityNormal, &rx_callback, RF_EventRxEntryDone);

RF_cancelCmd(rfHandle, rxCmdHndl, 0);
RF_pendCmd(rfHandle, rxCmdHndl, RF_EventRxEntryDone);
RF_close(rfHandle);

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top