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.

CC1354P10: The Wi-SUN BR example with 20dBM TX power works abnormal

Part Number: CC1354P10
Other Parts Discussed in Thread: CC1352P7, SYSCONFIG, CC1352P

Tool/software:

Hi,

I am working on a project which uses CC1354P10 as a Wi-SUN BR. When I test the ns_br example(simplelink_cc13xx_cc26xx_sdk_7_41_00_17\examples\rtos\LP_EM_CC1354P10_1\ti_wisunfan\ns_br\tirtos7), and change the tx power to 20dBm, the program runs not right as expected. 

After I control the module with pyspinel by inputing the "ifconfig up", the program always  runs to the default_pa (RF_TxPowerTable_DefaultPA)  snipppet,not the  HighPA(RF_TxPowerTable_HighPA) snippet in rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg) function (ti_drivers_config.c). The pics below show the problem I encountered,while a CC1352P7 module works normally.

How do I resolve this problem? Does this work right?  Any suggestions would be greatly appreciated.

Thank you!

Regards,

Jie

  • Hi Jie,

    thank you for the detailed description.

    Could you please share with me how you configured the 20 dBm output power in the project?

    Could you then please also share the generated ti_radio_config.c and explain me how you measure the output power?

    Kind regards,
    Theo

  • Hi Theo,

    I configure the tx power value  using the Sysconfig sofware by clicking ti_wisunfan_border_router.syscfg file as shown below figure.

    /*
     *  ======== ti_radio_config.c ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1354P10RSK
     *  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_multi_protocol.h)
    
    // Custom overrides
    #include <ti/ti_wisunfan/wisunfan_mac/common/boards/ti_154stack_overrides.h>
    
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LP_EM_CC1354P10_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_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(21, 3, 0, 0, 3) }, // 0x0300D5
        {-19, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(24, 3, 0, 0, 3) }, // 0x0300D8
        {-18, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(27, 3, 0, 4, 3) }, // 0x0308DB
        {-17, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(31, 3, 0, 4, 3) }, // 0x0308DF
        {-16, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(15, 3, 0, 4, 2) }, // 0x0208CF
        {-15, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(17, 3, 0, 4, 2) }, // 0x0208D1
        {-14, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(47, 3, 0, 4, 3) }, // 0x0308EF
        {-13, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(22, 3, 0, 7, 2) }, // 0x020ED6
        {-12, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(25, 3, 0, 7, 2) }, // 0x020ED9
        {-11, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(29, 3, 0, 7, 2) }, // 0x020EDD
        {-10, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(33, 3, 0, 11, 2) }, // 0x0216E1
        {-9, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(39, 3, 0, 11, 2) }, // 0x0216E7
        {-8, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(56, 2, 0, 7, 3) }, // 0x030EB8
        {-7, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(19, 3, 0, 14, 1) }, // 0x011CD3
        {-6, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(28, 2, 0, 14, 2) }, // 0x021C9C
        {-5, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(33, 2, 0, 14, 2) }, // 0x021CA1
        {-4, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(29, 3, 0, 21, 1) }, // 0x012ADD
        {-3, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(35, 3, 0, 25, 1) }, // 0x0132E3
        {-2, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(54, 2, 0, 21, 2) }, // 0x022AB6
        {-1, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(50, 3, 0, 35, 1) }, // 0x0146F2
        {0, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(23, 2, 0, 25, 1) }, // 0x013297
        {1, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(27, 2, 0, 28, 1) }, // 0x01389B
        {2, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(37, 1, 0, 35, 2) }, // 0x024665
        {3, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(45, 1, 0, 39, 2) }, // 0x024E6D
        {4, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(49, 2, 0, 51, 1) }, // 0x0166B1
        {5, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(17, 1, 0, 28, 1) }, // 0x013851
        {6, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(22, 1, 0, 35, 1) }, // 0x014656
        {7, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(28, 1, 0, 42, 1) }, // 0x01545C
        {8, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(37, 1, 0, 56, 1) }, // 0x017065
        {9, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(35, 2, 0, 60, 0) }, // 0x0078A3
        {10, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(14, 1, 0, 32, 0) }, // 0x00404E
        {11, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(31, 1, 0, 74, 0) }, // 0x00945F
        {12, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(51, 0, 0, 95, 0) }, // 0x00BE33
        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(7, 3, 0, 0) }, // 0x00C7
        {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 0) }, // 0x00C9
        {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 4) }, // 0x08CC
        {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 2, 0, 4) }, // 0x088A
        {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 3, 0, 0) }, // 0x00D2
        {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 2, 0, 7) }, // 0x0E8E
        {-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(38, 3, 0, 14) }, // 0x1CE6
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 1, 0, 21) }, // 0x2A5E
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 25) }, // 0x3263
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 0, 0, 35) }, // 0x4616
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 0, 0, 46) }, // 0x5C1D
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(41, 0, 0, 64) }, // 0x8029
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 0, 0) }, // 0x003F
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    
    //*********************************************************************************
    //  RF Setting:   Wi-SUN mode #1b, 50 kbps, 25 kHz Deviation, 2-GFSK, 98 kHz RX Bandwidth
    //
    //  PHY:          2gfsk50kbps25dev915wsun1b
    //  Setting file: setting_tc721.json
    //*********************************************************************************
    
    // PARAMETER SUMMARY
    // Frequency (MHz): 918.2000
    // Deviation (kHz): 25.0
    // Max Packet Length: 2047
    // Preamble Count: 7 Bytes
    // Preamble Mode: Send 0 as the first preamble bit
    // RX Filter BW (kHz): 98.0
    // Symbol Rate (kBaud): 50.000
    // Sync Word: 0x55904E
    // Sync Word Length: 24 Bits
    // TX Power (dBm): 0
    // Whitening: Dynamically IEEE 802.15.4g compatible whitener and 16/32-bit CRC
    
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop_2gfsk50kbps154g =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_multi_protocol,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    
    // Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
    uint32_t pOverrides_2gfsk50kbps154g[] =
    {
        // override_txsub1_placeholder.json
        // TX sub-1GHz power override
        TXSUB1_POWER_OVERRIDE(0x013297),
        // override_prop_common.json
        // Tx: Set DCDC settings IPEAK=7, dither = off
        (uint32_t)0x004388D3,
        // 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_tc721.json
        // Synth: Set loop bandwidth after lock to 80 kHz (K2)
        (uint32_t)0xA47E0583,
        // Synth: Set loop bandwidth after lock to 80 kHz (K2)
        (uint32_t)0x000005A3,
        // Synth: Set loop bandwidth after lock to 80 kHz (K3, LSB)
        (uint32_t)0xEAE00603,
        // Synth: Set loop bandwidth after lock to 80 kHz (K3, MSB)
        (uint32_t)0x00010623,
        // Synth: Set FREF = 8 MHz
        (uint32_t)0x000684A3,
        // Synth: Set FREF dither = 9.6 MHz
        (uint32_t)0x000584B3,
        // 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),
        // Tx: Set wait time before turning off ramp to 0x1A (default: 0x1F)
        HW_REG_OVERRIDE(0x6028,0x001A),
        // Rx: Set AGC reference level to 0x1F (default: 0x2E)
        HW_REG_OVERRIDE(0x609C,0x0020),
        // Rx: Set RSSI offset to adjust reported RSSI by -2 dB (default: -2), trimmed for external bias and differential configuration
        (uint32_t)0x000288A3,
        // Rx: Set anti-aliasing filter bandwidth to 0x9 (in ADI0, set IFAMPCTL3[7:4]=0x9)
        ADI_HALFREG_OVERRIDE(0,61,0xF,0x9),
        // Enable FB2PLL, adjust for BW
        HW_REG_OVERRIDE(0x5334,0x3A07),
        // Enable first-order IIR filter based freq offset estimator
        HW_REG_OVERRIDE(0x50FC,0x0003),
        // Increase sync threshold from 0x1F to 0x23
        HW_REG_OVERRIDE(0x5114,0x2323),
        // Synth: Set dTxM value factor to -50
        (uint32_t)0x00CE87E3,
        // Synth: Set dTxM value threshold to 37
        (uint32_t)0x00250803,
        // Synth: Set calibration fine point code to 60 (default: 64)
        HW_REG_OVERRIDE(0x4064,0x003C),
        // Set LNA IB boost to 2
        ADI_HALFREG_OVERRIDE(0,5,0xF,0x2),
        // ti/ti_wisunfan/wisunfan_mac/common/boards/ti_154stack_overrides.h
        TI_154_STACK_OVERRIDES(),
        (uint32_t)0xFFFFFFFF
    };
    
    
    
    // CMD_PROP_RADIO_DIV_SETUP_PA
    // Proprietary Mode Radio Setup Command for All Frequency Bands
    const rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup_2gfsk50kbps25dev915wsun1b =
    {
        .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 = 0x64,
        .modulation.deviationStepSz = 0x0,
        .symbolRate.preScale = 0xF,
        .symbolRate.rateWord = 0x8000,
        .symbolRate.decimMode = 0x0,
        .rxBw = 0x52,
        .preamConf.nPreamBytes = 0x7,
        .preamConf.preamMode = 0x0,
        .formatConf.nSwBits = 0x18,
        .formatConf.bBitReversal = 0x0,
        .formatConf.bMsbFirst = 0x1,
        .formatConf.fecMode = 0x0,
        .formatConf.whitenMode = 0x7,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .config.bSynthNarrowBand = 0x0,
        .txPower = 0xFFFE,
        .pRegOverride = pOverrides_2gfsk50kbps154g,
        .centerFreq = 0x0396,
        .intFreq = 0x0599,
        .loDivider = 0x05,
        .pRegOverrideTxStd = 0,
        .pRegOverrideTx20 = 0
    };
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    const rfc_CMD_FS_t RF_cmdFs_2gfsk50kbps154g =
    {
        .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 = 0x0396,
        .fractFreq = 0x3334,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };
    
    // CMD_PROP_TX_ADV
    // Proprietary Mode Advanced Transmit Command
    const rfc_CMD_PROP_TX_ADV_t RF_cmdPropTxAdv_2gfsk50kbps154g =
    {
        .commandNo = 0x3803,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x2,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x1,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bUseCrc = 0x1,
        .pktConf.bCrcIncSw = 0x0,
        .pktConf.bCrcIncHdr = 0x0,
        .numHdrBits = 0x10,
        .pktLen = 0x0014,
        .startConf.bExtTxTrig = 0x0,
        .startConf.inputMode = 0x0,
        .startConf.source = 0x0,
        .preTrigger.triggerType = 0x4,
        .preTrigger.bEnaCmd = 0x0,
        .preTrigger.triggerNo = 0x0,
        .preTrigger.pastTrig = 0x1,
        .preTime = 0x00000000,
        .syncWord = 0x0055904E,
        .pPkt = 0
    };
    
    // CMD_PROP_RX_ADV
    // Proprietary Mode Advanced Receive Command
    const rfc_CMD_PROP_RX_ADV_t RF_cmdPropRxAdv_2gfsk50kbps154g =
    {
        .commandNo = 0x3804,
        .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.bCrcIncSw = 0x0,
        .pktConf.bCrcIncHdr = 0x0,
        .pktConf.endType = 0x0,
        .pktConf.filterOp = 0x1,
        .rxConf.bAutoFlushIgnored = 0x1,
        .rxConf.bAutoFlushCrcErr = 0x0,
        .rxConf.bIncludeHdr = 0x1,
        .rxConf.bIncludeCrc = 0x1,
        .rxConf.bAppendRssi = 0x1,
        .rxConf.bAppendTimestamp = 0x1,
        .rxConf.bAppendStatus = 0x1,
        .syncWord0 = 0x0055904E,
        .syncWord1 = 0x00000000,
        .maxPktLen = 0x07FF,
        .hdrConf.numHdrBits = 0x10,
        .hdrConf.lenPos = 0x0,
        .hdrConf.numLenBits = 0xB,
        .addrConf.addrType = 0x0,
        .addrConf.addrSize = 0x0,
        .addrConf.addrPos = 0x0,
        .addrConf.numAddr = 0x0,
        .lenOffset = 0xFC,
        .endTrigger.triggerType = 0x1,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .endTime = 0x00000000,
        .pAddr = 0,
        .pQueue = 0,
        .pOutput = 0
    };
    
    // CMD_PROP_CS
    // Carrier Sense Command
    const rfc_CMD_PROP_CS_t RF_cmdPropCs_2gfsk50kbps154g =
    {
        .commandNo = 0x3805,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x0,
        .condition.nSkip = 0x0,
        .csFsConf.bFsOffIdle = 0x0,
        .csFsConf.bFsOffBusy = 0x0,
        .__dummy0 = 0x00,
        .csConf.bEnaRssi = 0x0,
        .csConf.bEnaCorr = 0x0,
        .csConf.operation = 0x0,
        .csConf.busyOp = 0x0,
        .csConf.idleOp = 0x0,
        .csConf.timeoutRes = 0x0,
        .rssiThr = 0x00,
        .numRssiIdle = 0x00,
        .numRssiBusy = 0x00,
        .corrPeriod = 0x0000,
        .corrConfig.numCorrInv = 0x0,
        .corrConfig.numCorrBusy = 0x0,
        .csEndTrigger.triggerType = 0x0,
        .csEndTrigger.bEnaCmd = 0x0,
        .csEndTrigger.triggerNo = 0x0,
        .csEndTrigger.pastTrig = 0x0,
        .csEndTime = 0x00000000
    };
    
    
    

    I measure the  the output power with the pyspinel tool by using its command "rssi" . After a network with three nodes is formed, I can test the rssi value with the command. The power value of a CC1352P7 module with the same distance and the same  antenna is larger about 7dBm or more than the CC1354P10 module. I debug the code and find the above situation that CC1354P10 code runs to the DefaultPA section after the "ifconfig up" command is excuted. 

    Thanks for your reply!

    Regards,

    Jie

     

  • Hi Jie,

    thank you for the detailed report.

    In general your measurement method is very unreliable and if you aim to measure the output power exactly I would recommend you to use a spectrum analyzer connected to the antenna adapter.

    But you are right about the project. In the radio configuration that you shared the 20 dBm overwrites are missing. I will verify this in the lab and if I can confirm it I will report it to R&D.

    Kind regards,
    Theo 

  • Hi Theo,

    Thanks for your suggestions. In fact I use the ping and coap command to find that the packet loss rate of a CC1354 module is higher at a critical distance than a CC1352 module.  I also test the new sdk simplelink_cc13xx_cc26xx_sdk_8_30_01_01, it has the same results. How to revise the code to the correct settings? I hope your reply soon!Thank you!

    Regards,

    Jie

  • Hi Jie, 

    I apologize for the delay.

    Please check that you use the latest version of the SDK: https://www.ti.com/tool/download/SIMPLELINK-LOWPOWER-F2-SDK/8.30.01.01 
    I tested with this and I can see that the radio configuration is composed correctly.

    Please let me know if that solves your issue. If not please share the ti_radio_config.c that you get using this SDK.

    Kind regards,
    Theo

  • Hi Theo,

    I  tested the SDK 8_30_01_01 a week ago, it did not work either. After I reveived the email,I retested the sdk with the example ns_br_src again, it had the same results as SDK7_41_00_17 except that the Radio Config module version and SmartRF Studio data version number had been changed in the ti_radio_config.c file. What's the difference between the 2 projects you generated and I generated?  I use IAR for compiling. Thanks!

    Regards,

    Jie

  • Hi Jie,

    could you share with me the ti_radio_config.c that you generated with 8.30 ? 

    In my case with 8.30 the overwrites below are not set to 0 anymore and are set to the correct values. 
    .pRegOverrideTxStd = 0,
    .pRegOverrideTx20 = 0

    Kind regards,
    Theo

  • Hi Theo,

    I find no difference between the files generated by 7.41 SDK and the 8.30 SDK . The file is shown below:

    /*
     *  ======== ti_radio_config.c ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1354P10RSK
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.20.0
     *  SmartRF Studio data version : 2.32.0
     */
    
    #include "ti_radio_config.h"
    #include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_multi_protocol.h)
    
    // Custom overrides
    #include <ti/ti_wisunfan/wisunfan_mac/common/boards/ti_154stack_overrides.h>
    
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LP_EM_CC1354P10_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_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(21, 3, 0, 0, 3) }, // 0x0300D5
        {-19, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(24, 3, 0, 0, 3) }, // 0x0300D8
        {-18, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(27, 3, 0, 4, 3) }, // 0x0308DB
        {-17, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(31, 3, 0, 4, 3) }, // 0x0308DF
        {-16, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(15, 3, 0, 4, 2) }, // 0x0208CF
        {-15, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(17, 3, 0, 4, 2) }, // 0x0208D1
        {-14, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(47, 3, 0, 4, 3) }, // 0x0308EF
        {-13, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(22, 3, 0, 7, 2) }, // 0x020ED6
        {-12, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(25, 3, 0, 7, 2) }, // 0x020ED9
        {-11, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(29, 3, 0, 7, 2) }, // 0x020EDD
        {-10, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(33, 3, 0, 11, 2) }, // 0x0216E1
        {-9, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(39, 3, 0, 11, 2) }, // 0x0216E7
        {-8, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(56, 2, 0, 7, 3) }, // 0x030EB8
        {-7, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(19, 3, 0, 14, 1) }, // 0x011CD3
        {-6, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(28, 2, 0, 14, 2) }, // 0x021C9C
        {-5, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(33, 2, 0, 14, 2) }, // 0x021CA1
        {-4, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(29, 3, 0, 21, 1) }, // 0x012ADD
        {-3, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(35, 3, 0, 25, 1) }, // 0x0132E3
        {-2, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(54, 2, 0, 21, 2) }, // 0x022AB6
        {-1, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(50, 3, 0, 35, 1) }, // 0x0146F2
        {0, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(23, 2, 0, 25, 1) }, // 0x013297
        {1, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(27, 2, 0, 28, 1) }, // 0x01389B
        {2, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(37, 1, 0, 35, 2) }, // 0x024665
        {3, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(45, 1, 0, 39, 2) }, // 0x024E6D
        {4, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(49, 2, 0, 51, 1) }, // 0x0166B1
        {5, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(17, 1, 0, 28, 1) }, // 0x013851
        {6, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(22, 1, 0, 35, 1) }, // 0x014656
        {7, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(28, 1, 0, 42, 1) }, // 0x01545C
        {8, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(37, 1, 0, 56, 1) }, // 0x017065
        {9, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(35, 2, 0, 60, 0) }, // 0x0078A3
        {10, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(14, 1, 0, 32, 0) }, // 0x00404E
        {11, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(31, 1, 0, 74, 0) }, // 0x00945F
        {12, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(51, 0, 0, 95, 0) }, // 0x00BE33
        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(7, 3, 0, 0) }, // 0x00C7
        {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 0) }, // 0x00C9
        {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 4) }, // 0x08CC
        {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 2, 0, 4) }, // 0x088A
        {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 3, 0, 0) }, // 0x00D2
        {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 2, 0, 7) }, // 0x0E8E
        {-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(38, 3, 0, 14) }, // 0x1CE6
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 1, 0, 21) }, // 0x2A5E
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 25) }, // 0x3263
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 0, 0, 35) }, // 0x4616
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 0, 0, 46) }, // 0x5C1D
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(41, 0, 0, 64) }, // 0x8029
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 0, 0) }, // 0x003F
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    
    //*********************************************************************************
    //  RF Setting:   Wi-SUN mode #1b, 50 kbps, 25 kHz Deviation, 2-GFSK, 98 kHz RX Bandwidth
    //
    //  PHY:          2gfsk50kbps25dev915wsun1b
    //  Setting file: setting_tc721.json
    //*********************************************************************************
    
    // PARAMETER SUMMARY
    // Frequency (MHz): 918.2000
    // Deviation (kHz): 25.0
    // Max Packet Length: 2047
    // Preamble Count: 7 Bytes
    // Preamble Mode: Send 0 as the first preamble bit
    // RX Filter BW (kHz): 98.0
    // Symbol Rate (kBaud): 50.000
    // Sync Word: 0x55904E
    // Sync Word Length: 24 Bits
    // TX Power (dBm): 0
    // Whitening: Dynamically IEEE 802.15.4g compatible whitener and 16/32-bit CRC
    
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop_2gfsk50kbps154g =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_multi_protocol,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    
    // Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
    uint32_t pOverrides_2gfsk50kbps154g[] =
    {
        // override_txsub1_placeholder.json
        // TX sub-1GHz power override
        TXSUB1_POWER_OVERRIDE(0x013297),
        // override_prop_common.json
        // Tx: Set DCDC settings IPEAK=7, dither = off
        (uint32_t)0x004388D3,
        // 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_tc721.json
        // Synth: Set loop bandwidth after lock to 80 kHz (K2)
        (uint32_t)0xA47E0583,
        // Synth: Set loop bandwidth after lock to 80 kHz (K2)
        (uint32_t)0x000005A3,
        // Synth: Set loop bandwidth after lock to 80 kHz (K3, LSB)
        (uint32_t)0xEAE00603,
        // Synth: Set loop bandwidth after lock to 80 kHz (K3, MSB)
        (uint32_t)0x00010623,
        // Synth: Set FREF = 8 MHz
        (uint32_t)0x000684A3,
        // Synth: Set FREF dither = 9.6 MHz
        (uint32_t)0x000584B3,
        // 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),
        // Tx: Set wait time before turning off ramp to 0x1A (default: 0x1F)
        HW_REG_OVERRIDE(0x6028,0x001A),
        // Rx: Set AGC reference level to 0x1F (default: 0x2E)
        HW_REG_OVERRIDE(0x609C,0x0020),
        // Rx: Set RSSI offset to adjust reported RSSI by -2 dB (default: -2), trimmed for external bias and differential configuration
        (uint32_t)0x000288A3,
        // Rx: Set anti-aliasing filter bandwidth to 0x9 (in ADI0, set IFAMPCTL3[7:4]=0x9)
        ADI_HALFREG_OVERRIDE(0,61,0xF,0x9),
        // Enable FB2PLL, adjust for BW
        HW_REG_OVERRIDE(0x5334,0x3A07),
        // Enable first-order IIR filter based freq offset estimator
        HW_REG_OVERRIDE(0x50FC,0x0003),
        // Increase sync threshold from 0x1F to 0x23
        HW_REG_OVERRIDE(0x5114,0x2323),
        // Synth: Set dTxM value factor to -50
        (uint32_t)0x00CE87E3,
        // Synth: Set dTxM value threshold to 37
        (uint32_t)0x00250803,
        // Synth: Set calibration fine point code to 60 (default: 64)
        HW_REG_OVERRIDE(0x4064,0x003C),
        // Set LNA IB boost to 2
        ADI_HALFREG_OVERRIDE(0,5,0xF,0x2),
        // ti/ti_wisunfan/wisunfan_mac/common/boards/ti_154stack_overrides.h
        TI_154_STACK_OVERRIDES(),
        (uint32_t)0xFFFFFFFF
    };
    
    
    
    // CMD_PROP_RADIO_DIV_SETUP_PA
    // Proprietary Mode Radio Setup Command for All Frequency Bands
    const rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup_2gfsk50kbps25dev915wsun1b =
    {
        .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 = 0x64,
        .modulation.deviationStepSz = 0x0,
        .symbolRate.preScale = 0xF,
        .symbolRate.rateWord = 0x8000,
        .symbolRate.decimMode = 0x0,
        .rxBw = 0x52,
        .preamConf.nPreamBytes = 0x7,
        .preamConf.preamMode = 0x0,
        .formatConf.nSwBits = 0x18,
        .formatConf.bBitReversal = 0x0,
        .formatConf.bMsbFirst = 0x1,
        .formatConf.fecMode = 0x0,
        .formatConf.whitenMode = 0x7,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .config.bSynthNarrowBand = 0x0,
        .txPower = 0xFFFE,
        .pRegOverride = pOverrides_2gfsk50kbps154g,
        .centerFreq = 0x0396,
        .intFreq = 0x0599,
        .loDivider = 0x05,
        .pRegOverrideTxStd = 0,
        .pRegOverrideTx20 = 0
    };
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    const rfc_CMD_FS_t RF_cmdFs_2gfsk50kbps154g =
    {
        .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 = 0x0396,
        .fractFreq = 0x3334,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };
    
    // CMD_PROP_TX_ADV
    // Proprietary Mode Advanced Transmit Command
    const rfc_CMD_PROP_TX_ADV_t RF_cmdPropTxAdv_2gfsk50kbps154g =
    {
        .commandNo = 0x3803,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x2,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x1,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bUseCrc = 0x1,
        .pktConf.bCrcIncSw = 0x0,
        .pktConf.bCrcIncHdr = 0x0,
        .numHdrBits = 0x10,
        .pktLen = 0x0014,
        .startConf.bExtTxTrig = 0x0,
        .startConf.inputMode = 0x0,
        .startConf.source = 0x0,
        .preTrigger.triggerType = 0x4,
        .preTrigger.bEnaCmd = 0x0,
        .preTrigger.triggerNo = 0x0,
        .preTrigger.pastTrig = 0x1,
        .preTime = 0x00000000,
        .syncWord = 0x0055904E,
        .pPkt = 0
    };
    
    // CMD_PROP_RX_ADV
    // Proprietary Mode Advanced Receive Command
    const rfc_CMD_PROP_RX_ADV_t RF_cmdPropRxAdv_2gfsk50kbps154g =
    {
        .commandNo = 0x3804,
        .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.bCrcIncSw = 0x0,
        .pktConf.bCrcIncHdr = 0x0,
        .pktConf.endType = 0x0,
        .pktConf.filterOp = 0x1,
        .rxConf.bAutoFlushIgnored = 0x1,
        .rxConf.bAutoFlushCrcErr = 0x0,
        .rxConf.bIncludeHdr = 0x1,
        .rxConf.bIncludeCrc = 0x1,
        .rxConf.bAppendRssi = 0x1,
        .rxConf.bAppendTimestamp = 0x1,
        .rxConf.bAppendStatus = 0x1,
        .syncWord0 = 0x0055904E,
        .syncWord1 = 0x00000000,
        .maxPktLen = 0x07FF,
        .hdrConf.numHdrBits = 0x10,
        .hdrConf.lenPos = 0x0,
        .hdrConf.numLenBits = 0xB,
        .addrConf.addrType = 0x0,
        .addrConf.addrSize = 0x0,
        .addrConf.addrPos = 0x0,
        .addrConf.numAddr = 0x0,
        .lenOffset = 0xFC,
        .endTrigger.triggerType = 0x1,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .endTime = 0x00000000,
        .pAddr = 0,
        .pQueue = 0,
        .pOutput = 0
    };
    
    // CMD_PROP_CS
    // Carrier Sense Command
    const rfc_CMD_PROP_CS_t RF_cmdPropCs_2gfsk50kbps154g =
    {
        .commandNo = 0x3805,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x0,
        .condition.nSkip = 0x0,
        .csFsConf.bFsOffIdle = 0x0,
        .csFsConf.bFsOffBusy = 0x0,
        .__dummy0 = 0x00,
        .csConf.bEnaRssi = 0x0,
        .csConf.bEnaCorr = 0x0,
        .csConf.operation = 0x0,
        .csConf.busyOp = 0x0,
        .csConf.idleOp = 0x0,
        .csConf.timeoutRes = 0x0,
        .rssiThr = 0x00,
        .numRssiIdle = 0x00,
        .numRssiBusy = 0x00,
        .corrPeriod = 0x0000,
        .corrConfig.numCorrInv = 0x0,
        .corrConfig.numCorrBusy = 0x0,
        .csEndTrigger.triggerType = 0x0,
        .csEndTrigger.bEnaCmd = 0x0,
        .csEndTrigger.triggerNo = 0x0,
        .csEndTrigger.pastTrig = 0x0,
        .csEndTime = 0x00000000
    };
    
    
    

    How to correct these values you mentioned to right ones that work normally? (BR_CC1354 can support more nodes than BR_1352.) Thank you!

    Regards,

    Jie

  • Hi Jie,

    I will review the IAR project. I am working with CCS.

    Kind regards,
    Theo

  • Hi Theo,

    Thanks for your help. I have installed CCS20.0.2 recently. Then I checked the ti_radio_config.c and find no difference with the file generated by IAR. Should I remove the SDK 7.41? 

    Kind regards,

    Jie

  • Hi Jie,

    when you right click in CCS on the project name and navigate to Properties -> General -> Products -> SimpleLink CC13xx CC26xx SDK you can select the installed SDK version that you want to use.

    Can you please confirm that 8.30.1.1 is selected and saved before you build the project?

    Kind regards,
    Theo

  • Hi Theo,

    I checked the sdk version, it is indeed 8.30.1.01. Why the

    ti_radio_config.c CCS generated is different with yours? Thanks!

    /*
     *  ======== ti_radio_config.c ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1354P10RSK
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.20.0
     *  SmartRF Studio data version : 2.32.0
     */
    
    #include "ti_radio_config.h"
    #include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_multi_protocol.h)
    
    // Custom overrides
    #include <ti/ti_wisunfan/wisunfan_mac/common/boards/ti_154stack_overrides.h>
    
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LP_EM_CC1354P10_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_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(21, 3, 0, 0, 3) }, // 0x0300D5
        {-19, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(24, 3, 0, 0, 3) }, // 0x0300D8
        {-18, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(27, 3, 0, 4, 3) }, // 0x0308DB
        {-17, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(31, 3, 0, 4, 3) }, // 0x0308DF
        {-16, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(15, 3, 0, 4, 2) }, // 0x0208CF
        {-15, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(17, 3, 0, 4, 2) }, // 0x0208D1
        {-14, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(47, 3, 0, 4, 3) }, // 0x0308EF
        {-13, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(22, 3, 0, 7, 2) }, // 0x020ED6
        {-12, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(25, 3, 0, 7, 2) }, // 0x020ED9
        {-11, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(29, 3, 0, 7, 2) }, // 0x020EDD
        {-10, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(33, 3, 0, 11, 2) }, // 0x0216E1
        {-9, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(39, 3, 0, 11, 2) }, // 0x0216E7
        {-8, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(56, 2, 0, 7, 3) }, // 0x030EB8
        {-7, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(19, 3, 0, 14, 1) }, // 0x011CD3
        {-6, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(28, 2, 0, 14, 2) }, // 0x021C9C
        {-5, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(33, 2, 0, 14, 2) }, // 0x021CA1
        {-4, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(29, 3, 0, 21, 1) }, // 0x012ADD
        {-3, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(35, 3, 0, 25, 1) }, // 0x0132E3
        {-2, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(54, 2, 0, 21, 2) }, // 0x022AB6
        {-1, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(50, 3, 0, 35, 1) }, // 0x0146F2
        {0, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(23, 2, 0, 25, 1) }, // 0x013297
        {1, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(27, 2, 0, 28, 1) }, // 0x01389B
        {2, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(37, 1, 0, 35, 2) }, // 0x024665
        {3, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(45, 1, 0, 39, 2) }, // 0x024E6D
        {4, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(49, 2, 0, 51, 1) }, // 0x0166B1
        {5, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(17, 1, 0, 28, 1) }, // 0x013851
        {6, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(22, 1, 0, 35, 1) }, // 0x014656
        {7, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(28, 1, 0, 42, 1) }, // 0x01545C
        {8, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(37, 1, 0, 56, 1) }, // 0x017065
        {9, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(35, 2, 0, 60, 0) }, // 0x0078A3
        {10, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(14, 1, 0, 32, 0) }, // 0x00404E
        {11, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(31, 1, 0, 74, 0) }, // 0x00945F
        {12, RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(51, 0, 0, 95, 0) }, // 0x00BE33
        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(7, 3, 0, 0) }, // 0x00C7
        {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 0) }, // 0x00C9
        {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 4) }, // 0x08CC
        {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 2, 0, 4) }, // 0x088A
        {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 3, 0, 0) }, // 0x00D2
        {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 2, 0, 7) }, // 0x0E8E
        {-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(38, 3, 0, 14) }, // 0x1CE6
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 1, 0, 21) }, // 0x2A5E
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 25) }, // 0x3263
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 0, 0, 35) }, // 0x4616
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 0, 0, 46) }, // 0x5C1D
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(41, 0, 0, 64) }, // 0x8029
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 0, 0) }, // 0x003F
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    
    //*********************************************************************************
    //  RF Setting:   Wi-SUN mode #1b, 50 kbps, 25 kHz Deviation, 2-GFSK, 98 kHz RX Bandwidth
    //
    //  PHY:          2gfsk50kbps25dev915wsun1b
    //  Setting file: setting_tc721.json
    //*********************************************************************************
    
    // PARAMETER SUMMARY
    // Frequency (MHz): 918.2000
    // Deviation (kHz): 25.0
    // Max Packet Length: 2047
    // Preamble Count: 7 Bytes
    // Preamble Mode: Send 0 as the first preamble bit
    // RX Filter BW (kHz): 98.0
    // Symbol Rate (kBaud): 50.000
    // Sync Word: 0x55904E
    // Sync Word Length: 24 Bits
    // TX Power (dBm): 0
    // Whitening: Dynamically IEEE 802.15.4g compatible whitener and 16/32-bit CRC
    
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop_2gfsk50kbps154g =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_multi_protocol,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    
    // Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
    uint32_t pOverrides_2gfsk50kbps154g[] =
    {
        // override_txsub1_placeholder.json
        // TX sub-1GHz power override
        TXSUB1_POWER_OVERRIDE(0x013297),
        // override_prop_common.json
        // Tx: Set DCDC settings IPEAK=7, dither = off
        (uint32_t)0x004388D3,
        // 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_tc721.json
        // Synth: Set loop bandwidth after lock to 80 kHz (K2)
        (uint32_t)0xA47E0583,
        // Synth: Set loop bandwidth after lock to 80 kHz (K2)
        (uint32_t)0x000005A3,
        // Synth: Set loop bandwidth after lock to 80 kHz (K3, LSB)
        (uint32_t)0xEAE00603,
        // Synth: Set loop bandwidth after lock to 80 kHz (K3, MSB)
        (uint32_t)0x00010623,
        // Synth: Set FREF = 8 MHz
        (uint32_t)0x000684A3,
        // Synth: Set FREF dither = 9.6 MHz
        (uint32_t)0x000584B3,
        // 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),
        // Tx: Set wait time before turning off ramp to 0x1A (default: 0x1F)
        HW_REG_OVERRIDE(0x6028,0x001A),
        // Rx: Set AGC reference level to 0x1F (default: 0x2E)
        HW_REG_OVERRIDE(0x609C,0x0020),
        // Rx: Set RSSI offset to adjust reported RSSI by -2 dB (default: -2), trimmed for external bias and differential configuration
        (uint32_t)0x000288A3,
        // Rx: Set anti-aliasing filter bandwidth to 0x9 (in ADI0, set IFAMPCTL3[7:4]=0x9)
        ADI_HALFREG_OVERRIDE(0,61,0xF,0x9),
        // Enable FB2PLL, adjust for BW
        HW_REG_OVERRIDE(0x5334,0x3A07),
        // Enable first-order IIR filter based freq offset estimator
        HW_REG_OVERRIDE(0x50FC,0x0003),
        // Increase sync threshold from 0x1F to 0x23
        HW_REG_OVERRIDE(0x5114,0x2323),
        // Synth: Set dTxM value factor to -50
        (uint32_t)0x00CE87E3,
        // Synth: Set dTxM value threshold to 37
        (uint32_t)0x00250803,
        // Synth: Set calibration fine point code to 60 (default: 64)
        HW_REG_OVERRIDE(0x4064,0x003C),
        // Set LNA IB boost to 2
        ADI_HALFREG_OVERRIDE(0,5,0xF,0x2),
        // ti/ti_wisunfan/wisunfan_mac/common/boards/ti_154stack_overrides.h
        TI_154_STACK_OVERRIDES(),
        (uint32_t)0xFFFFFFFF
    };
    
    
    
    // CMD_PROP_RADIO_DIV_SETUP_PA
    // Proprietary Mode Radio Setup Command for All Frequency Bands
    const rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup_2gfsk50kbps25dev915wsun1b =
    {
        .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 = 0x64,
        .modulation.deviationStepSz = 0x0,
        .symbolRate.preScale = 0xF,
        .symbolRate.rateWord = 0x8000,
        .symbolRate.decimMode = 0x0,
        .rxBw = 0x52,
        .preamConf.nPreamBytes = 0x7,
        .preamConf.preamMode = 0x0,
        .formatConf.nSwBits = 0x18,
        .formatConf.bBitReversal = 0x0,
        .formatConf.bMsbFirst = 0x1,
        .formatConf.fecMode = 0x0,
        .formatConf.whitenMode = 0x7,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .config.bSynthNarrowBand = 0x0,
        .txPower = 0xFFFE,
        .pRegOverride = pOverrides_2gfsk50kbps154g,
        .centerFreq = 0x0396,
        .intFreq = 0x0599,
        .loDivider = 0x05,
        .pRegOverrideTxStd = 0,
        .pRegOverrideTx20 = 0
    };
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    const rfc_CMD_FS_t RF_cmdFs_2gfsk50kbps154g =
    {
        .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 = 0x0396,
        .fractFreq = 0x3334,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };
    
    // CMD_PROP_TX_ADV
    // Proprietary Mode Advanced Transmit Command
    const rfc_CMD_PROP_TX_ADV_t RF_cmdPropTxAdv_2gfsk50kbps154g =
    {
        .commandNo = 0x3803,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x2,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x1,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bUseCrc = 0x1,
        .pktConf.bCrcIncSw = 0x0,
        .pktConf.bCrcIncHdr = 0x0,
        .numHdrBits = 0x10,
        .pktLen = 0x0014,
        .startConf.bExtTxTrig = 0x0,
        .startConf.inputMode = 0x0,
        .startConf.source = 0x0,
        .preTrigger.triggerType = 0x4,
        .preTrigger.bEnaCmd = 0x0,
        .preTrigger.triggerNo = 0x0,
        .preTrigger.pastTrig = 0x1,
        .preTime = 0x00000000,
        .syncWord = 0x0055904E,
        .pPkt = 0
    };
    
    // CMD_PROP_RX_ADV
    // Proprietary Mode Advanced Receive Command
    const rfc_CMD_PROP_RX_ADV_t RF_cmdPropRxAdv_2gfsk50kbps154g =
    {
        .commandNo = 0x3804,
        .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.bCrcIncSw = 0x0,
        .pktConf.bCrcIncHdr = 0x0,
        .pktConf.endType = 0x0,
        .pktConf.filterOp = 0x1,
        .rxConf.bAutoFlushIgnored = 0x1,
        .rxConf.bAutoFlushCrcErr = 0x0,
        .rxConf.bIncludeHdr = 0x1,
        .rxConf.bIncludeCrc = 0x1,
        .rxConf.bAppendRssi = 0x1,
        .rxConf.bAppendTimestamp = 0x1,
        .rxConf.bAppendStatus = 0x1,
        .syncWord0 = 0x0055904E,
        .syncWord1 = 0x00000000,
        .maxPktLen = 0x07FF,
        .hdrConf.numHdrBits = 0x10,
        .hdrConf.lenPos = 0x0,
        .hdrConf.numLenBits = 0xB,
        .addrConf.addrType = 0x0,
        .addrConf.addrSize = 0x0,
        .addrConf.addrPos = 0x0,
        .addrConf.numAddr = 0x0,
        .lenOffset = 0xFC,
        .endTrigger.triggerType = 0x1,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .endTime = 0x00000000,
        .pAddr = 0,
        .pQueue = 0,
        .pOutput = 0
    };
    
    // CMD_PROP_CS
    // Carrier Sense Command
    const rfc_CMD_PROP_CS_t RF_cmdPropCs_2gfsk50kbps154g =
    {
        .commandNo = 0x3805,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x0,
        .condition.nSkip = 0x0,
        .csFsConf.bFsOffIdle = 0x0,
        .csFsConf.bFsOffBusy = 0x0,
        .__dummy0 = 0x00,
        .csConf.bEnaRssi = 0x0,
        .csConf.bEnaCorr = 0x0,
        .csConf.operation = 0x0,
        .csConf.busyOp = 0x0,
        .csConf.idleOp = 0x0,
        .csConf.timeoutRes = 0x0,
        .rssiThr = 0x00,
        .numRssiIdle = 0x00,
        .numRssiBusy = 0x00,
        .corrPeriod = 0x0000,
        .corrConfig.numCorrInv = 0x0,
        .corrConfig.numCorrBusy = 0x0,
        .csEndTrigger.triggerType = 0x0,
        .csEndTrigger.bEnaCmd = 0x0,
        .csEndTrigger.triggerNo = 0x0,
        .csEndTrigger.pastTrig = 0x0,
        .csEndTime = 0x00000000
    };
    
    
    

    Regards,

    Jie

  • Hi Jie,

    I apologize for the delay.

    After discussing this issue internally I can provide you a work around.

    To enable the +20 dBm TX power you need to:
    1. Remove the Wi-SUN Stack configuration from SysConfig.


    2. Add a new custom PHY using the Wi-SUN mode of your choice where you can enable high PA and get +20 dBM TX power.


    I filed a ticket so that the default stack configuration will be adjusted for future releases.

    Please let me know if you got it working.

    Kind regards,
    Theo

  • the default stac

    Hi Theo,

    I build project after excuting the steps you provided, but the compilation is failed due to many errors ralated to unmatch variable names. Then I copyed the parameters into the original ti_radio_config.h(c) files, and tried again.Finnally,  20dBm PA is enbaled after "ifconfig up" command is executed . Thanks for your consistent support!!! 

    Best regards,

    Jie

  • Hi Jie,

    great that you got it to work this way!
    I already checked with R&D for a fix and it will be implemented with our next release.

    Kind regards,
    Theo

  • Hi Jie,

    another way to enable the +20 dBm configuration is to chage the file: source/ti/ti_wisunfan/.meta/ti_wisunfan_common.js of the SDK.
    The function isHighPADevice() needs to be replaced by the function below.

    /*!
    * ======== isHighPADevice ========
    * Returns whether device supports high PA
    *
    * @returns - Boolean
    */
    function isHighPADevice()
    {
    const board = getLaunchPadFromDevice(boardName);
    return(board.includes("CC1352P") || board.includes("CC1312P") || board.includes("CC1354P"));
    }

    This will allow for SysConfig to generate the correct configuration without modifying the radio configuration yourself.

    Kind regards,
    Theo

  • Hi Theo,

    I have tested the methods you provided and they both work ok. The devices have run for 24 hours already at a longer distance . Thanks again for your effective support!

    Best regards,

    Jie