This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1310: Wake on radio current offset

Part Number: CC1310

Hi,

basically the wake-on-radio rx mode is working. But there is a continous current offset of 1.8mA. This means that while wake-on-radio is active, the current is not going down to Zero between the rx active intervals. Can there be something wrong with the power policies settings? We are using the nortos version of the lib.

Here is the code to start wake-on-radio:

  rfc_dataEntryPartial_t* partialReadEntry1 = (rfc_dataEntryPartial_t*)&rxDataEntryBuffer;
  rfc_CMD_PROP_RX_SNIFF_t rxSniffCmd;
  rfc_CMD_FS_t RFCmdFs;

  partialReadEntry1->length = MAX_LENGTH;
  partialReadEntry1->config.type = DATA_ENTRY_TYPE_PARTIAL;
  partialReadEntry1->config.irqIntv = 0;  // 0: 16 Bytes
  partialReadEntry1->status = DATA_ENTRY_PENDING;
  partialReadEntry1->pNextEntry = (uint8_t*)partialReadEntry1;

  dataQueue.pCurrEntry = (uint8_t*)partialReadEntry1;
  dataQueue.pLastEntry = NULL;

  rfHandle->clientConfig.pRadioSetup->prop_div.formatConf.whitenMode = MKF_VEG_WHITENING_MODE; // Data whitening vom Funkchip machen lassen

  memcpy( &rxSniffCmd, &RF_cmdPropRx, sizeof( rfc_CMD_PROP_RX_t));
  rxSniffCmd.commandNo = CMD_PROP_RX_SNIFF;

  rxSniffCmd.pQueue = &dataQueue;
  rxSniffCmd.rxConf.bAutoFlushIgnored = 0;
  rxSniffCmd.rxConf.bAutoFlushCrcErr = 0;
  rxSniffCmd.maxPktLen = 0;
  rxSniffCmd.pktConf.bRepeatOk = 0;
  rxSniffCmd.pktConf.bRepeatNok = 0;
  rxSniffCmd.rxConf.bIncludeHdr = 0;
  rxSniffCmd.rxConf.bIncludeCrc = 0;
  rxSniffCmd.syncWord = 0x000056C7;

  rxSniffCmd.csConf.bEnaRssi = 1;
  rxSniffCmd.csConf.bEnaCorr = 1;
  rxSniffCmd.csEndTrigger.triggerType = TRIG_REL_START;
  /* General Carrier Sense configuration */
  rxSniffCmd.csConf.idleOp          = 1; /* End on channel Idle */
  rxSniffCmd.csConf.busyOp          = 0; /* End carrier sense on channel Busy (the receiver will continue when carrier sense ends, but it will then not end if channel goes Idle) */
  rxSniffCmd.csConf.operation       = 1; /* Report Idle if RSSI reports Idle to quickly exit if not above RSSI threshold */
  rxSniffCmd.csConf.timeoutRes      = 1; /* If the channel is invalid, it will return PROP_DONE_IDLE_TIMEOUT */
  /* RSSI configuration */
  rxSniffCmd.numRssiIdle            = 1; /* One idle RSSI samples signals that the channel is idle */
  rxSniffCmd.numRssiBusy            = 1; /* One busy RSSI samples signals that the channel is busy */
  rxSniffCmd.rssiThr    = (int8_t)98; /* Set the RSSI threshold in dBm */
  /* PQT configuration */
  rxSniffCmd.corrConfig.numCorrBusy = 1;   /* One busy PQT samples signals that the channel is busy */
  rxSniffCmd.corrConfig.numCorrInv  = 1;   /* One busy PQT samples signals that the channel is busy */
  
  // Timing gelten momentan nur für vEG
  /* Set sniff mode timing configuration in sniff command in RAT ticks */
  rxSniffCmd.corrPeriod = (uint16_t)RF_convertUsToRatTicks( 480);
  rxSniffCmd.csEndTime = (uint16_t)RF_convertUsToRatTicks( 450);
  rxSniffCmd.endTime    = (uint32_t)RF_convertMsToRatTicks( 35);
  /* Set correct trigger types */
  rxSniffCmd.endTrigger.triggerType   = TRIG_REL_START;
  rxSniffCmd.startTrigger.triggerType = TRIG_ABSTIME;
  rxSniffCmd.startTrigger.pastTrig    = 1;
  rxSniffCmd.startTime = RF_getCurrentTime() + (uint32_t)RF_convertMsToRatTicks( 10);
    
  /* Set the frequency */
  memcpy( &RFCmdFs, &RF_cmdFs, sizeof( RFCmdFs));
  RadioModifyFrequency( &RFCmdFs, iDrift);
  RF_runCmd(rfHandle, (RF_Op*)&RFCmdFs, RF_PriorityNormal, NULL, 0);

  /* Enter RX mode */
  rxcmdhandle = RF_postCmd(rfHandle, (RF_Op*)&rxSniffCmd, RF_PriorityNormal, RadioCallback, RF_EventNDataWritten | RF_EventLastCmdDone);

Here is the code to restart wake on radio interval:

  rxSniffCmd.startTime = RF_getCurrentTime() + (uint32_t)RF_convertMsToRatTicks( 29); // Nächstes WOR-Intervall setzen
  
  RF_postCmd(rfHandle, (RF_Op*)&rxSniffCmd, RF_PriorityNormal, RadioCallback, RF_EventNDataWritten | RF_EventLastCmdDone);

Thank you.

Stefan