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: RX fails for RSSI < -65dBm

Part Number: CC1101

In my design, the CC1101 receives fine if RSSI is better than -65dBm, but looses nearly all packets if signal strength is just slightly lower. At -65dBm I receive over 90% of all sent packets, at -70dBm I am at roughly 1%. RSSI is value read from appended status bytes.

Configuration and Receive Function is given below:

0x07, // IOCFG2
0x2E, // IOCFG1 
0x2E, // IOCFG0
0x47, // FIFOTHR
0xD3, // SYNC1 
0x91, // SYNC0 
0x07, // PKTLEN
0x0C, // PKTCTRL1 
0x44, // PKTCTRL0  
0x00, // ADDR 
0x00, // CHANNR 
0x06, // FSCTRL1
0x00, // FSCTRL0 
0x21, // FREQ2
0x65, // FREQ1 
0x6A, // FREQ0 
0xCA, // MDMCFG4 
0x83, // MDMCFG3
0x16, // MDMCFG2 
0x22, // MDMCFG1
0xF8, // MDMCFG0 
0x34, // DEVIATN 
0x07, // MCSM2 
0x3E, // MCSM1 
0x38, // MCSM0 
0x16, // FOCCFG
0x6C, // BSCFG 
0x43, // AGCCTRL2 
0x58, // AGCCTRL1 
0x91, // AGCCTRL0 
0x0D, // WOREVT1 
0x8A, // WOREVT0  
0x38, // WORCTRL  
0x56, // FREND1 
0x10, // FREND0 
0xE9, // FSCAL3
0x2A, // FSCAL2
0x00, // FSCAL1
0x1F, // FSCAL0

// this function is called upon pin interrupt from GDO2 (configured to interrupt at packet received with correct crc
void ITec_HandleRX() {
    CC1101_ReadRxFifo((7 + 2)); // 7 byte packet length + 2 byte CRC and rssi
    xITecBufferEntry_t *pxTmp = (xITecBufferEntry_t *)(g_xSpi.acRxBuf + 1); // spi receive buffer
    if (((pxTmp->cLinkQuality & CC1101_CRCOK_MASK) == CC1101_CRCOK_MASK) &&
        (CalcChecksum(&pxTmp->xPacket) == pxTmp->xPacket.cCB)) {
        RBuf_Write(&g_xITec_RX_Queue, pxTmp);
    }
}

I looked at the interrupt line with an oscilloscope, and there really are very few spikes (received packet interrupts). To me it seems that receiving already fails in the CC1101 Chip.

If Schematic snippet or other information is needed, I'll be happy to provide what I can.