尊敬的支持:
我正在尝试获取一个同时发送和接收示例、这样我就可以接收数据包并解析数据包、并根据内容创建一个新的数据包并进行传输。 我使用的是运行 SDK1.30的 CC1350 LP。 我有自己的 CCS 项目、在该项目中、我使用 rfPacketRx 和 rfPacketTx 示例中的代码来创建一个可以接收和传输数据包的任务。 当我连续接收数据包时-没有问题。 我可以一遍又一遍地接收数据包、而不会出现任何问题。 当我反复传输数据包时-同样没有问题。 我在传输数据包时使用以下代码:
rf_cancelCmd (rfHandle、rfRxCmd、0);
RF_cmdPropTx.commandNo = CMD_PROP_TX;
rf_cmdPropTx.pkt=(uint8_t *) message.FramePtr;
RF_cmdPropTx.pktLen = message.FrameBytes;
rf_cmdPropTx.startTrigger.triggerType = trig_now;
RF_cmdPropTx.startTrigger.PastTrig = 1;
RF_cmdPropTx.StartTime = 0;
rfTxCmd = rf_postCmd (rfHandle,(rf_Op*)&rf_cmdPropTx,rf_PriorityNormal,NULL,0);
EventMask = RF_PendCmd (rfHandle、rfTxCmd、
(RF_EventCmdDone | RF_EventCmdError | RF_EventLastCmdDone | RF_EventCmdAborted | RF_EventCmdCancelled | RF_EventCmdStopped);
其中、我使用 RF_cancelCmd (...)取消之前的任何 rfRxCmd 然后在传输数据包之前更新 Tx 结构 RF_cmdPropTx、然后传输数据包。 我还使用了以下代码:
rf_cancelCmd (rfHandle、rfRxCmd、0);
RF_cmdPropTx.commandNo = CMD_PROP_TX;
rf_cmdPropTx.pkt=(uint8_t *) message.FramePtr;
RF_cmdPropTx.pktLen = message.FrameBytes;
rf_cmdPropTx.startTrigger.triggerType = trig_now;
RF_cmdPropTx.startTrigger.PastTrig = 1;
RF_cmdPropTx.StartTime = 0;
EventMask = RF_runCmd (rfHandle、(RF_OP*)&RF_cmdPropTx、RF_PriorityNormal、TxCallback、
IRQ_COMMAND_DONE | IRQ_LAST_COMMAND_DONE | IRQ_TX_DONE | IRQ_TX_entry_DONE);
在本例中、我使用传输回调来知道我成功传输了数据包、这也不是问题。 只要我反复传输-没有问题。 但是、如果我接收到一个数据包、然后在接收到该数据包后发送一个新数据包、并且它运行上面的代码、它永远不会传输该数据包、也不会传输 RF_PendCmd(...)中的任何一个块 在第1种情况下或 RF_runCmd (...) 在第2种情况下。 但是、数据包的接收过程仍然很顺利。 出于某种原因、在接收到数据包并调用上述代码后、我无法再传输任何数据包。 您知道我可能会出什么问题吗? 请提供建议。
或者、在进行同时发送和接收时、应遵循哪些正确的程序、以便数据包的传输不会像我在上述两种情况下遇到的那样被锁定?
谢谢、
Tim