您好!
我正在使用基于 cc1310的定制硬件设计板。 我使用2个器件、1个接收器和1个发送器。 它们的工作方式与 rfEchoTx 和 rfEchoRx 工程非常相似。 TX 端开始通信、当 Rx 端收到消息时、它会进行响应。 然后、当 Tx 侧收到对其消息的响应时、它会再次发送另一条消息并继续。 某些 Timex Rx 侧不接收消息、因此通信未启动。 TX 端定期发送正确的消息、 我 使用 SMART RF Studio 侦听 LAUNCHXL-CC1310、以验证是否正确。 我还在 rx_callback 内放入一个断点并 在此期间监控 RF_cmdPropRx.status 值、以验证 Rx 侧是否未接收消息。 尽管环境条件和固件是相同的、但 有时系统工作正常、有时则不工作。 我将 TX 和 Rx 命令用作;
RF_postCmd (g_initParams.handle、(RF_Op*)&RF_cmdPropRx、RF_PriorityNormal、bsp_RF_rxCallback、RF_EventRxEntryDone);
RF_postCmd (g_initParams.handle、(RF_Op*)&RF_cmdPropTx、RF_PriorityNormal、bsp_RF_rxCallback、RF_EventRxEntryDone);
我还附加了专有命令配置。
RF_cmdPropRx.startTrigger.triggerType = TRIG_NOW;
RF_cmdPropRx.startTrigger.bEnaCmd = 0;
RF_cmdPropRx.startTrigger.pastTrig = 0;
RF_cmdPropRx.condition.rule = COND_NEVER;
RF_cmdPropRx.pktConf.bFsOff = 0;
RF_cmdPropRx.pktConf.bRepeatOk = 0; // End RX operation when a packet is received correctly
RF_cmdPropRx.pktConf.bRepeatNok = 1;
RF_cmdPropRx.pktConf.bUseCrc = 1;
RF_cmdPropRx.pktConf.bVarLen = 0;
RF_cmdPropRx.pktConf.bChkAddress = 0;
RF_cmdPropRx.pktConf.endType = 0;
RF_cmdPropRx.rxConf.bAutoFlushIgnored = 1; // Discard ignored packets from Rx queue
RF_cmdPropRx.rxConf.bAutoFlushCrcErr = 1; // Discard packets with CRC error from Rx queue
RF_cmdPropRx.rxConf.bIncludeHdr = 0;
RF_cmdPropRx.rxConf.bIncludeCrc = 0;
RF_cmdPropRx.rxConf.bAppendRssi = 0;
RF_cmdPropRx.rxConf.bAppendTimestamp = 0;
RF_cmdPropRx.rxConf.bAppendStatus = 0;
RF_cmdPropRx.maxPktLen = PAYLOAD_MAX_LENGTH; // Implement packet length filtering to avoid PROP_ERROR_RXBUF
RF_cmdPropRx.endTrigger.triggerType = TRIG_NEVER;
RF_cmdPropRx.endTrigger.bEnaCmd = 1; // Ending Rx command will be performed by CMD_TRIGGER instead of RF_cancelCmd
RF_cmdPropRx.endTrigger.triggerNo = 2;
RF_cmdPropRx.endTrigger.pastTrig = 0;
RF_cmdPropRx.pQueue = &g_dataQueue; // Set the Data Entity queue for received data
RF_cmdPropRx.pOutput = (uint8_t *)&g_rxStatistics;
/* Modify CMD_PROP_TX command for application needs */
RF_cmdPropTx.pNextOp = (rfc_radioOp_t*)&RF_cmdPropRx;
RF_cmdPropTx.startTrigger.triggerType = TRIG_NOW;
RF_cmdPropTx.startTrigger.bEnaCmd = 0;
RF_cmdPropTx.startTrigger.pastTrig = 0;
RF_cmdPropTx.condition.rule = COND_ALWAYS;
RF_cmdPropTx.pktConf.bFsOff = 0;
RF_cmdPropTx.pktConf.bUseCrc = 1;
RF_cmdPropTx.pktConf.bVarLen = 0;
RF_cmdPropTx.pktLen = PAYLOAD_MAX_LENGTH;
RF_cmdPropTx.pPkt = g_txPacket;
/* Modify CMD_TRIGGER command for application needs */
RF_cmdTrigger.triggerNo = 2; // Same value as RF_cmdPropRx.endTrigger.triggerNo
可能的原因是什么?