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 Receive not working .Can somebody help ?

Other Parts Discussed in Thread: CC1101, CC1120

Hello,

I'm currently working on CC1101 Transceiver IC with MSP-EXP430G2 Launchpad. I had two piece of codes one for the transmitter and the other for the receiver.

Both the CC1101 tranceiver modules are tested with arduino and are working perfectly. After connecting it to the launchpad I verified and tested the connections by setting ADDR configuration register and reading them. By this method I confirmed the SPI connectivity.

The Transmitter code seems to be running correctly, as Im able to read through MISO verified it with oscilloscope. But don't know if the transceiver is transmitting through the 433mhz band as I don't own a Spectrum Analyzer.I'm able to get GDO0 signal from the Transceiver Module .

However in the receiver code file named main.cpp line 49 never seems to return true thereby toggling my led.Since I'm new to this IC and to RF communication itself can somebody tell me what the problem is ?

CC1101.rar

  • cc110L_easy_link_msp_exp430g2.zipWe have a easylink example for the MSP-EXP430G2 launchpad, see attached.

    If you don't have a spectrum you should consider using SmartRF Studio. If you have a EM aimed on the 433 MHz band a TRXEB you can set the radio in cont. Rx and see if the RSSI goes up when you are supposed to send something. If you have a logic analyzer you can also set the receiver in async mode and monitor the output. If you actually sending something you should be able to recognize you sent packet in the data. 

    Also check that the correct GDO pin is connected to the MSP.

  • Are there no examples in code compiler studio using TI 4.4.3 Compiler?
  • Not for CC1101. We have an example for CC1120 that uses the same SPI interface as CC1101, see processors.wiki.ti.com/.../Cc1120_easy_link_vchip_boosterpack_for_MSP430_launchpad_CCS.zip
  • The codes are more or less similar.I'm especially worried about the following piece of code that I'm trying to execute which is not working at all.

    Could you please take a look and tell me what is wrong.

    MAIN ROUTINE :

    if(cc1101.ReceivePacket(rxBuffer, &len))
    
    {
    
    short s = cc1101.GetRSSI();
    
    LED_PxOUT ^= LED1;
    
    cc1101.SetReceive();
    
    }

    RECEIVE PACKET FUNCTION :

    char CC1101::ReceivePacket(char *rxBuffer, char *length)
    {
      char status[2];
      char pktLen;
      char returnval = 0;
      if ((SPIReadStatus(RXBYTES) & NUM_RXBYTES))
      {
        pktLen = SPIReadReg(RXFIFO); 			// Read length byte
    
        if (pktLen <= *length)                  // If pktLen size <= rxBuffer
        {
          SPIReadBurstReg(RXFIFO, rxBuffer, pktLen); // Pull data
          *length = pktLen;                     // Return the actual size
          SPIReadBurstReg(RXFIFO, status, 2);
                                                // Read appended status bytes
          returnval = (char)(status[LQI_RX] & CRC_OK);
        }                                       // Return CRC_OK bit
        else
        {
          *length = pktLen;                     // Return read size
          SPIStrobe(SFRX);      				// Flush RXFIFO
        }
      }
    
          return returnval;							//1 = good, 0 = bad
    }

    In the above code the compiler never enters the true logic of  if ((SPIReadStatus(RXBYTES) & NUM_RXBYTES))

    I cannot seem to find any wrong with the code.

  • Does your software enters the ReceivePacket function at all? If not have you checked the the MCU actually receives an interrupt from the radio?
  • Hi

    Start by making the code as simple as possible.

    1. Use SmartRF Studio to generate settings for you. Do not do any changes to the typical settings.
    2. Implement TX code to send one packet
      1. Power up device
      2. Reset CC1101 according to the manual reset routine in the data sheet
      3. Configure the radio with settings from SmartRF Studio
      4. Read back the values you have written to the registers to verify that the SPI is working correctly
      5. Write packet to TXFIFO (3, 1, 2, 3)
      6. Strobe STX
      7. Verify that the packet is sent (GDO0 is asserted and then de-asserted)
      8. On the receiver
        1. Power up device
        2. Reset CC1101 according to the manual reset routine in the data sheet
        3. Configure the radio with settings from SmartRF Studio
        4. Read back the values you have written to the registers to verify that the SPI is working correctly
        5. Strobe SRX
        6. Wait for packet to be received (GDO0 is asserted and then de-asserted)

    If you never get a pulse on the GDO0 line on the receiver, the packet was never received.

    Siri