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.

CC2500 WOR get data

Other Parts Discussed in Thread: CC2500, CC1100

Hello everybody,


Im trying WOR application with CC2500. in first picture I set up RX time and Sleep time well. When there is RF Signal on air second picture is showing how my card is behaving. Just I dont know how to take data. its just staying in rx mode longer but nothing happens.

Picture 1.

Picture 2.

  • Hello,

    Are you sure that you have the correct settings for the transmitted packets? The radio should behave in almost the same manner after the reception of a packet as if as if you used the RX commands strobe. Can you use smartRFStudio to test the settings in a packet error rate test without using the WOR implementation?

    BTW: Have you read AN047 - "CC1100/CC2500 - Wake-On-Radio" (http://www.ti.com/lit/swra126).

  • Hello,

    Yes I read it and without WOR mode it works well. I dont know how to get data when CC2500 is in WOR Mode.

  • It should be in the same way as without WOR.

  • I just realize something. Firstly my configuration is like that about WOR

    SPIWriteReg(MCSM2 ,   0x0E); //MainRadio Cntrl State Machine --- 12
    SPIWriteReg(MCSM1 ,   0x3f); //MainRadio Cntrl State Machine   
    SPIWriteReg(WORCTRL,  0x08);  // WORCTRL
    SPIWriteReg(WOREVT1,  0x45);  // Uyku suresi bu sekilde 0.5 SN
    SPIWriteReg(WOREVT0,  0x00);  // Uyku suresi bu sekilde 0.5 SN

    like this when I dont send even SWOR Strobe CC is not working normal. but if I will change WORCTRL on 0x88 it works well but after SWOR CC is going deep sleep. Nothing can change anything.

    What should I do ?

  • I am not sure, but I  found this example in the app note I referred to earlier:

    halSpiWriteReg(CCxxx0_MCSM2, 0x03); // RX_TIME = 3
    halSpiWriteReg(CCxxx0_WOREVT1, 0x03); // EVENT0 = 800
    halSpiWriteReg(CCxxx0_WOREVT0, 0x20);
    halSpiWriteReg(CCxxx0_WORCTRL, 0x38); // EVENT1 = 3
    halWait(3000); // Wait for RCOSC calibration
    halSpiStrobe(CCxxx0_SWORRST);
    halSpiStrobe(CCxxx0_SWOR);

    Just try to change to the values you use and test it out.

  • Should I send this commands and values on initialize CC2500 ? with all configuration ?

  • Hello again,

    void CC_Sleep()
    {
        CS=0;
        SPIWriteReg(WORCTRL,  0x08);  // WORCTRL
        SPIWriteReg(WOREVT1,  0x45);  // Uyku suresi bu sekilde 0.5 SN
        SPIWriteReg(WOREVT0,  0x00);  // Uyku suresi bu sekilde 0.5 SN
        _delay(3000);
        spi_transfer(SFRX);
        spi_transfer(SWORRST);
        spi_transfer(SWOR);
        CS=1;
     }

    Im using like this for WOR Sleep. and then CC2500 cant take data. When Im sending data from second device rx time is going a little bit down but nothing change.

    How I can wake up CC2500 from Sleep.