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.

cc1111 and cc1110 communication problems

Other Parts Discussed in Thread: TEST2

I am using CC1110 and CC1111. I created a header file for both from SmartRF then I wrote the code as a master and a slave in IAR  for the communication of two CC1110.they are sending an array to each other and turn their leds. It is simple code and Two CC1110 communicated.

Then,

when I use the code for CC1110 and CC1111, they do not communicate. Why ??

Can you help me?

  • Probably a frequency offset between CC1110 and CC1111.

    Try with a larger RX filter BW to allow for a larger frequency offset. Make sure the IF frequency in FSCTRL1 is increased if filter BW is increased significantly. See Studio for FSCTRL1 (and AGCCTRL and FREND1) settings for different RX filter BWs. Note: wider filter BW degrades sensitivity.

    Alternatively, set the CC1110 and CC111 into unmodulated TX (i.e carrier only). Measure the carrier frequency offset using a spectrum analyzer and compensate for the error when programming the carrier frequency.

  • My code is that :

    FSCTRL1    = 0x0C

    AGCCTRL2 = 0xC7; // agc control
    AGCCTRL1 = 0x00; // agc control
    AGCCTRL0 = 0xB0; // agc control

    FREND1     = 0xB6; // front end rx configuration 

    I changed FSCTRL1 as 0x0F but the result did not change.

    Do you have any advice?

  • I wrote: Try with a larger RX filter BW to allow for a larger frequency offset. Make sure the IF frequency in FSCTRL1 is increased if filter BW is increased significantly.

    Based on your e-mail you have changed the IF frequency only (i.e FSCTRL1) and not RX filter BW. Increase the RX filter BW from 540 kHz to 650 kHz by setting MDMCFG4 = 0x1D (from 0x2D). Change FSCTRL1 to 0x0E.

    Note: If the link now works, the the problem is due to frequency offset between RX and TX. If there is still a problem after increasing the RX filter BW then the source of error is not frequency offset. 

    Does the link work if you use 2 x CC1111?

  • I have no other CC1111. The link did not work. I did your advice but they cannot communicate.

    Do you have any advice about it?

  • Please, can you help me?

    I changed the configurations but it doesn't work. I try to work CC1110 and CC1111 at 868 MHz.

    In my code;

    void initClock()
    {
    // Set the system clock source to HS XOSC and max CPU speed,
    // ref. [clk]=>[clk_xosc.c]
    SLEEP &= ~SLEEP_OSC_PD;
    while( !(SLEEP & SLEEP_XOSC_S) );
    CLKCON = (CLKCON & ~(CLKCON_CLKSPD | CLKCON_OSC)) | CLKSPD_DIV_1;
    while (CLKCON & CLKCON_OSC);
    SLEEP |= SLEEP_OSC_PD; // seçilmemiş olanı kapat.
    }

    void initRF()
    {
    SYNC1 = 0xD3; // sync word, high byte
    SYNC0 = 0x91; // sync word, low byte
    PKTLEN = 0xFF; // packet length - max length if variable length is selected
    PKTCTRL1 = 0x06; // packet automation control - address check, status embed
    // 0x04 -> No address check, append RSSI LQI CRC OK to packet.
    // 0x06 -> Address check and 0x00 broadcast, append RSSI LQI CRC OK to packet.
    PKTCTRL0 = 0x05; // packet automation control - Packet length, CRC EN, Whitening
    // 0x05 -> Variable packet length, CRC enabled, no whitening

    CHANNR = 0x00; 
    FSCTRL1 = 0x0C; 
    FSCTRL0 = 0x00; 
    FREQ2 = 0x21; 
    FREQ1 = 0x65; 
    FREQ0 = 0x6A; 
    MDMCFG4 = 0x2D; 
    MDMCFG3 = 0x3B; 
    MDMCFG2 = 0x13;
    MDMCFG1 = 0x22;
    MDMCFG0 = 0xF8;
    DEVIATN = 0x62;
    MCSM2 = 0x07; /
    MCSM1 = 0x30; 
    MCSM0 = 0x18;
    FOCCFG = 0x1D;
    BSCFG = 0x1C;
    AGCCTRL2 = 0xC7; 
    AGCCTRL1 = 0x00; 
    AGCCTRL0 = 0xB0;
    FREND1 = 0xB6;
    FREND0 = 0x10; 
    FSCAL3 = 0xEA;
    FSCAL2 = 0x2A; 
    FSCAL1 = 0x00; 
    FSCAL0 = 0x1F; 
    TEST2 = 0x88; 
    TEST1 = 0x31; 
    TEST0 = 0x09;
    PA_TABLE7 = 0x00; 
    PA_TABLE6 = 0x00; 
    PA_TABLE5 = 0x00; 
    PA_TABLE4 = 0x00; 
    PA_TABLE3 = 0x00; 
    PA_TABLE2 = 0x00; 
    PA_TABLE1 = 0x00;
    PA_TABLE0 = 0x50; 

    IOCFG2 = 0x00; // radio test signal configuration (p1_7) - Debug output on P1.7
    IOCFG1 = 0x00; // radio test signal configuration (p1_6) - Debug output on P1.6
    IOCFG0 = 0x06; // radio test signal configuration (p1_5) - Debug output on P1.5
    }

    void initPorts()
    {
    P1 = 0x00;
    P1SEL = 0x00; // I/O
    P2SEL = 0x00; // I/O
    P2DIR = 0x02;
    P1DIR = 0xF3; // ÇÇÇÇGGÇÇ - 0:input, 1:output.
    P1 = 0x00;

    }

    I added to code of CC1110 and CC1111. In code, firstly cc1110 transmits to an array to cc1111 and turn on the red led. and then cc1111 receives this array and again transmits to cc1110. It is a continuous loop. Both of them can work as a master and a slave at the same time in a loop.

    I'm waiting for your answer.

  • The CC1110 operates at 26 MHz, whereas the CC1111 operates at 24 MHz. I doubt that you can use exactly the same register settings for both. Run SmartRF Studio again and look what it gives for the CC1111.