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.

CC2651P3: +10dBm TX power with RKP package

Part Number: CC2651P3
Other Parts Discussed in Thread: SYSCONFIG

In the thread "CC2651P3: DIO_21" Ryan Brown posted a ti_radio_config.c to use for +10dBm output power using the CC2651P3 in RKP package (40-pin). At the time I did not have hardware so I could not test it. Now I have hardware and I am having a problem with this config.

The posted file contains this power table:

RF_TxPowerTable_Entry txPowerTable_2400_pa5_10[TXPOWERTABLE_2400_PA5_10_SIZE] =
{
{-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 2) }, // 0x04C8
{-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 2) }, // 0x04CA
{-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 3, 0, 3) }, // 0x06CD
{-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) }, // 0x0AD0
{-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 3, 0, 5) }, // 0x0AD3
{-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 6) }, // 0x0CD4
{-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 11) }, // 0x1693
{-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(21, 2, 0, 11) }, // 0x1695
{-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 2, 0, 12) }, // 0x1899
{0, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 22) }, // 0x2C5D
{1, RF_TxPowerTable_DEFAULT_PA_ENTRY(33, 1, 0, 25) }, // 0x3261
{2, RF_TxPowerTable_DEFAULT_PA_ENTRY(38, 1, 0, 31) }, // 0x3E66
{3, RF_TxPowerTable_DEFAULT_PA_ENTRY(47, 1, 0, 36) }, // 0x486F
{4, RF_TxPowerTable_DEFAULT_PA_ENTRY(32, 0, 0, 65) }, // 0x8220
{5, RF_TxPowerTable_DEFAULT_PA_ENTRY(46, 0, 0, 59) }, // 0x762E
{6, RF_TxPowerTable_HIGH_PA_ENTRY(42, 0, 1, 39, 20) }, // 0x144F2A
{7, RF_TxPowerTable_HIGH_PA_ENTRY(31, 1, 0, 20, 20) }, // 0x14285F
{8, RF_TxPowerTable_HIGH_PA_ENTRY(26, 1, 1, 25, 16) }, // 0x10335A
{9, RF_TxPowerTable_HIGH_PA_ENTRY(31, 1, 1, 31, 16) }, // 0x103F5F
{10, RF_TxPowerTable_HIGH_PA_ENTRY(38, 1, 1, 39, 16) }, // 0x104F66
RF_TxPowerTable_TERMINATION_ENTRY
};

However, when I use this table, RF_setTxPower() fails for any value larger than 5dBm. I am using the rfDiagnostics example project. I set a breakpoint at this location in radio.c:

bool Radio_setPower(int8_t i8TxPowerDbm)
{
    RF_TxPowerTable_Value newValue;

    newValue =
        RF_TxPowerTable_findValue((RF_TxPowerTable_Entry *)PhySettings_supportedPhys[currentPhyNumber].RF_pTxPowerTable,
        i8TxPowerDbm);
    if(newValue.rawValue == RF_TxPowerTable_INVALID_VALUE)
    {
        return false;
    }

->  RF_Stat rfStatus = RF_setTxPower(rfHandle, newValue);

    if(rfStatus == RF_StatSuccess)
    {
        return true;
    }
    else
    {
        return false;
    }
}

When I try to set +10dBm, RF_setTxPower() is called with a valid rfHandle, and newValue = 0x104F66, which is the correct value from the PowerTable. However, RF_setTxPower() returns RF_StatInvalidParamsError. When I try to set +5dBm or lower, RF_setTxPower() returns RF_StatSuccess.

I don't have source access to RF_setTxPower() so I don't know what the issue is.

Regards,
Andy

  • Hi Andy,

    Did you enable "High PA" from the rfDiagnostics.syscfg Custom -> IEEE options?  Afterwards you will still need to replace txPowerTable_2400_pa5_20 with txPowerTable_2400_pa5_10 inside ti_radio_config.c, which will require removing this file from the SysConfig -> Generated Files -> Include in build settings and placing a copy directly inside your main project directory.

    Regards,
    Ryan

  • Hi Ryan,

    No, I didn't enable "High PA" in the IEEE options. Enabling / disabling this changes the code in ti_radio_config.c. I used the code in the ti_radio_config.c you sent me, since I thought you wanted me to.

    Here is the difference between code generated with "High PA" selected and de-selected:

    "High PA" de-selected:

    // CMD_RADIO_SETUP_PA
    // Radio Setup Command for Pre-Defined Schemes
    rfc_CMD_RADIO_SETUP_PA_t RF_cmdRadioSetup_ieee154 =
    {
    .commandNo = 0x0802,
    .status = 0x0000,
    .pNextOp = 0,
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .mode = 0x01,
    .loDivider = 0x00,
    .config.frontEndMode = 0x0,
    .config.biasMode = 0x1,
    .config.analogCfgMode = 0x0,
    .config.bNoFsPowerUp = 0x0,
    .config.bSynthNarrowBand = 0x0,
    .txPower = 0x762E,
    .pRegOverride = pOverrides_ieee154,
    .pRegOverrideTxStd = 0,
    .pRegOverrideTx20 = 0
    };

    "High PA" selected:

    // Overrides for CMD_RADIO_SETUP_PA
    uint32_t pOverrides_ieee154TxStd[] =
    {
    // override_txstd_placeholder.json
    // TX Standard power override
    TX_STD_POWER_OVERRIDE(0x762E),
    // The ANADIV radio parameter based on LO divider and front end settings
    (uint32_t)0x05320703,
    // override_txstd_settings.json
    // IEEE 15.4: Set RTIM offset to default for standard PA
    (uint32_t)0x00008783,
    // IEEE 15.4: Set synth mux to default value for standard PA
    (uint32_t)0x050206C3,
    // Set TXRX pin to 0 in RX and high impedance in idle/TX
    HW_REG_OVERRIDE(0x60A8,0x0401),
    (uint32_t)0xFFFFFFFF
    };

    // Overrides for CMD_RADIO_SETUP_PA
    uint32_t pOverrides_ieee154Tx20[] =
    {
    // override_tx20_placeholder.json
    // TX HighPA power override
    TX20_POWER_OVERRIDE(0x003F75F5),
    // The ANADIV radio parameter based on LO divider and front end settings
    (uint32_t)0x01C20703,
    // override_tx20_settings.json
    // IEEE 15.4: Set RTIM offset to 3 for high power PA
    (uint32_t)0x00030783,
    // IEEE 15.4: Set synth mux for high power PA
    (uint32_t)0x010206C3,
    // Set TXRX pin to 0 in RX/TX and high impedance in idle
    HW_REG_OVERRIDE(0x60A8,0x0001),
    (uint32_t)0xFFFFFFFF
    };

    // CMD_RADIO_SETUP_PA
    // Radio Setup Command for Pre-Defined Schemes
    rfc_CMD_RADIO_SETUP_PA_t RF_cmdRadioSetup_ieee154 =
    {
    .commandNo = 0x0802,
    .status = 0x0000,
    .pNextOp = 0,
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .mode = 0x01,
    .loDivider = 0x00,
    .config.frontEndMode = 0x0,
    .config.biasMode = 0x1,
    .config.analogCfgMode = 0x0,
    .config.bNoFsPowerUp = 0x0,
    .config.bSynthNarrowBand = 0x0,
    .txPower = 0xFFFF,
    .pRegOverride = pOverrides_ieee154,
    .pRegOverrideTxStd = pOverrides_ieee154TxStd,
    .pRegOverrideTx20 = pOverrides_ieee154Tx20
    };

    And, here is the code from the ti_radio_config.c file you sent me:

    // CMD_RADIO_SETUP_PA
    // Radio Setup Command for Pre-Defined Schemes
    const rfc_CMD_RADIO_SETUP_PA_t RF_cmdRadioSetup_ieee154 =
    {
    .commandNo = 0x0802,
    .status = 0x0000,
    .pNextOp = 0,
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .mode = 0x01,
    .loDivider = 0x00,
    .config.frontEndMode = 0x0,
    .config.biasMode = 0x1,
    .config.analogCfgMode = 0x0,
    .config.bNoFsPowerUp = 0x0,
    .config.bSynthNarrowBand = 0x0,
    .txPower = 0x2C5D,
    .pRegOverride = pOverrides_ieee154,
    .pRegOverrideTxStd = 0,
    .pRegOverrideTx20 = 0
    };

    So, the code you posted corresponds to the "High PA de-selected" case.

    As I test, I tried using the "High PA selected" code. In this case, I am able to set the power level to +10dBm, and I see output from the PA port. However, I don't know if this is correct, because this is from the +20dBm configuration, and I have the +10dBm PA.  (I am not yet setup to measure the actual output power level from the board).

    What is the difference between the PA hardware between the RGZ and RKP packages? Is it the same hardware, but we are limited to +10dBm in RKP because of a thermal limit? Or is it actually different hardware?

    Regards,
    Andy

  • You are correct, my previous file likely did not consider the necessary IEEE Radio Setup Command changes, only the PA table, as I do not have the correct hardware at the moment to test with.  You will need to use High PA settings in order to output +10 dBm. I will ask the SimpleLink HW Team what the differences are between the two packages which limits the RKP 5x5 design to +10 dBm maximum output power.

    Regards,
    Ryan

  • Your assumption is correct Andy, it is a thermal restriction which prevents the 5x5 RKP design from reaching +20 dBm as it would surpass the junction temperature limit.

    Regards,
    Ryan

  • Hi Ryan,

    I am now setup to measure TX power on our device. When configured for +10dBm, the actual output is around +3dBm.

    Note that in the launchpad schematic, it shows that the PA path should be biased by VDDR when using +10dBm. And when using +20dBm, it is biased by VDDS. The launchpad by default is biased by VDDS, but it has an option to be biased by VDDR by moving R6 to position R7. Our design is biased by VDDR, because we are using +10dBm.

    As a test, I checked to see how the launchpad would behave when its bias is changed from VDDS to VDDR. I used the +10dBm PA table entry from the file you sent me. When biased by VDDS the measured output power is +10dBm. When biased by VDDR the measured power is around +3dBm. So, I was able to reproduce the low TX power issue on launchpad.

    It seems that when the PA is biased by VDDR it needs to be configured differently to work properly. However I have not been able to find any documentation on this. Please advise.

    Regards,
    Andy

  • Hi Andy,

    Thanks for updating with these results.  Have you referred to the Custom Hardware section of the Z-Stack User's Guide and SWRA640?  Or does this have to do with the SysConfig -> RF Design settings?  If necessary then I would advise that you create a separate E2E thread so that the SimpleLink HW experts can further investigate and provide their expertise.  You may also consider submitting your design to SIMPLELINK-2-4GHZ-DESIGN-REVIEWS for further review.

    Regards,
    Ryan

  • Hi Ryan,

    Yes, I reviewed those documents and I was not able to find an answer.

    This design was reviewed by TI before we went to prototyping. Since it was a hardware review, no feedback was provided regarding firmware configuration.

    I'll re-post this issue.

    Regards,
    Andy