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.

CC1101 can't fully enter WOR mode.

Other Parts Discussed in Thread: CC1101, CC1100

I'm working on implementing WOR in an existing product.
SPI communication to the CC1101 and RF RX and TX is working flawless.

When sending the SWOR strobe to the CC1101, it seems the CC1101 does not enter the WOR/SLEEP mode, although it does perform some of the actions I expect it to do when entering WOR/SLEEP mode.

My code to enter WOR mode is this:

===================

// Enter IDLE mode
cc1101CmdStrobe(CC1100_SIDLE);
cc1101CWaitState(CC1100_STATE_IDLE);

// Flush buffers
cc1101CmdStrobe(CC1100_SFRX);
cc1101CmdStrobe(CC1100_SFTX);

// Enable RC oscillator.
cc1101WriteReg(CC1100_WORCTRL, cc1101ReadReg(CC1100_WORCTRL) & 0x7f );

// Debug: GDO0 : WOR Event0 pulses
cc1101WriteReg(CC1100_IOCFG0, 0x24);

// Debug: GDO2 : CHIP_RDYn, inverted. Goes high now, then low when SWOR is strobed.
cc1101WriteReg(CC1100_IOCFG2, 0x29 | 0x40);

 // Tell CC1101 to Enter WOR mode.
cc1101CmdStrobe(CC1100_SWORRST); 
cc1101CmdStrobe(CC1100_SWOR);

// Debug: Verify that the CC1101 is in SLEEP/WOR mode
// Delay(100);
//cc1101WriteReg(CC1100_IOCFG2, 0x2F | 0x40); // GDO2 : HW to 0, inverted.
//cc1101WriteReg(CC1100_IOCFG2, 0x2F);        // GDO2 : HW to 0.

===================

With a logic probe connected to GDO0 and GDO2, I see an expected pulse on GDO2 when executing the above code, so the crystal clock is off and we are now running on the RC oscillator. However, I never get any Event0 pulses on GDO0, so it seems we are not in SLEEP/WOR mode, or that we never wake.

If I enable the debug lines following the SWOR strobe, I do see a pulse on GDO2, which I did not expect, but which further indicates that we are not in SLEEP/WOR mode.

Am I missing something?

Shouldn't the CC1101 enter SLEEP/WOR mode, with SPI disabled, following the SWOR strobe?

Looking forward for any help or pointers.

  • I suspect that by using the default values in WORCTRL and WOREVENT registers you have a not valid time. Try the settings from one of the examples here: http://www.ti.com/lit/an/swra126b/swra126b.pdf

    When I used you values I did not get it to work but if I used the settings from example 2 in the app note I get the expected response.

  • Sorry I didn't explain this good enough.

    I did not use the default values for any of the WOR related registers.
    My question was more if I did something logically wrong, that would prevent the WOR mode to be entered.

    It turned out my problem was the strobes I send to flush the Rx and Tx buffers. Once they were removed, the WOR mode would function as expected.

    Thanks for your time.

    .. 

    Flemming