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.

CC11XX -- TX if CCA

Other Parts Discussed in Thread: SIMPLICITI

Hi,

One question, it is true that the CC11XX only enters in TX mode if CCA? Why in my application, it seems not be true! Sometimes the radio enters in TX but anything is transmited . The problem appears when two or more devices ( like simpliciTI Range Extenders) intend to retransmit the same received message at the same time.

SETUP:

CCA mode 3

TXOFF_MODE = 0x00

CARRIER_SENSE_ABS_THR = 0

Regards

  • Hi Bruno

    When using CCA mode = 3 the radio will only enter TX if the channel is available. You must off course be in RX when strobing TX for this to work.

    It might be of good help if you output some status signals on you GDO pins. You can for example monitor CS (IOCFGx = 0x0E) together with Sync received (IOCFGx = 0x06) and LNA_PD (IOCFGx = 0x1c). The radio should only enter TX if LNA_PD = 0 (RX state), Sync received = 0 (not currently receiving a packet) and CS = 0 (no signal on the air)

    BR

    Siri

  • Hi,

    One issue that I observed on the 1121 chip that might be of interest. If I first sent a RX strobe followed by a TX strobe, thn thee message was always sent regardless of if there was energy in the air of not. What I discovered was that I had to wait until RSSI was valid before sending the TX strobe to be sure that the correct decision was made. So this is what I do:

    if (not in RX)

      RX_Strobe

    WaitForRSSIToBeValid

    TX_Strobe

    BR,

    Johannes

  • Hi Johannes

    After Strobing SRX you can poll MARCSTATE to find out when the radio is in RX state. After it enters RX state you must wait forr the RSSI to be valid.

    Please see DN505 (http://www.ti.com/lit/swra114) to see how long this takes.

    BR

    Siri


    ---------------------------------------------------------------------------------------------------------
    Please click the Verify Answer
     button on this post if it answers your question.
    ---------------------------------------------------------------------------------------------------------

  • Hi Siri

        I am debugging CCA using CC430F5137 . I have two CC430F5137board, one as interference source ,the other one observe CCA value from the register(PKTSTATUS).

    However ,i can't get the desired result with repeated attempts . I read too much about CCA from E2E community,but still can not solve the problem . I am puzzled by error result...

    my criticl code as follws:

                    WriteSingleReg(AGCCTRL2, 0xC7);//AGCCTRL2   0xC7
                    WriteSingleReg(AGCCTRL1, 0x00););//AGCCTRL1

                   WriteSingleReg(IOCFG0,0x06); 

                   WriteSingleReg(MCSM1,0x3F);

                  

    unsigned char CC1101_SendData(unsigned char *TxBuffer)
    {
        unsigned char marcState = 0;
        unsigned char state = 0;
        unsigned char Tx_fifo_bytes = 0;
      
        ReceiveOff();
        Strobe( RF_SRX );
        // Check that the RX state has been entered
        while( (( state = Read_Radio_Register(0x35)) & 0x1F ) != 0x0D){
            Strobe( RF_SFRX );
            Strobe( RF_SRX );
            delay_ms(5);
        }
        delay_us(500);
           
        WriteBurstReg(RF_TXFIFOWR, TxBuffer, (TxBuffer[0] + 1));


        Strobe( RF_STX );
        marcState = Read_Radio_Register(0x35);
           
        if((marcState != 0x13) && ( marcState != 0x14 ) && (marcState != 0x15)){
              Strobe( RF_SFTX );//FLUSH TXFIFO
              Strobe( RF_SRX );
              return FALSE;      

          }
        //Wait_GDO0_High();   // my program will be blocked  when add this line

       //Wait_GDO0_Low(); 
        if((Read_Radio_Register(0x3A) & 0x7F) == 0)
          return TRUE;
        else
          return FALSE;
      
    }

    is CS Absolute Threshold mistake? or i missing someting?

    I hope you can help me, Thanks for any help.

  • Hi

    Not sure I understand how you are testing but here are some comments.

    You should never flush the RX or TX FIFO in other states than OVERFLOW or IDLE.

    You also need to make sure the radio has been long enough in RX to determine if the channel is busy or not. You can use the RSSI_VALID signal for this

    After strobing STX should probably add some delay before checking MARCSTATE.

    To verify that CCA works as expected you can do the following:

    1)       Start by making sure that you CS threshold is OK. Output CS on a GDO pin and strobe SRX. Have a transmitter with known signal strength and see that CS is asserted when the signal is above the threshold and de-asserted when the signal is below threshold

    2)      After strobing SRX, wait for RSSI_VALID to be asserted. When it is, you can write your packet to the TX FIFO and strobe STX. Monitor the sync sent/packet sent signal together with the CS signal and make sure that a packet is sent whenever CS is not asserted.

    If you are entering RX state just to monitor if the channel is clear or not (and not because you want to receive a packet) it is a good idea to set a very strict PQT to avoid the radio receiving “unwanted” packets while in RX.

     

    You code could look something like this:

    Init MCU

    Init Radio

    Strobe SRX

    Wait for RSSI_VALID

    Write data to TX FIFO

    Strobe STX

    Wait for packet sent signal (falling edge of IOCFGx = 0x06). You should have a timeout on this wait so that you can strobe STX again if the channel was busy

    When you have a falling edge on GDOx one out of two things could have happened

    1)      The channel was clear so your packet was sent (you can confirm this by checking that NUM_TXBYTES = 0)

    2)      A packet was received while in RX ((you can confirm this by checking that NUM_BXBYTES != 0)

    BR

    Siri

  • Hi Siri

    Thanks thanks for you help. I  will do as you suggest.

    Best Regards

  • Hello naibao qi,

    your problem (send packet locked when check GDO0 pin)  is sloved? 

    I have same issue. if you sovled it, I appraciate your help on this.

    wenbing