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-CC1350-4: How to set txpower to 0bdm or -10dbm at 433M 1.5Mbps HSM?

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

Dear TI Experts,

More than a year ago, I've posted a question about how to set tx power to a lower value, for in smart RF studio, there are only >6dbm txpower setting at 433M, and I've got the reply that this is not available.

I want to know, if there is any improvement for this requirment now, if CC13xx can set a lower TX power accurately, it will reduce the total system power.

Thanks a lot for your attention.

  • As I answered in the original thread this is due to how the PA is designed and therefore the answer is the same as in the original thread. Did your customer back then do some tests?
  • Dear TER,
    Thanks a lot for your support again. My customer tested several boards:
    1. CC1310 7*7 package , 3.3V power, Differential output, when they set -10dbm, and measure 3 boards tx ----- 1.67 / 1.77 /2.13 dbm
    2. CC1310 4*4 package, 2.1V power, Single-Ended output, when they set -10dbm, and measure 3 boards tx ----- -0.18/ -1.50 / -1.62 dbm
  • Dear TER,

    As customer measured, there is a big gap between RF setting and actual  RF output. Is it possible to reduce tha gap a little bit? Thanks a lot.

  • I find the measured results a bit strange. Did they use SmartRF Studio to control the board or did they doing the measurements using code? If the later, please post the settings they have used.
  • Dear TER,

    Thanks for your support. Due to Chinese Spring Festival holiday, customer may reply us in 10~14 days when they return from the holidays.

  • OK, I closed this thread to avoid it to be open for a long period of time. When they get back with more information you can just continue to use this thread, a new post will reopen it.
  • Dear TER,

    Below is the setting code, could you kindly help to check? Thanks a lot.

    The Chinese comment's meaning is "TX Power Setting"

    rf_parameter_settings.c
     /*
     ****************************************************************************
     * Copyright(C): JIFU Technology
     * FileName    : rf_parameter_settings.c
     * Description : ��Ƶ����
     ****************************************************************************
     */
    
    #include <ti/devices/cc13x0/driverlib/rf_mailbox.h>
    #include <ti/devices/cc13x0/driverlib/rf_hs_mailbox.h>
    #include <ti/devices/cc13x0/driverlib/rf_common_cmd.h>
    #include <ti/devices/cc13x0/driverlib/rf_hs_cmd.h>
    #include <ti/devices/cc13x0/driverlib/rf_prop_cmd.h>
    #include <ti/drivers/rf/RF.h>
    #include <ti/devices/cc13x0/rf_patches/rf_patch_cpe_genfsk.h>
    #include <ti/devices/cc13x0/rf_patches/rf_patch_rfe_genfsk.h>
    #include <ti/devices/cc13x0/rf_patches/rf_patch_rfe_hsp_4mbps.h>
    #include <ti/devices/cc13x0/rf_patches/rf_patch_mce_hsp_4mbps.h>
    #include "apply_ghs_mce_patch.h"
    #include "apply_ghs_rfe_patch.h"
    #include "rf_parameter_settings.h"
    
    RF_Mode RF_prop_hsm =
    {
        .rfMode       =  RF_MODE_PROPRIETARY_SUB_1,
        .cpePatchFxn  =  &rf_patch_cpe_genfsk,
        .mcePatchFxn  =  &enterGhsMcePatch,
        .rfePatchFxn  =  &enterGhsRfePatch,
    };
    
    // Overrides for CMD_RADIO_SETUP 4FSK
    uint32_t pOverrides_4FSK[] =
    {
        MCE_RFE_OVERRIDE(1, 0, 0, 1, 0, 0),  // Patch
        ADI_HALFREG_OVERRIDE(0,61,0xF,0x0), 
        // Synth: Set recommended RTRIM to 7
        HW_REG_OVERRIDE(0x4038,0x0037),
        // Synth: Set Fref to 4 MHz
        (uint32_t)0x000684A3,
        HW_REG_OVERRIDE(0x4020,0x7F00),    
        HW_REG_OVERRIDE(0x4064,0x0040),    
        // Synth: Configure fine calibration setting
        (uint32_t)0xB1070503,
        // Synth: Configure fine calibration setting
        (uint32_t)0x05330523,
        // Synth: Set loop bandwidth after lock to 20 kHz
        (uint32_t)0x0A480583,               
        (uint32_t)0x7AB80603,
        // Synth: Configure VCO LDO (in ADI1, set VCOLDOCFG=0x9F to use voltage input reference
        ADI_REG_OVERRIDE(1,4,0x9F),
        // Synth: Configure synth LDO (in ADI1, set SLDOCTL0.COMP_CAP=1)
        ADI_HALFREG_OVERRIDE(1,7,0x4,0x4), 
        // Synth: Use 24 MHz XOSC as synth clock, enable extra PLL filtering
        (uint32_t)0x02010403,
        // Synth: Configure extra PLL filtering
        (uint32_t)0x00108463,
        // Synth: Increase synth programming timeout
        (uint32_t)0x04B00243,
        //Override synth_disbale_bias_div10.xml
        //Synth:Set divider bias disbaled
        HW32_ARRAY_OVERRIDE(0x405C,1),
        //Specific for loDivider 10
        (uint32_t)0x18000280,
        // override_phy_gfsk_rx.xml
        // Rx: Set LNA bias current trim offset to 3
        (uint32_t)0x00038883,
        // override_frontend_xd.xml
        // Rx: Set RSSI offset to adjust reported RSSI by -2 dB
        (uint32_t)0x000288A3, //     0x00FB88A3,         
        HW_REG_OVERRIDE(0x5104,0x302B),    
        // Rx: Freeze RSSI on sync found event
        HW_REG_OVERRIDE(0x6084,0x35F1), 
        (uint32_t) 0x002C82C3,             
        (uint32_t) 0x002882D3,              
        // override_phy_gfsk_pa_ramp_agc_reflevel_0x1a.xml
        // Tx: Enable PA ramping (0x41). Rx: Set AGC reference level to 0x31.
        HW_REG_OVERRIDE(0x6088,0x4231),
        // PA Ramping overrides
        HW_REG_OVERRIDE(0x608C,0x0A13),              
        // Length of CW tone
        HW_REG_OVERRIDE(0x52B0,0x01E0),  
        // TX power override
        // Tx: Set PA trim to max (in ADI0, set PACTL0=0xF8)
        ADI_REG_OVERRIDE(0,12,0xF8),
        
        (uint32_t)0x00018063,
        
        (uint32_t)0xFFFFFFFF,               // End Override
    };
    
    // CMD_PROP_RADIO_DIV_SETUP for 4FSK TX
    rfc_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup_4FSK_tx =
    {
        .commandNo                  = 0x3807,
        .status                     = 0x0000,
        .pNextOp                    = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
        .startTime                  = 0x00000000,
        .startTrigger.triggerType   = 0x0,
        .startTrigger.bEnaCmd       = 0x0,
        .startTrigger.triggerNo     = 0x0,
        .startTrigger.pastTrig      = 0x0,
        .condition.rule             = 0x1,
        .condition.nSkip            = 0x0,
        .modulation.modType         = 0x1, // 1 = GFSK / 0 = FSK
        .modulation.deviation       = 560, // Outersymbols, 420 kHz
        .symbolRate.preScale        = 8,
        .symbolRate.rateWord        = 262144, // 750ksps
        .rxBw                       = 48,  // ~2MHz
        .preamConf.nPreamBytes      = 0x6, // Start with 6
        .preamConf.preamMode        = 0x1,
        .formatConf.nSwBits         = 0x20,
        .formatConf.bBitReversal    = 0x0,
        .formatConf.bMsbFirst       = 0x1,
        .formatConf.fecMode         = 9,    // 4-ary
        .formatConf.whitenMode      = 0x0,
        .config.frontEndMode        = 0x06, 
        .config.biasMode            = 0x1,
        .config.bNoFsPowerUp        = 0x0,
        .txPower                    = 0x22c4, //6dBm      0x04C0,  //-10dBm         0x12c3,//0dBm  
        .pRegOverride               = pOverrides_4FSK,
        .centerFreq                 = 0x01B1, //433Mhz  0x01AF,//431Mhz    
        .intFreq                    = 0x8000,
        .loDivider                  = 0x0A,
    };
    
    // CMD_PROP_RADIO_DIV_SETUP for 4FSK RX
    rfc_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup_4FSK_rx =
    {
        .commandNo                  = 0x3807,
        .status                     = 0x0000,
        .pNextOp                    = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
        .startTime                  = 0x00000000,
        .startTrigger.triggerType   = 0x0,
        .startTrigger.bEnaCmd       = 0x0,
        .startTrigger.triggerNo     = 0x0,
        .startTrigger.pastTrig      = 0x0,
        .condition.rule             = 0x1,
        .condition.nSkip            = 0x0,
        .modulation.modType         = 0x1, // 1 = GFSK / 0 = FSK
        .modulation.deviation       = 560, // Outersymbols, 420 kHz
        .symbolRate.preScale        = 8,
        .symbolRate.rateWord        = 262144, // 750ksps
        .rxBw                       = 48,  // ~2MHz
        .preamConf.nPreamBytes      = 0x6, // Start with 6
        .preamConf.preamMode        = 0x1,
        .formatConf.nSwBits         = 0x20,
        .formatConf.bBitReversal    = 0x0,
        .formatConf.bMsbFirst       = 0x1,
        .formatConf.fecMode         = 9,    // 4-ary
        .formatConf.whitenMode      = 0x0,
        .config.frontEndMode        = 0x06,
        .config.biasMode            = 0x1,
        .config.bNoFsPowerUp        = 0x0,
        .txPower                    = 0x22c4, //6dBm   0x12c3,//0dBm
        .pRegOverride               = pOverrides_4FSK,
        .centerFreq                 = 0x01B1, //433Mhz
        .intFreq                    = 0x0A66,
        .loDivider                  = 0x0A,
    };
    
    // CMD_FS
    rfc_CMD_FS_t RF_cmdFs =
    {
        .commandNo                  = 0x0803,
        .status                     = 0x0000,
        .pNextOp                    = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
        .startTime                  = 0x00000000,
        .startTrigger.triggerType   = 0x0,
        .startTrigger.bEnaCmd       = 0x0,
        .startTrigger.triggerNo     = 0x0,
        .startTrigger.pastTrig      = 0x0,
        .condition.rule             = 0x1,
        .condition.nSkip            = 0x0,
        .frequency                  = 0x01B1, //433Mhz
        .fractFreq                  = 0xEB85, 
        .synthConf.bTxMode          = 0x1,
        .synthConf.refFreq          = 0x0,
        .__dummy0                   = 0x00,
        .__dummy1                   = 0x00,
        .__dummy2                   = 0x00,
        .__dummy3                   = 0x0000,
    };
    
    // CMD_TX_HS
    rfc_CMD_HS_TX_t RF_cmdTxHS =
    {
        .commandNo                  = 0x3841,
        .status                     = 0x0000,
        .pNextOp                    = 0x00000000,
        .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,
        .pQueue                     = 0,
    };
    
    // CMD_RX_HS
    rfc_CMD_HS_RX_t RF_cmdRxHS =
    {
        .commandNo                  = CMD_HS_RX,
        .status                     = 0x0000,
        .pNextOp                    = 0x00000000,
        .startTime                  = 0x00000000,
        .startTrigger.triggerType   = 0x0,
        .startTrigger.bEnaCmd       = 0x0,
        .startTrigger.triggerNo     = 0x0,
        .startTrigger.pastTrig      = 0x0,
        .condition.rule             = 0x1,
        .condition.nSkip            = 0x0,
        .pktConf.bFsOff             = 0,
        .pktConf.bUseCrc            = 1,
        .pktConf.bVarLen            = 1,
        .pktConf.bRepeatOk          = 0,
        .pktConf.bRepeatNok         = 0,
        .pktConf.addressMode        = 0,
        .rxConf.bAutoFlushCrcErr    = 0,
        .rxConf.bIncludeLen         = 1,
        .rxConf.bIncludeCrc         = 0,
        .rxConf.bAppendStatus       = 0,
        .rxConf.bAppendTimestamp    = 0,
        .maxPktLen                  = 0,
        .address0                   = 0,
        .address1                   = 0,
        .__dummy0                   = 0,
        .endTrigger.triggerType     = 1,
        .endTrigger.bEnaCmd         = 0,
        .endTrigger.triggerNo       = 0,
        .endTrigger.pastTrig        = 0,
        .endTime                    = 0,
        .pQueue                     = 0,
        .pOutput                    = 0,
    };
    

  • Is this the 1.5 Mbps setting that uses a separate patch?
  • Dear TER,

    Yes, attached is the patch customer use

    patch.zip

  • - Did they use RBW = 1 MHz for the measurements?
    - Have they tested using SmartRF Studio to test sending just a CW? I want to see if the results are a function of hardware or software .
  • Dear TER,

    Below is their RF measurements setting. For customer's CC1310EVM is broken, they don't have the SmartRF studio CW test data.

  • They can use SmartRF Studio to control their board through jTAG.

    Does that mean that this plot is measured with their radio settings and not a CW? Which txPower setting is this for?