CC1350: What is the difference between 7XD-7793 and 7XD-4352 RF design in CC1350

Part Number: CC1350
Other Parts Discussed in Thread: ENERGIA, CC1310

Hi Experts,

Currently, i am working with a CC1350 Customized board, i have checked this board with simple link examples with Energia and smart RF studio(RF design is LAUNCHXL-CC1350-7XD-7793 ) that's working fine(RF packet TX/RX), here my problem is i have a code for sending the uart data through sub 1 GHz that's working fine in LAUNCHXL-CC1350- Rev 1.3 but the same code(rf section) does not work as expected at our customized board and LAUNCHXL-CC1350- Rev 1.2, kindly help me to find what's the problem here if you need my code for review kindly let us know i am ready to share,

Note: What is the difference between 7XD-7793 and 7XD-4352 RF design in CC1350 kindly let us know because my customized board sends/receives the data when i choose LAUNCHXL-CC1350-7XD-7793 from RF design based on the dropdown.

regards

surya

  • If you have Energi related questions you should use the Energia specific forums.

    I would strongly recommend starting from one of the examples listed here: https://dev.ti.com/tirex/explore/node?node=AFUdF2MFjhZ-sEr1NZrjvw__eCfARaV__LATEST

    Are you using sub 1-GHz + 2.4 GHz since you are using the CC1350 and not CC1310? 

  • Hi TER,

    Thanks for the reply, 

    I am working with CCS not an Energia

    yes i am using CC1350, and i have a customized board too... that board is working fine with smart studio RF 

  • It's not fully clear from your post exactly what you are doing. Since you mentioned Energia I assumed you worked with that.

    LAUNCHXL-CC1350-7XD-7793 from RF design based on the dropdown

    Which dropdown are you referring to? 

    A double check since you are referring to an older version of the LP: If you connect LAUNCHXL-CC1350- Rev 1.2 to SmartRF Studio, which chip version of CC1350 is reported (low left corner in SmartRF Studio)?

    "does not work as expected ": What does that mean? What works and what does not work? 

    ---

    7XD-7793: Reference design for the 868 and 915 MHz bands

    7XD-4352: Reference design for 433 MHz

    Which frequency band do you want to operate on? 

  • Hi TER,

    Thanks for the Reply,

    I have a 2-set of CC1350 development boards (Ver1.2 and Ver 1.3)

    i have a full-duplex RF code this code transmits the UART data through RF and prints the received RF data in UART.

    this code works perfectly on Ver 1.3 boards, and the same code does not work for inVer 1.2 boards.

    Both CC1350 development boards (Ver1.2 and Ver 1.3) working on Packet TX/RX example. 

    Here i can't understand why my code won't work in ver1,2 boards... I have customized CC1350 boards... those boards also work perfectly on simple link examples, not my full-duplex RF code...

    If you need that RF full-duplex code i will share it with you... 

    kindly help to solve the problem...(why is my code(Full duplex-RF which is working on CC1350 evaluation board ver  1.3 ) not working on my customized boards and ver1.2 development boards)..

    regards

    surya

  • Hi Surya,

    If I understand, you are now using the 7XD-7793 settings for both 1.3 snd 1.2 version of your software, right?

    Regards,

    Arthur

  • Hi

    Thanks for the reply, 

    Yes, you are correct... my code works perfectly on Ver 1.3 boards but the same code does not work in ver1.2 boards and my customized own board... kindly let me know the reason...

    regards

    surya

  • Hi Surya,

    I am still not sure as to what is not working. Is the device booting? Are you not receiving/transmitting packets? Please tell me the specifics of the problem, as it is difficult to guess what is wrong.

    Moreover, what frequency are you using, is it around 868 Mhz?

    Thank you,

    Arthur

  • Hi 

    Thanks for the reply, I will explain the problem,

    i have a code that will transmit the data which is get from UART, and  another one board received that transmitted data(packets) and print in UART,

    that code working fine at ver1.3 boards transmit the UART data and another end board received that data and print in UART. but ver 1.2 boards UART read function working it print TX success but another board does not received the data...

    i have attached rfsettings.cpp file for your reference...

    #include <driverlib/rf_mailbox.h>
    #include <driverlib/rf_common_cmd.h>
    #include <driverlib/rf_prop_cmd.h>
    #include <ti/drivers/rf/RF.h>
    #include <rf_patches/rf_patch_cpe_genfsk.h>
    #include <rf_patches/rf_patch_rfe_genfsk.h>
    #include "smartrf_settings.h"

    // TI-RTOS RF Mode Object
    RF_Mode RF_prop =
    {
    .rfMode = RF_MODE_PROPRIETARY_SUB_1,
    .cpePatchFxn = &rf_patch_cpe_genfsk,
    .mcePatchFxn = 0,
    .rfePatchFxn = &rf_patch_rfe_genfsk,
    };

    // Overrides for CMD_PROP_RADIO_DIV_SETUP
    static uint32_t pOverrides[] =
    {
    // override_use_patch_prop_genfsk.xml
    // PHY: Use MCE ROM bank 4, RFE RAM patch
    MCE_RFE_OVERRIDE(0,4,0,1,0,0),
    // override_synth_prop_863_930_div5.xml
    // Synth: Set recommended RTRIM to 7
    HW_REG_OVERRIDE(0x4038,0x0037),
    // Synth: Set Fref to 4 MHz
    (uint32_t)0x000684A3,
    // Synth: Configure fine calibration setting
    HW_REG_OVERRIDE(0x4020,0x7F00),
    // Synth: Configure fine calibration setting
    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,
    // Synth: Set loop bandwidth after lock to 20 kHz
    (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 (0x04B0 RAT ticks = 300 us)
    (uint32_t)0x04B00243,
    // override_phy_rx_aaf_bw_0xd.xml
    // Rx: Set anti-aliasing filter bandwidth to 0xD (in ADI0, set IFAMPCTL3[7:4]=0xD)
    ADI_HALFREG_OVERRIDE(0,61,0xF,0xD),
    // override_phy_gfsk_rx.xml
    // Rx: Set LNA bias current trim offset to 3
    (uint32_t)0x00038883,
    // Rx: Freeze RSSI on sync found event
    HW_REG_OVERRIDE(0x6084,0x35F1),
    // override_phy_gfsk_pa_ramp_agc_reflevel_0x1a.xml
    // Tx: Enable PA ramping (0x41). Rx: Set AGC reference level to 0x1A.
    HW_REG_OVERRIDE(0x6088,0x411A),
    // Tx: Configure PA ramping setting
    HW_REG_OVERRIDE(0x608C,0x8213),
    // override_phy_rx_rssi_offset_5db.xml
    // Rx: Set RSSI offset to adjust reported RSSI by +5 dB
    (uint32_t)0x00FB88A3,
    // TX power override
    // Tx: Set PA trim to max (in ADI0, set PACTL0=0xF8)
    ADI_REG_OVERRIDE(0,12,0xF8),
    (uint32_t)0xFFFFFFFF,
    };


    // CMD_PROP_RADIO_DIV_SETUP
    rfc_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup =
    {
    .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,
    .modulation.deviation = 0x7D0,
    .symbolRate.preScale = 0x6,
    .symbolRate.rateWord = 0x20000,
    .rxBw = 0x32,
    .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,
    .txPower = 0xAB3F,
    .pRegOverride = pOverrides,
    .centerFreq = 0x0393,
    .intFreq = 0x8000,
    .loDivider = 0x05,
    };

    // 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 = 0x0393,
    .fractFreq = 0x0000,
    .synthConf.bTxMode = 0x0,
    .synthConf.refFreq = 0x0,
    .__dummy0 = 0x00,
    .__dummy1 = 0x00,
    .__dummy2 = 0x00,
    .__dummy3 = 0x0000,
    };

    // CMD_PROP_TX
    rfc_CMD_PROP_TX_t RF_cmdPropTx =
    {
    .commandNo = 0x3801,
    .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,
    .pktConf.bFsOff = 0x0,
    .pktConf.bUseCrc = 0x1,
    .pktConf.bVarLen = 0x1,
    .pktLen = 0x1E, // SET APPLICATION PAYLOAD LENGTH
    .syncWord = 0x930B51DE,
    .pPkt = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    };

    // CMD_PROP_RX
    rfc_CMD_PROP_RX_t RF_cmdPropRx =
    {
    .commandNo = 0x3802,
    .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,
    .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 = 0x7D, // MAKE SURE DATA ENTRY IS LARGE ENOUGH
    .address0 = 0xAA,
    .address1 = 0xBB,
    .endTrigger.triggerType = 0x1,
    .endTrigger.bEnaCmd = 0x0,
    .endTrigger.triggerNo = 0x0,
    .endTrigger.pastTrig = 0x0,
    .endTime = 0x00000000,
    .pQueue = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx
    .pOutput = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    };

    regards

    surya

  • Hi Surya,

    Can you take a picture of both your V1.2 board and V1.3 boards side by side? With emphasis on the balun/antenna area.


    Thank you.

    Arthur

  • Hi 

    Sorry for the late reply, kindly check the below images

    regards

    surya

  • Thanks Surya,

    As you can maybe see, there is a slight HW difference on the RF side (slight capacitance and induction changes, removed inductor from V1.2). But there are not different radio settings between those boards.

    As per this thread: https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/652040/cc1350-custom-cc1350-board-frequently-missing-acknowledgements-struggling-to-receive-data , could you try changing the RF bandwidth to see if you receive anything on your 1.2/Custom boards?

    Regards,

    Arthur

  • Dear Surya, is it possible for you to send me your source code in private so that observe the behavior you describe? I still have not been able to reproduce that issue.

    Thanks,

    Arthur