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.

CC1120: Custom RX/TX board - new data

Part Number: CC1120


I posted some weeks ago TX and RX data from my custom RF boards that showed that there was a great signal loss when transmitting 4 feet way during testing.  I had 6 custom board as well as 2 TrxEB demo boards.  Using the same TX config data and same RX config data, I mapped out a grid of dB when each board was in TX mode and in RX mode.  The average dB received was around -50dB, no matter if the demo board or our custom board was receiving it.  That led me to look into why.   The demo boards communicated at about -16 dB to each other, so there was obviously something wrong with my boards.

Better news on the next rev of the boards.  No schematic changes, but I noticed on the previous rev that on our 4 layer board that the layers went TOP, POWER, GROUND, and BOTTOM by mistake.  Our layout guy swapped the POWER and GROUND layer and better isolated some things based on the TI demo board.  Much better.  When our custom board is in TX mode, the demo TI boards receive at -25dB, which is a lot better.  However, if my custom board is in RX mode, no matter if the demo board or my custom board is transmitting, the dB reading is about -45.  So, I'm not sure why in RX mode the reading is worse.

Which poses the question, is my calculation for dB correct?

I'm using:

// RF Signal Strength Indicator - 8 bits

unsigned char RSSI8(signed char *value)
{
   unsigned char rssi0, rssi1;
   signed char rssidb;

   if (RFRXTX_Read_Extended_Config_Register(RSSI0,&rssi0) == SUCCESS)
   {
      if ((rssi0 & 0x01) != 0)     // bit 0 of RSSI0 is RSSI valid bit
      {
         if (RFRXTX_Read_Extended_Config_Register(RSSI1,&rssi1) == SUCCESS)
         {
            rssidb = (signed char)(rssi1-102);   // 102 is the offset value
            *value = rssidb;
            return(SUCCESS);
         }
         return(FAIL);
      }
      *value = 0;   // invalid reading
      return(SUCCESS);
   }
   return(FAIL);
}

Can someone validate that this is the correct formula?  If it is, any ideas why dB in RX mode would be substantially different than TX when demo boards work a lot better with the same config register data?

Sutton

  • Hi Sutton,

    Have you measured the RSSI offset as mentioned in section 6.9 of the CC112x/XX1175 user guide

    Could you try to receive packets with very weak signal (at -100 dBm region) with the 50 kbps PHY both with CC1120 EM and your custom board? I want to find out whether the issue is only with RSSI or is it the RX in general.

    Regards,

    HG

  • Another test: If you have a RF signal generator you can sweep the power of the RF signal and check the RSSI reading.

    If you have a TRXEB you can control your board with SmartRF Studio and TRXEB and check which RSSI that is reported and compare. 

  • Not sure what you mean by 'measure the RSSI offset'.  6.9 states the formula to use when reading from the RSSI register, which is what I do.  Is there something else?

  • Good idea.  I'll look into that.

  • Hi,

    The RSSI offset is not necessarily -102 dBm for your board. That is just given as an example. You should set AGC_GAIN_ADJUST.GAIN_ADJUSTMENT = 0x00 and send a signal with a known strength and read the RSSI. The difference between the RSSI of the known signal and what you read from the RSSI register is the RSSI offset. 

    Then you should write that value to AGC_GAIN_ADJUST.GAIN_ADJUSTMENT. After that you should get the correct RSSI value.

    Regards,

    HG

  • So, I ran other tests.  I put the TrxEB controlling our RF board to be a TX.  I put this side by side with our TX custom setup.   Both TXs transmitting to another TrxEB board and one of our custom RX setups.  Both TXs were received on the TrxEB board as a -30dB signal.  Both TXs were received on our custom RX board as a -60dB signal. 

    So, I flipped it.  I set up the TrxEB controlling our RF board to be a RX.  Along side one of our RX setups.  Then set up a TrxEB to be a TX along side one of our TXs.  Both RX units have a -60dB signal.  Which indicates to me our RSSI offset is not correct.

    So, I assume that 2 of the TrXEB boards communicating should be used as the holy grail of what the offset should be.  With the same testing distances, the offset should be adjusted to make the TrXEB and our RX board be the same number.  Is that the procedure?

    Sutton

  • I have never seen any reason to use a different RSSI offset than given in SmartRF Studio for CC1120. More likely with a HW error that cause poor sensitivity etc.

  • OK, But, 2 posts above says that the offset of -102 is not necessarily for my board and it should be determined.  You say don't change.  Which way is it? 

    Also, in SmartRF Studio, the AGC_GAIN_ADJUST is always 0 for every test I've run.  Does that mean the RSSI conversion code that is run ONLY looks at the RSSI1 value and uses it as is with no adjustment?  RSSI1 seems to be 0x80 at all times, so it looks like the value in the register is not viewable.  It's a little hard to debug our custom RX RSSI sensitivity issue, when you don't know exactly what is going on in the TrxEB board and SmartRF.  And, the Design Note DN510, the example RSSI code doesn't look at the AGC_GAIN_ADJUST register for the calculation.  It uses a hard coded 102 as the offset.  Is 102 used as the offset in SmartRF to calculate dBm?

  • If you open the cont. RX tab in SmartRF Studio you see the RSSI offset on the side and that this is independent of datarate etc. That is why I wrote that you don't have to change it. Also it looks like you read out a RSSI value that is way off of what it should be meaning that you most likely have a SW or HW implementation issue. 

    AGC_GAIN_ADJUST: All the examples set this to 0. You can use it but I have seen that it could cause wraparound issues for low RSSI values. Using a code like in DN510 doesn't create any issues. The frontend + digital part calculate a number. If you run PER vs level and read out this value you will typically see that the curve has to be adjusted by a factor x which is the RSSI offset.