Hello,
I am working on cc1310 based custom hardware design boards. I work with 2 devices, one receiver and one transmitter. The way they work is quite similar to rfEchoTx and rfEchoRx projects. Tx side starts the communication and when Rx side receives a message it responds. Then, when Tx side receives a respond to its message, again it sends another message and it goes on. Some timex Rx side does not recieve message and therefore communication does not start. Tx side periodically sends the correct message and I verify that by listening with LAUNCHXL-CC1310 using smart rf studio. I also verify that Rx side does not receive message by putting a break point inside the Rx_callback and monitoring the RF_cmdPropRx.status value which is 0x0002 during that time. Altough the environmental conditions and the firmware are the same, some time system works perfectly and some times does not. I use tx and rx commands as;
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);
I also attach my proprietary command configurations.
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
What could be the possible reasons ?