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 gets stucked in receive mode

Other Parts Discussed in Thread: MSP430F147, CC2500

Hi all,

i was able to perform transmission and reception of messages by using CC2500 and MSP430F147. I do not use addresses.

I perform the reception of a messages by using interrupt on GDO0 configured to asserts when sync word has been received, and de-asserts at the end of the packet.

Then, to read the received data i use the function "RFReceivePacket" given by Texas.

char RFReceivePacket(char *rxBuffer, char *length)
{
  char status[2];
  char pktLen;

  if ((TI_CC_SPIReadStatus(TI_CCxxx0_RXBYTES) & TI_CCxxx0_NUM_RXBYTES))
  {
    pktLen = TI_CC_SPIReadReg(TI_CCxxx0_RXFIFO); // Read length byte

    if (pktLen <= *length)                  // If pktLen size <= rxBuffer
    {
      TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, rxBuffer, pktLen); // Pull data
      *length = pktLen;                     // Return the actual size
      TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, status, 2);
                                            // Read appended status bytes
      return (char)(status[TI_CCxxx0_LQI_RX]&TI_CCxxx0_CRC_OK);
    }                                       // Return CRC_OK bit
    else
    {
      *length = pktLen;                     // Return the large size
      TI_CC_SPIStrobe(TI_CCxxx0_SFRX);      // Flush RXFIFO
      return 0;                             // Error
    }
  }
  else
      return 0;                             // Error
}

 

The system works well, but unfortunately some times the receiver gets stucked, and the GDO0 signal never de-asserts.

Maybe the receiver never gets the "End of packet" sent by the transmitter? Or maybe i do some error in reading received data?

Thanks in advance for your help.

Best regards,

Oscar

  • Hello,

    I am facing the same problem, using a CC2500 with a SiLabs C8051F320 MCU (SmartRF04DK).

    The function RFReceivePacket is triggered through an ISR by the GDO0 Pin. However sometimes the receiver stucks and GDO0 remains high forever...

    Does anyone has an idea about that?

    Thanks in advance,

    Martin

  • I m working on this module since 3 weeks,i faced almost same kind of problem .

    There may be problem with your transmitter module.You must be flushing transmitter buffer before pushing some data in to it.But if your are not giving enough time to flush buffer and hence transmission is corrupted.I face same problem while development of my cc2500 module.

    one more thing you can check is

    Before reception

    1.Put reciver in idle mode

    2.Flush recive buffer

    3.Enter in to reception mode

    and between all this states add some 1 msec delay for testing

    and then try..

    and let me know if it worked or not

     

     

     

     

  • Hi there,

    yesterday I found this interesting errata note that describes the problem (chapter 7). You can find it here:

    http://focus.ti.com/lit/er/swrz002d/swrz002d.pdf

    According to the proposed workaround, I loaded the PKTLEN Register with 0x3D (decimal 61) since Im using only small packets.

    The receiver works, and doesnt stuck any more (GDO0 now deasserts), but sometimes Im getting a receiver error (which my program catches up with empty RX Fifo information). I dont know if this problem is caused by the receiver or transmitter, also it only occurs every 1000 packets once. I will work on this and then comment my progress.

    Cheers!

  • Hi Martin!

     

    Thanks for your reply, i have done what have you suggested and it works! Furthermore, i have your same problem regarding the receiver error. Sometimes i get

    CRC error and i don t know why. With the transmitter turned off, the receiver seems to receive some data. Very strange.

     

    Keep in touch.

     

    Best regards!

    Oscar

  • Hi Oscar!

    Try introducing address check for receiving packets. Im working on that now.

    I think then the receiver only should accept packages with matching addresses.

    Many greetings!