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.

LP-CC1352P7: Unable to Setup PA for +20dBm Tx Output Power

Part Number: LP-CC1352P7
Other Parts Discussed in Thread: SYSCONFIG, CC1352P7

Tool/software:

Hello,

I am trying to use +20 dBm Tx output power, however I am seeing some discrepancy on the output if I set the "High PA "to true on sysconfig. For my test I am using a custom PHY setting at sub-GHz. For any setting of power I use upto 12.5 dBm seem to be working fine. For the verification, I am using Siglent SSA3032X spectrum analyzer connected directly to the SMA connecter on the launchpad. 

Let go through the setup and test process, 

Test 1

1) An demo application configured with custom PHY setting as on the following screenshot. 

2) There a continuous transmission while observing the value on the spectrum analyzer. The output power is around +10.2 dBm wihtout the consideration for connector and cable losses. So, it looks to be alright on this configuration. 

3) When opening the sysconfig on the text editor (this is important on subsequent tests), we see the following. (Emphasis on the Tx power)

 

Test 2

1) Custom PHY setting for the second test. Here, the "High PA" is turned on and the power is set to +20dBm.

2) So, we expect the output power to be +20dBm, right? Wrong. On spectrum analyzer we see the output power around -22 dBm. Which is even worse than without turning on the PA. 

3) Interestingly, when opening up the sysconfig in the text editor. We see this. Regardless of what I choose on the output power it is always set to a value from old configuration. But, the "High PA" is set up to True.

One additional test, if I use WiSun instead turning on the High PA automatically sets the output power to 0 dBm. With this however, we do observe the +20 dBm output power. 

 

  • Hi Saugat,

    thank you for the detailed report.
    It looks very strange and I would first like to check that the radio configuration is correct.

    When you make changes in SysConfig the ti_radio_config.c and ti_radio_config.h are generated accordingly.
    These files show how the radio is configured and can be found in "Generated Source -> SysConfig".

    1. Could you please share them with me for both configuration so that I can check the setup?

    2. Could you also tell me what is the final configuration that you would like to achieve so that I can check what the correct settings are?

    Kind regards,
    Theo

  • Apologies for the late response, I was out of office for a while.

    Here is the code of generated source file for first configuration Custom RF @ 921 MHz without High PA on and output power set at +12.5dBm.

    /*
     *  ======== ti_radio_config.h ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1352P7RGZ
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.18.0
     *  SmartRF Studio data version : 2.31.0
     */
    #ifndef _TI_RADIO_CONFIG_H_
    #define _TI_RADIO_CONFIG_H_
    
    #include <ti/devices/DeviceFamily.h>
    #include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
    #include DeviceFamily_constructPath(driverlib/rf_common_cmd.h)
    #include DeviceFamily_constructPath(driverlib/rf_prop_cmd.h)
    #include <ti/drivers/rf/RF.h>
    
    /* SmartRF Studio version that the RF data is fetched from */
    #define SMARTRF_STUDIO_VERSION "2.31.0"
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LP_CC1352P7-1
    #define LP_CC1352P7_1
    
    // High-Power Amplifier supported
    #define SUPPORT_HIGH_PA
    
    // RF frontend configuration
    #define FRONTEND_SUB1G_DIFF_RF
    #define FRONTEND_SUB1G_EXT_BIAS
    #define FRONTEND_24G_DIFF_RF
    #define FRONTEND_24G_EXT_BIAS
    
    // Supported frequency bands
    #define SUPPORT_FREQBAND_868
    #define SUPPORT_FREQBAND_2400
    
    // TX power table size definitions
    #define TXPOWERTABLE_868_PA13_SIZE 20 // 868 MHz, 13 dBm
    #define TXPOWERTABLE_868_PA20_SIZE 8 // 868 MHz, 20 dBm
    #define TXPOWERTABLE_2400_PA5_SIZE 16 // 2400 MHz, 5 dBm
    
    // TX power tables
    extern RF_TxPowerTable_Entry txPowerTable_868_pa13[]; // 868 MHz, 13 dBm
    extern RF_TxPowerTable_Entry txPowerTable_868_pa20[]; // 868 MHz, 20 dBm
    extern RF_TxPowerTable_Entry txPowerTable_2400_pa5[]; // 2400 MHz, 5 dBm
    
    
    
    //*********************************************************************************
    //  RF Setting:   Custom (50 kbps, 25 kHz Deviation, 2-GFSK, 100 kHz RX Bandwidth)
    //
    //  PHY:          custom868
    //  Setting file: setting_tc706_custom.json
    //*********************************************************************************
    
    // PA table usage
    #define TX_POWER_TABLE_SIZE TXPOWERTABLE_868_PA13_SIZE
    
    #define txPowerTable txPowerTable_868_pa13
    
    // TI-RTOS RF Mode object
    extern RF_Mode RF_prop;
    
    // RF Core API commands
    extern rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup;
    extern rfc_CMD_FS_t RF_cmdFs;
    extern rfc_CMD_PROP_TX_t RF_cmdPropTx;
    extern rfc_CMD_PROP_RX_t RF_cmdPropRx;
    
    // RF Core API overrides
    extern uint32_t pOverrides[];
    
    #endif // _TI_RADIO_CONFIG_H_
    

    /*
     *  ======== ti_radio_config.c ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1352P7RGZ
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.18.0
     *  SmartRF Studio data version : 2.31.0
     */
    
    #include "ti_radio_config.h"
    #include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_prop.h)
    
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LP_CC1352P7-1
    
    // TX Power tables
    // The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macros are defined in RF.h.
    // The following arguments are required:
    // RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient)
    // RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldoTrim)
    // See the Technical Reference Manual for further details about the "txPower" Command field.
    // The PA settings require the CCFG_FORCE_VDDR_HH = 0 unless stated otherwise.
    
    // 868 MHz, 13 dBm
    RF_TxPowerTable_Entry txPowerTable_868_pa13[TXPOWERTABLE_868_PA13_SIZE] =
    {
        {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(0, 3, 0, 2) }, // 0x04C0
        {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(1, 3, 0, 3) }, // 0x06C1
        {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(2, 3, 0, 5) }, // 0x0AC2
        {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(4, 3, 0, 5) }, // 0x0AC4
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 8) }, // 0x10C8
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 9) }, // 0x12C9
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 9) }, // 0x12CA
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(11, 3, 0, 10) }, // 0x14CB
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 3, 0, 11) }, // 0x16CD
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 3, 0, 14) }, // 0x1CCE
        {6, RF_TxPowerTable_DEFAULT_PA_ENTRY(17, 3, 0, 16) }, // 0x20D1
        {7, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 19) }, // 0x26D4
        {8, RF_TxPowerTable_DEFAULT_PA_ENTRY(24, 3, 0, 22) }, // 0x2CD8
        {9, RF_TxPowerTable_DEFAULT_PA_ENTRY(28, 3, 0, 31) }, // 0x3EDC
        {10, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 2, 0, 31) }, // 0x3E92
        {11, RF_TxPowerTable_DEFAULT_PA_ENTRY(26, 2, 0, 51) }, // 0x669A
        {12, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 1, 1, 68) }, // 0x895E
        // The original PA value (12.5 dBm) has been rounded to an integer value.
        {13, RF_TxPowerTable_DEFAULT_PA_ENTRY(36, 0, 0, 89) }, // 0xB224
        // This setting requires CCFG_FORCE_VDDR_HH = 1.
        {14, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 1, 0) }, // 0x013F
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    // 868 MHz, 20 dBm
    RF_TxPowerTable_Entry txPowerTable_868_pa20[TXPOWERTABLE_868_PA20_SIZE] =
    {
        {14, RF_TxPowerTable_HIGH_PA_ENTRY(13, 0, 0, 28, 0) }, // 0x00380D
        {15, RF_TxPowerTable_HIGH_PA_ENTRY(18, 0, 0, 36, 0) }, // 0x004812
        {16, RF_TxPowerTable_HIGH_PA_ENTRY(24, 0, 0, 43, 0) }, // 0x005618
        {17, RF_TxPowerTable_HIGH_PA_ENTRY(28, 0, 0, 51, 2) }, // 0x02661C
        {18, RF_TxPowerTable_HIGH_PA_ENTRY(34, 0, 0, 64, 4) }, // 0x048022
        {19, RF_TxPowerTable_HIGH_PA_ENTRY(15, 3, 0, 36, 4) }, // 0x0448CF
        {20, RF_TxPowerTable_HIGH_PA_ENTRY(18, 3, 0, 71, 27) }, // 0x1B8ED2
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    // 2400 MHz, 5 dBm
    RF_TxPowerTable_Entry txPowerTable_2400_pa5[TXPOWERTABLE_2400_PA5_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
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    
    //*********************************************************************************
    //  RF Setting:   Custom (50 kbps, 25 kHz Deviation, 2-GFSK, 100 kHz RX Bandwidth)
    //
    //  PHY:          custom868
    //  Setting file: setting_tc706_custom.json
    //*********************************************************************************
    
    // PARAMETER SUMMARY
    // RX Address Mode: No address check
    // Frequency (MHz): 921.0000
    // Deviation (kHz): 75.0
    // Packet Length Config: Variable
    // Max Packet Length: 255
    // Preamble Count: 4 Bytes
    // Preamble Mode: Send 0 as the first preamble bit
    // RX Filter BW (kHz): 546.3
    // Symbol Rate (kBaud): 300.000
    // Sync Word: 0x930B51DE
    // Sync Word Length: 32 Bits
    // TX Power (dBm): 12.5
    // Whitening: No whitening
    
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_prop,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    
    // Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
    uint32_t pOverrides[] =
    {
        // override_tc706.json
        // Tx: Configure PA ramp time, PACTL2.RC=0x3 (in ADI0, set PACTL2[4:3]=0x3)
        ADI_2HALFREG_OVERRIDE(0,16,0x8,0x8,17,0x1,0x1),
        // Rx: Set AGC reference level to 0x1A (default: 0x2E)
        HW_REG_OVERRIDE(0x609C,0x001A),
        // Rx: Set RSSI offset to adjust reported RSSI by -1 dB (default: -2), trimmed for external bias and differential configuration
        (uint32_t)0x000188A3,
        // Rx: Set anti-aliasing filter bandwidth to 0xD (in ADI0, set IFAMPCTL3[7:4]=0xD)
        ADI_HALFREG_OVERRIDE(0,61,0xF,0xD),
        // override_prop_common_sub1g.json
        // TX: Set FSCA divider bias to 1
        HW32_ARRAY_OVERRIDE(0x405C,0x0001),
        // TX: Set FSCA divider bias to 1
        (uint32_t)0x08141131,
        // override_prop_common.json
        // DC/DC regulator: In Tx with 14 dBm PA setting, use DCDCCTL5[3:0]=0xF (DITHER_EN=1 and IPEAK=7). In Rx, use default settings.
        (uint32_t)0x00F788D3,
        (uint32_t)0xFFFFFFFF
    };
    
    
    
    // CMD_PROP_RADIO_DIV_SETUP_PA
    // Proprietary Mode Radio Setup Command for All Frequency Bands
    rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup =
    {
        .commandNo = 0x3807,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .modulation.modType = 0x1,
        .modulation.deviation = 0x12C,
        .modulation.deviationStepSz = 0x0,
        .symbolRate.preScale = 0xF,
        .symbolRate.rateWord = 0x30000,
        .symbolRate.decimMode = 0x0,
        .rxBw = 0x5C,
        .preamConf.nPreamBytes = 0x4,
        .preamConf.preamMode = 0x0,
        .formatConf.nSwBits = 0x20,
        .formatConf.bBitReversal = 0x0,
        .formatConf.bMsbFirst = 0x1,
        .formatConf.fecMode = 0x0,
        .formatConf.whitenMode = 0x0,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .config.bSynthNarrowBand = 0x0,
        .txPower = 0xB224,
        .pRegOverride = pOverrides,
        .centerFreq = 0x0399,
        .intFreq = 0x8000,
        .loDivider = 0x05,
        .pRegOverrideTxStd = 0,
        .pRegOverrideTx20 = 0
    };
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    rfc_CMD_FS_t RF_cmdFs =
    {
        .commandNo = 0x0803,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .frequency = 0x0399,
        .fractFreq = 0x0000,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };
    
    // CMD_PROP_TX
    // Proprietary Mode Transmit Command
    rfc_CMD_PROP_TX_t RF_cmdPropTx =
    {
        .commandNo = 0x3801,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bUseCrc = 0x1,
        .pktConf.bVarLen = 0x1,
        .pktLen = 0x14,
        .syncWord = 0x930B51DE,
        .pPkt = 0
    };
    
    // CMD_PROP_RX
    // Proprietary Mode Receive Command
    rfc_CMD_PROP_RX_t RF_cmdPropRx =
    {
        .commandNo = 0x3802,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bRepeatOk = 0x0,
        .pktConf.bRepeatNok = 0x0,
        .pktConf.bUseCrc = 0x1,
        .pktConf.bVarLen = 0x1,
        .pktConf.bChkAddress = 0x0,
        .pktConf.endType = 0x0,
        .pktConf.filterOp = 0x0,
        .rxConf.bAutoFlushIgnored = 0x0,
        .rxConf.bAutoFlushCrcErr = 0x0,
        .rxConf.bIncludeHdr = 0x1,
        .rxConf.bIncludeCrc = 0x0,
        .rxConf.bAppendRssi = 0x0,
        .rxConf.bAppendTimestamp = 0x0,
        .rxConf.bAppendStatus = 0x1,
        .syncWord = 0x930B51DE,
        .maxPktLen = 0xFF,
        .address0 = 0xAA,
        .address1 = 0xBB,
        .endTrigger.triggerType = 0x1,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .endTime = 0x00000000,
        .pQueue = 0,
        .pOutput = 0
    };
    
    
    

    Here is the code to the generated source while in Custom RF @ 921 MHz with High PA on and output power set at +20dBm.

     

    /*
     *  ======== ti_radio_config.h ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1352P7RGZ
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.18.0
     *  SmartRF Studio data version : 2.31.0
     */
    #ifndef _TI_RADIO_CONFIG_H_
    #define _TI_RADIO_CONFIG_H_
    
    #include <ti/devices/DeviceFamily.h>
    #include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
    #include DeviceFamily_constructPath(driverlib/rf_common_cmd.h)
    #include DeviceFamily_constructPath(driverlib/rf_prop_cmd.h)
    #include <ti/drivers/rf/RF.h>
    
    /* SmartRF Studio version that the RF data is fetched from */
    #define SMARTRF_STUDIO_VERSION "2.31.0"
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LP_CC1352P7-1
    #define LP_CC1352P7_1
    
    // High-Power Amplifier supported
    #define SUPPORT_HIGH_PA
    
    // RF frontend configuration
    #define FRONTEND_SUB1G_DIFF_RF
    #define FRONTEND_SUB1G_EXT_BIAS
    #define FRONTEND_24G_DIFF_RF
    #define FRONTEND_24G_EXT_BIAS
    
    // Supported frequency bands
    #define SUPPORT_FREQBAND_868
    #define SUPPORT_FREQBAND_2400
    
    // TX power table size definitions
    #define TXPOWERTABLE_868_PA13_SIZE 20 // 868 MHz, 13 dBm
    #define TXPOWERTABLE_868_PA20_SIZE 8 // 868 MHz, 20 dBm
    #define TXPOWERTABLE_2400_PA5_SIZE 16 // 2400 MHz, 5 dBm
    
    // TX power tables
    extern RF_TxPowerTable_Entry txPowerTable_868_pa13[]; // 868 MHz, 13 dBm
    extern RF_TxPowerTable_Entry txPowerTable_868_pa20[]; // 868 MHz, 20 dBm
    extern RF_TxPowerTable_Entry txPowerTable_2400_pa5[]; // 2400 MHz, 5 dBm
    
    
    
    //*********************************************************************************
    //  RF Setting:   Custom (50 kbps, 25 kHz Deviation, 2-GFSK, 100 kHz RX Bandwidth)
    //
    //  PHY:          custom868
    //  Setting file: setting_tc706_custom.json
    //*********************************************************************************
    
    // PA table usage
    #define TX_POWER_TABLE_SIZE TXPOWERTABLE_868_PA20_SIZE
    
    #define txPowerTable txPowerTable_868_pa20
    
    // TI-RTOS RF Mode object
    extern RF_Mode RF_prop;
    
    // RF Core API commands
    extern rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup;
    extern rfc_CMD_FS_t RF_cmdFs;
    extern rfc_CMD_PROP_TX_t RF_cmdPropTx;
    extern rfc_CMD_PROP_RX_t RF_cmdPropRx;
    
    // RF Core API overrides
    extern uint32_t pOverrides[];
    extern uint32_t pOverridesTxStd[];
    extern uint32_t pOverridesTx20[];
    
    #endif // _TI_RADIO_CONFIG_H_
    

    /*
     *  ======== ti_radio_config.c ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1352P7RGZ
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.18.0
     *  SmartRF Studio data version : 2.31.0
     */
    
    #include "ti_radio_config.h"
    #include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_prop.h)
    
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LP_CC1352P7-1
    
    // TX Power tables
    // The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macros are defined in RF.h.
    // The following arguments are required:
    // RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient)
    // RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldoTrim)
    // See the Technical Reference Manual for further details about the "txPower" Command field.
    // The PA settings require the CCFG_FORCE_VDDR_HH = 0 unless stated otherwise.
    
    // 868 MHz, 13 dBm
    RF_TxPowerTable_Entry txPowerTable_868_pa13[TXPOWERTABLE_868_PA13_SIZE] =
    {
        {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(0, 3, 0, 2) }, // 0x04C0
        {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(1, 3, 0, 3) }, // 0x06C1
        {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(2, 3, 0, 5) }, // 0x0AC2
        {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(4, 3, 0, 5) }, // 0x0AC4
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 8) }, // 0x10C8
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 9) }, // 0x12C9
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 9) }, // 0x12CA
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(11, 3, 0, 10) }, // 0x14CB
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 3, 0, 11) }, // 0x16CD
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 3, 0, 14) }, // 0x1CCE
        {6, RF_TxPowerTable_DEFAULT_PA_ENTRY(17, 3, 0, 16) }, // 0x20D1
        {7, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 19) }, // 0x26D4
        {8, RF_TxPowerTable_DEFAULT_PA_ENTRY(24, 3, 0, 22) }, // 0x2CD8
        {9, RF_TxPowerTable_DEFAULT_PA_ENTRY(28, 3, 0, 31) }, // 0x3EDC
        {10, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 2, 0, 31) }, // 0x3E92
        {11, RF_TxPowerTable_DEFAULT_PA_ENTRY(26, 2, 0, 51) }, // 0x669A
        {12, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 1, 1, 68) }, // 0x895E
        // The original PA value (12.5 dBm) has been rounded to an integer value.
        {13, RF_TxPowerTable_DEFAULT_PA_ENTRY(36, 0, 0, 89) }, // 0xB224
        // This setting requires CCFG_FORCE_VDDR_HH = 1.
        {14, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 1, 0) }, // 0x013F
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    // 868 MHz, 20 dBm
    RF_TxPowerTable_Entry txPowerTable_868_pa20[TXPOWERTABLE_868_PA20_SIZE] =
    {
        {14, RF_TxPowerTable_HIGH_PA_ENTRY(13, 0, 0, 28, 0) }, // 0x00380D
        {15, RF_TxPowerTable_HIGH_PA_ENTRY(18, 0, 0, 36, 0) }, // 0x004812
        {16, RF_TxPowerTable_HIGH_PA_ENTRY(24, 0, 0, 43, 0) }, // 0x005618
        {17, RF_TxPowerTable_HIGH_PA_ENTRY(28, 0, 0, 51, 2) }, // 0x02661C
        {18, RF_TxPowerTable_HIGH_PA_ENTRY(34, 0, 0, 64, 4) }, // 0x048022
        {19, RF_TxPowerTable_HIGH_PA_ENTRY(15, 3, 0, 36, 4) }, // 0x0448CF
        {20, RF_TxPowerTable_HIGH_PA_ENTRY(18, 3, 0, 71, 27) }, // 0x1B8ED2
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    // 2400 MHz, 5 dBm
    RF_TxPowerTable_Entry txPowerTable_2400_pa5[TXPOWERTABLE_2400_PA5_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
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    
    //*********************************************************************************
    //  RF Setting:   Custom (50 kbps, 25 kHz Deviation, 2-GFSK, 100 kHz RX Bandwidth)
    //
    //  PHY:          custom868
    //  Setting file: setting_tc706_custom.json
    //*********************************************************************************
    
    // PARAMETER SUMMARY
    // RX Address Mode: No address check
    // Frequency (MHz): 921.0000
    // Deviation (kHz): 75.0
    // Packet Length Config: Variable
    // Max Packet Length: 255
    // Preamble Count: 4 Bytes
    // Preamble Mode: Send 0 as the first preamble bit
    // RX Filter BW (kHz): 546.3
    // Symbol Rate (kBaud): 300.000
    // Sync Word: 0x930B51DE
    // Sync Word Length: 32 Bits
    // TX Power (dBm): 20
    // Whitening: No whitening
    
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_prop,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    
    // Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
    uint32_t pOverrides[] =
    {
        // override_tc706.json
        // Tx: Configure PA ramp time, PACTL2.RC=0x3 (in ADI0, set PACTL2[4:3]=0x3)
        ADI_2HALFREG_OVERRIDE(0,16,0x8,0x8,17,0x1,0x1),
        // Rx: Set AGC reference level to 0x1A (default: 0x2E)
        HW_REG_OVERRIDE(0x609C,0x001A),
        // Rx: Set RSSI offset to adjust reported RSSI by -1 dB (default: -2), trimmed for external bias and differential configuration
        (uint32_t)0x000188A3,
        // Rx: Set anti-aliasing filter bandwidth to 0xD (in ADI0, set IFAMPCTL3[7:4]=0xD)
        ADI_HALFREG_OVERRIDE(0,61,0xF,0xD),
        // override_prop_common_sub1g.json
        // TX: Set FSCA divider bias to 1
        HW32_ARRAY_OVERRIDE(0x405C,0x0001),
        // TX: Set FSCA divider bias to 1
        (uint32_t)0x08141131,
        // override_prop_common.json
        // DC/DC regulator: In Tx with 14 dBm PA setting, use DCDCCTL5[3:0]=0xF (DITHER_EN=1 and IPEAK=7). In Rx, use default settings.
        (uint32_t)0x00F788D3,
        (uint32_t)0xFFFFFFFF
    };
    
    // Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
    uint32_t pOverridesTxStd[] =
    {
        // override_txstd_placeholder.json
        // TX Standard power override
        TX_STD_POWER_OVERRIDE(0x013F),
        // The ANADIV radio parameter based on LO divider and front end settings
        (uint32_t)0x11310703,
        // override_phy_tx_pa_ramp_genfsk_std.json
        // Tx: Configure PA ramping, set wait time before turning off (0x1A ticks of 16/24 us = 17.3 us).
        HW_REG_OVERRIDE(0x6028,0x001A),
        // Set TXRX pin to 0 in RX and high impedance in idle/TX. 
        HW_REG_OVERRIDE(0x60A8,0x0401),
        (uint32_t)0xFFFFFFFF
    };
    
    // Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
    uint32_t pOverridesTx20[] =
    {
        // override_tx20_placeholder.json
        // TX HighPA power override
        TX20_POWER_OVERRIDE(0x001B8ED2),
        // The ANADIV radio parameter based on LO divider and front end settings
        (uint32_t)0x11C10703,
        // override_phy_tx_pa_ramp_genfsk_hpa.json
        // Tx: Configure PA ramping, set wait time before turning off (0x1F ticks of 16/24 us = 20.3 us).
        HW_REG_OVERRIDE(0x6028,0x001F),
        // Set TXRX pin to 0 in RX/TX and high impedance in idle. 
        HW_REG_OVERRIDE(0x60A8,0x0001),
        (uint32_t)0xFFFFFFFF
    };
    
    
    
    // CMD_PROP_RADIO_DIV_SETUP_PA
    // Proprietary Mode Radio Setup Command for All Frequency Bands
    rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup =
    {
        .commandNo = 0x3807,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .modulation.modType = 0x1,
        .modulation.deviation = 0x12C,
        .modulation.deviationStepSz = 0x0,
        .symbolRate.preScale = 0xF,
        .symbolRate.rateWord = 0x30000,
        .symbolRate.decimMode = 0x0,
        .rxBw = 0x5C,
        .preamConf.nPreamBytes = 0x4,
        .preamConf.preamMode = 0x0,
        .formatConf.nSwBits = 0x20,
        .formatConf.bBitReversal = 0x0,
        .formatConf.bMsbFirst = 0x1,
        .formatConf.fecMode = 0x0,
        .formatConf.whitenMode = 0x0,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .config.bSynthNarrowBand = 0x0,
        .txPower = 0xFFFF,
        .pRegOverride = pOverrides,
        .centerFreq = 0x0399,
        .intFreq = 0x8000,
        .loDivider = 0x05,
        .pRegOverrideTxStd = pOverridesTxStd,
        .pRegOverrideTx20 = pOverridesTx20
    };
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    rfc_CMD_FS_t RF_cmdFs =
    {
        .commandNo = 0x0803,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .frequency = 0x0399,
        .fractFreq = 0x0000,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };
    
    // CMD_PROP_TX
    // Proprietary Mode Transmit Command
    rfc_CMD_PROP_TX_t RF_cmdPropTx =
    {
        .commandNo = 0x3801,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bUseCrc = 0x1,
        .pktConf.bVarLen = 0x1,
        .pktLen = 0x14,
        .syncWord = 0x930B51DE,
        .pPkt = 0
    };
    
    // CMD_PROP_RX
    // Proprietary Mode Receive Command
    rfc_CMD_PROP_RX_t RF_cmdPropRx =
    {
        .commandNo = 0x3802,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bRepeatOk = 0x0,
        .pktConf.bRepeatNok = 0x0,
        .pktConf.bUseCrc = 0x1,
        .pktConf.bVarLen = 0x1,
        .pktConf.bChkAddress = 0x0,
        .pktConf.endType = 0x0,
        .pktConf.filterOp = 0x0,
        .rxConf.bAutoFlushIgnored = 0x0,
        .rxConf.bAutoFlushCrcErr = 0x0,
        .rxConf.bIncludeHdr = 0x1,
        .rxConf.bIncludeCrc = 0x0,
        .rxConf.bAppendRssi = 0x0,
        .rxConf.bAppendTimestamp = 0x0,
        .rxConf.bAppendStatus = 0x1,
        .syncWord = 0x930B51DE,
        .maxPktLen = 0xFF,
        .address0 = 0xAA,
        .address1 = 0xBB,
        .endTrigger.triggerType = 0x1,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .endTime = 0x00000000,
        .pQueue = 0,
        .pOutput = 0
    };
    
    
    

    2) I am trying to achieve +20 dBm output power with sub-GHz with custom proprietary radio settings. So this is the configuration I was, 

    Thank you.

  • Hi Saugat,

    I apologize for the delay.

    I verified the radio settings of our project by importing rfPacketTx_LP_CC1352P7_1_tirtos7_ticlang from the SDK.
    I changed the custom PHY to 20 dBm on 921 MHz as below:

    When testing the board in the lab I see +20 dBm on the spectrum analyzer.

    Could you please follow these steps and tell me if you can replicate it?

    Kind regards,
    Theo