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.

CC2652R: cc2652r-cc2592 range issue

Part Number: CC2652R
Other Parts Discussed in Thread: CC2592,

Dear All,

In my project for range extenstion I am using cc2592 with cc2652r. only 2 meters range getting. attaching the configurations .

 

#include <ti/drivers/rf/RF.h>

// void rfDriverCallbackAntennaSwitching(RF_Handle client,
//                                       RF_GlobalEvent events,
//                                       void *arg)
// {
//     /* Nothing needed here for CC2592
//      * RF driver handles PA/LNA automatically
//      */
// }

void rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg)
{
    /* RF_GlobalEventRadioSetup occurs when the radio is powering up for TX or RX */
    if (events & RF_GlobalEventRadioSetup)
    {
        /* arg contains a pointer to the radio setup command */
        RF_RadioSetup *setupCommand = (RF_RadioSetup *)arg;

        /* If the radio is preparing to Transmit */
        if (setupCommand->common.commandNo == CMD_RADIO_SETUP ||
            setupCommand->common.commandNo == CMD_BLE5_RADIO_SETUP)
        {
            // Set PA_EN High, LNA_EN Low
            GPIO_write(CONFIG_RF_ANTENNA_PIN_0, 1);
            GPIO_write(CONFIG_RF_ANTENNA_PIN_1, 0);
        }
    }
    /* RF_GlobalEventRadioPowerDown occurs when the radio finishes its task */
    else if (events & RF_GlobalEventRadioPowerDown)
    {
        // Turn off both to save power
        GPIO_write(CONFIG_RF_ANTENNA_PIN_0, 0);
        GPIO_write(CONFIG_RF_ANTENNA_PIN_1, 0);
    }
}

// This function does nothing because the TCXO is hard-wired to ON
void Power_dummyTCXO() {
    // Leave empty
}
 
Please help me out on this issue.
 
Regards,
sushmitha,
Screenshot 2026-01-27 074316.pngScreenshot 2026-01-27 074950.pngScreenshot 2026-01-27 075118.png

 

  • Hi sushmitha,

    Here is the relevant E2E thread:  CC2652R: Antenna Range Issue 

    In most cases the rfDriverCallbackAntennaSwitching is used by high-PA devices to determine between the Sub-1GHz, 2.4GHz, or High-PA paths.  This should not concern your project as you are using a 2.4GHz-only non-PA device.

    void __attribute__((weak)) rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg)
    {
    
        if (events & RF_GlobalEventRadioSetup) {
            bool    sub1GHz   = false;
            uint8_t loDivider = 0;
    
            /* Switch off all paths. */
            GPIO_write(CONFIG_RF_24GHZ, 0);
            GPIO_write(CONFIG_RF_HIGH_PA, 0);
            GPIO_write(CONFIG_RF_SUB1GHZ, 0);
    
            /* Decode the current PA configuration. */
            RF_TxPowerTable_PAType paType = (RF_TxPowerTable_PAType)RF_getTxPower(client).paType;
    
            /* Decode the generic argument as a setup command. */
            RF_RadioSetup* setupCommand = (RF_RadioSetup*)arg;
    
            switch (setupCommand->common.commandNo) {
                case (CMD_RADIO_SETUP):
                case (CMD_BLE5_RADIO_SETUP):
                        loDivider = RF_LODIVIDER_MASK & setupCommand->common.loDivider;
    
                        /* Sub-1GHz front-end. */
                        if (loDivider != 0) {
                            sub1GHz = true;
                        }
                        break;
                case (CMD_PROP_RADIO_DIV_SETUP):
                        loDivider = RF_LODIVIDER_MASK & setupCommand->prop_div.loDivider;
    
                        /* Sub-1GHz front-end. */
                        if (loDivider != 0) {
                            sub1GHz = true;
                        }
                        break;
                default:break;
            }
    
            if (sub1GHz) {
                /* Sub-1 GHz */
                if (paType == RF_TxPowerTable_HighPA) {
                    /* PA enable --> HIGH PA
                     * LNA enable --> Sub-1 GHz
                     */
                    GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
                    /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not
                             de-asserted on CC1352 Rev A. */
                    GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO3);
                    GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO0);
                } else {
                    /* RF core active --> Sub-1 GHz */
                    GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
                    GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
                    GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH, IOC_PORT_GPIO);
                }
            } else {
                /* 2.4 GHz */
                if (paType == RF_TxPowerTable_HighPA)
                {
                    /* PA enable --> HIGH PA
                     * LNA enable --> 2.4 GHz
                     */
                    GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO0);
                    /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not
                             de-asserted on CC1352 Rev A. */
                    GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO3);
                    GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
                } else {
                    /* RF core active --> 2.4 GHz */
                    GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH, IOC_PORT_GPIO);
                    GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
                    GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
                }
            }
        }
        else if (events & RF_GlobalEventRadioPowerDown) {
            /* Switch off all paths. */
            GPIO_write(CONFIG_RF_24GHZ, 0);
            GPIO_write(CONFIG_RF_HIGH_PA, 0);
            GPIO_write(CONFIG_RF_SUB1GHZ, 0);
    
            /* Reset the IO multiplexer to GPIO functionality */
            GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
            GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
            GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO);
        }
    }

    So your application only needs to map the LNA and Tx start functionality to the correct DIOs

        // Map LNA enable pin RFC_GPO0 to DIO12
        IOCPortConfigureSet(IOID_12, IOC_PORT_RFC_GPO0,
                            IOC_IOMODE_NORMAL);
        // Map Tx start pin RFC_GPO3 to DIO20
        IOCPortConfigureSet(IOID_20, IOC_PORT_RFC_GPO3,
                            IOC_IOMODE_NORMAL);

    Regards,
    Ryan