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.

WOR on the CC430F5137 - First results

Other Parts Discussed in Thread: CC430F5137

We are currently testing the Wake-On-Radio function on the CC430F5137 and I'm a bit disappointed with the results. In any case, I wanted to share with your the settings being used int he project as well as the results obtained.

Inspired from the example shown in slaa459a, we are putting the radio into the WOR state and the MCU into LPM3 with the following function:

/**
 * setWorState
 *
 * Enter Wake-On-Radio state
 */
void CC430RADIO::setWorState(void)
{
  disableWatchDog();
  
  WriteSingleReg(WOREVT1, 0x05);
  WriteSingleReg(WOREVT0, 0x00);
  WriteSingleReg(MCSM2, 0x00);  // Timeout for sync word search = 12.5%
  WriteSingleReg(WORCTRL, (7 << 4) | 0); // EVENT1 = 48 clk periods = 1.465 ms
  WriteSingleReg(IOCFG1, 0x29); // GDO1 = RF_RDY

  Strobe(RF_SWOR);
  RF1AIE |= ((BIT6) << 8);      // BIT14 = BIT6 << 8
  __bis_SR_register(LPM3_bits + GIE);

  enableWatchDog();
}

In the above code T_EVENT0 = 39 ms and T_RX_TIMEOUT = 12.5% of 39 ms = 4.88 ms

On the other hand, the RF ISR is handling the WOR event with this piece of code:

if(coreIntSource == RF1AIV_RFIFG14)
{
  //digitalWrite(LED, !digitalRead(LED));
  RF1AIE |= BIT9 + BIT1;
  RF1AIFG &= ~(BIT9 + BIT1);
  RF1AIES |= BIT9; // Falling edge of RFIFG9
  panstamp.radio.setRxState();
  __bic_SR_register_on_exit(LPM3_bits);
}

The application seems to work. The WOR event is periodically triggered, according to T_EVENT0 and packets are "sometimes" detected (Use of a LED toggle here to detect packets). Since T_EVENT0 is maybe not the lowest possible value, we are continuously transmitting 12-byte packets delayed a few millis one from the other. Any radio waking up from sleep should almost instantly detect packets but our WOR-enabled node seems to be missing around 9 of 10 packets transmitted.

Is there any recommended technique to improve the WOR performance? (Ex : lower T_EVENT0)

We are using IOCFG0 = 0x06 in our application (trigger GDO0 when Sync Word is received). Should we try any other config. We wanted to avoid false detections of course.

Is anyone successfully using WOR in real applications? Any feedback?

Thanks in advance for your time.