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.

LAUNCHXL-CC1310: Dynamically and accurately changing the TX Power on CC1310

Part Number: LAUNCHXL-CC1310
Other Parts Discussed in Thread: CC1310

Hello,

I am trying to vary the TX Power dynamically without closing RF. I am doing so in steps of 15,13.6,13,10,6 dBm. However on a spectrum analyzer and from the RSSI values obtained on the RX the power does not seem to vary that much (except for the jump to the lowest TX Power (6dB)).

Currently I am using the rfc_CMD_SET_TX_POWER. Essentially, the following is how I planned to implement it:

rfc_CMD_SET_TX_POWER_t RF_cmdSetTxPower =
{
    .commandNo = 0x0010,
    .txPower = 0x003F,
};

uint16_t power[NUM_POWER] = {0x003F,0xBE3F,0x6A0F,0x3ACE,0x22C4}; //15,13.7,13,10,6 (in dBm)

int8_t pwrNum = 0;

while(1){

RF_cmdSetTxPower.txPower = power[pwrNum];

RF_runImmediateCmd(rfHandle,(uint32_t*) &RF_cmdSetTxPower);

RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropTx,
                                                   RF_PriorityNormal, NULL, 0);

pwrNum++;

}

The txPower hex values were obtained from SmartRF. However, it is also important to note that I am switching frequencies sometimes but sticking with the same hex power values.

Additionally, varying the power on SmartRF with our CC1310 Launch Board connected - we also do not obtain the desired results on the RX RSSI. By desired result, I mean that by varying the transmitted power level by 3dB we expect to see the same variation on the RX-side.

As I understand, even if I were to determine the tx power configuration by computing it from the TxPowerTable - we would still end up obtaining the undesirable results as in SmartRF which were tuned for a particular front-end configuration.

Any ideas on how to tackle this problem?

Thanks in advance.

Jonathan

  • Hello Jonathan,

    I was able to reproduce the issue that you are seeing, running your code as is, I see that the Tx power change does not take effect. When I add 1 second of delay using sleep(1) during each loop iteration, I am seeing that the Tx power does change as expected. Apparently the RF code needs some time between successive transmissions for the power transition to take effect. I need to look at what exact amount of delay is required and why. I will check this and get back to you.

    Regarding the RSSI on Rx not scaling as per the Tx power change: It ideally should scale but in practice you rarely see the exact amount of change in the Rx RSSI as the Tx power change, but should be in the ball park. In my test for every 5dB step change Tx power I am seeing RSSI change around 5dB with +/- 1 dB error (I am seeing 4dB or 6dB).

    Regards,
    Prashanth
  • Hello Jonathan,
    Looks like the behavior of the RF_cmdSetTxPower command is affected by the Trigger start time. What are your TX command trigger settings? When I commented the below two lines from the rfPacketRx.c it works fine with out the delay I previously mentioned.
    /* Set absolute TX time to utilize automatic power management */
    //curtime += PACKET_INTERVAL;
    //RF_cmdPropTx.startTime = TRIG_NOW;
    Regards,
    Prashanth