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.

CC113L: CC113L does not receive any data

Part Number: CC113L

Tool/software:

My customer met an issue during developing a program to interface with CC113L The read out from RXBYTES register(0x3B) is always 0. Would you please help check if there is anything missing from the configuration?

Parameters of the transmitter side:

  • MANCHESTER encoding
  • Data rate: 9.6kbps
  • Bit width: 104us
  • Modulation: FSK
  • Carrier wave frequency: 433.92MHz ± 30kHz
  • FSK deviation: 60kHz

CC113L SmartRF Studio configuration as below:

The exported register values as below:

The host MCU code as below:

The SPI communication between the host MCU and CC113L has been verified and fine, but CC113L did not receive data as expected. Please help review the settings, thanks.

Best regards,

Shuyang

  • There are several thing that can be wrong here, so I am just listing what I can think of.

    Settings:

    If I connect my boards to SmartRF Studio and try to configure the device according to your RF parameters, I received 14 out of 100 packets (due to the deviation). If you use the resommended/characterized deviation for a data rate of 10 kbps (19 kHz), I receive all packets

    HW:

    I suppose you are using your own HW, and i do not know what ref. design etc. you have used.

    The first thing you should do is to verify your HW with some of the characterized settings in Studio. Once you have verified that you are receiving all packets with these settings and are getting the sensitivity from the data sheet, then you can start changing the RF parameters

    Code:

    For SW, the easiest is to limit the packet length to fit the RX FIFO, and then wait for the falling edge interrupt of GDO0 to read out the complete packet:

    static void runRX(void)
    {
        uint8 rxBuffer[64] = {0};
        uint8 rxBytes;
        uint8 marcstate;
    
        // Enable for falling edge interrupt on GDO0 (IOCFG0 = 0x06)
        ioPinIntRegister(IO_PIN_PORT_1, GPIO0, &radioRxISR);
        ioPinIntTypeSet(IO_PIN_PORT_1, GPIO0, IO_PIN_FALLING_EDGE);
        ioPinIntClear(IO_PIN_PORT_1, GPIO0);
        ioPinIntEnable(IO_PIN_PORT_1, GPIO0);
    
        // Set radio in RX
        trxSpiCmdStrobe(CC110L_SRX);
    
        // Infinite loop 
        while(TRUE)
        {
            // wait for packet received interrupt
            if(packetSemaphore == ISR_ACTION_REQUIRED)
            {
                // Read number of bytes in RX FIFO
                cc11xLSpiReadReg(CC110L_RXBYTES, &rxBytes, 1);
                
                // Check that we have bytes in FIFO
                if(rxBytes != 0)
                {
                    // Check for RX FIFO overflow (MSB of RXBYTES)
                    if(rxBytes & 0x80)
                    {
                        // Flush RX FIFO
                        trxSpiCmdStrobe(CC110L_SFRX);
                    }
                    else
                    {
                        // Read n bytes from RX FIFO
                        cc11xLSpiReadRxFifo(rxBuffer, rxBytes);
                        
                        // Check CRC ok (CRC_OK: bit7 in second status byte)
                        // This assumes status bytes are appended in RX_FIFO
                        // (PKTCTRL1.APPEND_STATUS = 1)
                        // If CRC is disabled the CRC_OK field will read 1
                        if(rxBuffer[rxBytes - 1] & 0x80)
                        {
                            packetCounter++;
                        }
                    }
                }
          
                // Reset packet semaphore
                packetSemaphore = ISR_IDLE;
    
                // Set radio back in RX
                trxSpiCmdStrobe(CC110L_SRX);
            }
        }
    }
    

    static void radioRxISR(void)
    {
        // Set packet semaphore
        packetSemaphore = ISR_ACTION_REQUIRED;
    
        // Clear ISR flag
        ioPinIntClear(IO_PIN_PORT_1, GPIO0);
    }

    Siri

  • What is the TX side here?