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.

CC1352R: SDK compatibility

Part Number: CC1352R

Hello,

I'd like to know if CC1352 with revision "XCC1352 - R1F3 - TI 79J - PH2F G4" is compatible with sdk_2_30_00_45 ?

Because with the sdk 2_30_00_45, the rf command "RF_runCmd" never returns but it's working with sdk 2.10.00.48

Thank you for your help

Environment

LAUNCHXL-CC1352R1

sdk 2.10.00.48

2.4Ghz IEEE 802.15.4

  • Hi

    If the device works with rev. 2.10 it will also work with rev. 2.30. It is only rev. E of the device that only works with 2.40:

    Have you written your own code? To debug this further I would recommend that you test one of the rf examples that comes with the SDK and run it without modifications to see if you see the same problems there. You can for example test the rfPacketTX example.

    BR

    Siri

  • Hello,

    yes i have my own code I work in 2.4Ghz IEEE 802.15.4.

    I tried the rfPacketTX example with the sdk 2.30 (with settings generated by smartRFstudio 2.12.1 in order to work in 2.4Ghz IEEE 802.15.4 - I enclosed the files) and it's not working (stuck in RunCmd).

    And after I ran exactly the same example with the sdk 2.10 and it's working perfectly. Do you know if there are regression in the sdk 2.30 for 2.4Ghz IEEE 802.15.4 ??

    Thank you for your help

    Environment

    LAUNCHXL-CC1352R1

    sdk 2.10.00.48

    2.4Ghz IEEE 802.15.4

    5775.smartrf_settings.h

  • //*********************************************************************************
    // Generated by SmartRF Studio version 2.12.1 (build#160)
    // The applied template is compatible with CC13x2 SDK 2.40.xx.xx
    // Device: CC1352R Rev. C (1.1)
    //
    //*********************************************************************************
    
    
    //*********************************************************************************
    // Parameter summary
    // IEEE Channel: 14 
    // Frequency: 2420 MHz
    // SFD: 0 
    // Packet Data: 255 
    // Preamble      (32 bit): 01010101... 
    // TX Power: 5 dBm (requires define CCFG_FORCE_VDDR_HH = 0 in ccfg.c, see CC13xx/CC26xx Technical Reference Manual)
    
    #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_ieee_cmd.h)
    #include <ti/drivers/rf/RF.h>
    #include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_ieee_802_15_4.h)
    #include DeviceFamily_constructPath(rf_patches/rf_patch_mce_ieee_802_15_4.h)
    #include "smartrf_settings.h"
    
    
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_ieee_802_15_4,
        .mcePatchFxn = &rf_patch_mce_ieee_802_15_4,
        .rfePatchFxn = 0
    };
    
    
    // TX Power table
    // The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macro is 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.
    RF_TxPowerTable_Entry txPowerTable[TX_POWER_TABLE_SIZE] =
    {
        {-21, RF_TxPowerTable_DEFAULT_PA_ENTRY(7, 3, 0, 3) },
        {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 3) },
        {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 2, 0, 6) },
        {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 2, 0, 8) },
        {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 2, 0, 11) },
        {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 2, 0, 5) },
        {-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 1, 0, 16) },
        {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 1, 0, 17) },
        {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(17, 1, 0, 20) },
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 26) },
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(28, 1, 0, 28) },
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 0, 0, 34) },
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(17, 0, 0, 42) },
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 0, 0, 54) },
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 0, 0, 74) },
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    
    // Overrides for CMD_RADIO_SETUP
    uint32_t pOverrides[] =
    {
        // override_ieee_802_15_4.xml
        // PHY: Use MCE RAM patch, RFE ROM bank 1
        MCE_RFE_OVERRIDE(1,0,0,0,1,0),
        // Synth: Use 48 MHz crystal, enable extra PLL filtering
        (uint32_t)0x02400403,
        // Synth: Configure extra PLL filtering
        (uint32_t)0x001C8473,
        // Synth: Configure synth hardware
        (uint32_t)0x00088433,
        // Synth: Set minimum RTRIM to 3
        (uint32_t)0x00038793,
        // Synth: Configure faster calibration
        HW32_ARRAY_OVERRIDE(0x4004,1),
        // Synth: Configure faster calibration
        (uint32_t)0x1C0C0618,
        // Synth: Configure faster calibration
        (uint32_t)0xC00401A1,
        // Synth: Configure faster calibration
        (uint32_t)0x00010101,
        // Synth: Configure faster calibration
        (uint32_t)0xC0040141,
        // Synth: Configure faster calibration
        (uint32_t)0x00214AD3,
        // Synth: Decrease synth programming time-out (0x0298 RAT ticks = 166 us)
        (uint32_t)0x02980243,
        // DC/DC regulator: In Tx, use DCDCCTL5[3:0]=0xC (DITHER_EN=1 and IPEAK=4). In Rx, use DCDCCTL5[3:0]=0xC (DITHER_EN=1 and IPEAK=4).
        (uint32_t)0xFCFC08C3,
        // Rx: Set LNA bias current offset to +15 to saturate trim to max (default: 0)
        (uint32_t)0x000F8883,
        // override_frontend_id.xml
        (uint32_t)0xFFFFFFFF
    };
    
    
    // CMD_RADIO_SETUP
    // Radio Setup Command for Pre-Defined Schemes
    rfc_CMD_RADIO_SETUP_t RF_cmdRadioSetup =
    {
        .commandNo = 0x0802,
        .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,
        .mode = 0x01,
        .loDivider = 0x00,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x0,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .txPower = 0x941E,
        .pRegOverride = pOverrides
    };
    
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    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 = 0x0974,
        .fractFreq = 0x0000,
        .synthConf.bTxMode = 0x1,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };
    
    
    // CMD_IEEE_TX
    // IEEE 802.15.4 Transmit Command
    rfc_CMD_IEEE_TX_t RF_cmdIeeeTx =
    {
        .commandNo = 0x2C01,
        .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,
        .txOpt.bIncludePhyHdr = 0x0,
        .txOpt.bIncludeCrc = 0x0,
        .txOpt.payloadLenMsb = 0x0,
        .payloadLen = 0x05,
        .pPayload = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
        .timeStamp = 0x00000000
    };
    
    
    // CMD_IEEE_RX
    // IEEE 802.15.4 Receive Command
    rfc_CMD_IEEE_RX_t RF_cmdIeeeRx =
    {
        .commandNo = 0x2801,
        .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,
        .channel = 0x00,
        .rxConfig.bAutoFlushCrc = 0x0,
        .rxConfig.bAutoFlushIgn = 0x0,
        .rxConfig.bIncludePhyHdr = 0x0,
        .rxConfig.bIncludeCrc = 0x0,
        .rxConfig.bAppendRssi = 0x1,
        .rxConfig.bAppendCorrCrc = 0x1,
        .rxConfig.bAppendSrcInd = 0x0,
        .rxConfig.bAppendTimestamp = 0x0,
        .pRxQ = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx
        .pOutput = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
        .frameFiltOpt.frameFiltEn = 0x0,
        .frameFiltOpt.frameFiltStop = 0x0,
        .frameFiltOpt.autoAckEn = 0x0,
        .frameFiltOpt.slottedAckEn = 0x0,
        .frameFiltOpt.autoPendEn = 0x0,
        .frameFiltOpt.defaultPend = 0x0,
        .frameFiltOpt.bPendDataReqOnly = 0x0,
        .frameFiltOpt.bPanCoord = 0x0,
        .frameFiltOpt.maxFrameVersion = 0x3,
        .frameFiltOpt.fcfReservedMask = 0x0,
        .frameFiltOpt.modifyFtFilter = 0x0,
        .frameFiltOpt.bStrictLenFilter = 0x0,
        .frameTypes.bAcceptFt0Beacon = 0x1,
        .frameTypes.bAcceptFt1Data = 0x1,
        .frameTypes.bAcceptFt2Ack = 0x1,
        .frameTypes.bAcceptFt3MacCmd = 0x1,
        .frameTypes.bAcceptFt4Reserved = 0x1,
        .frameTypes.bAcceptFt5Reserved = 0x1,
        .frameTypes.bAcceptFt6Reserved = 0x1,
        .frameTypes.bAcceptFt7Reserved = 0x1,
        .ccaOpt.ccaEnEnergy = 0x0,
        .ccaOpt.ccaEnCorr = 0x0,
        .ccaOpt.ccaEnSync = 0x0,
        .ccaOpt.ccaCorrOp = 0x1,
        .ccaOpt.ccaSyncOp = 0x1,
        .ccaOpt.ccaCorrThr = 0x0,
        .ccaRssiThr = 0x64,
        .__dummy0 = 0x00,
        .numExtEntries = 0x00,
        .numShortEntries = 0x00,
        .pExtEntryList = 0, // INSERT APPLICABLE POINTER: (uint32_t*)&xxx
        .pShortEntryList = 0, // INSERT APPLICABLE POINTER: (uint32_t*)&xxx
        .localExtAddr = 0x0000000012345678,
        .localShortAddr = 0xABBA,
        .localPanID = 0x0000,
        .__dummy1 = 0x000000,
        .endTrigger.triggerType = 0x1,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .endTime = 0x00000000
    };
    
    

  • If you have something that works with 2.10, you do not have rev. E of the device. If you do not have rev. E, you cannot use SDK 2.40 and you cannot use SmartRF Studio 2.12.0 (or newer). These versions are for rev. E only. The newest SDK you can use with an old device is 2.30, and you must use SmartRF Studio older than 2.12. to generate settings.

    If you are not able to solve it, can you try to make a small example that will work on 2.10 but not on 2.30 so that we can try to reproduce the problem on our side?

    Siri
  • I just realized that you could use rev. 2.12.1 of Studio in offline rev. C mode:

    then you can use this to generate settings for rev. C

    Siri

  • Please find enclosed the example which works on sdk 2.10 but not on sdk 2.30.

    rfPacketTx_example.zip

  • Just wanted to let you know that I have reproduced the issues you are seeing and we are looking into it.
  • All right, keep me posted

    Thank you

  • Hello Siri,

    Do you find a fix for this issue ?

    thank you for your help

  • Hi Thib,

    RF_runCmd() does not support the IEEE FB/BG feature, you need to use runScheduleCmd() instead. Also, try making the CMD_FS call a RF_runCmd() instead of RF_postCmd().
  • Hello,

    thank you for your answer but I use "runCmd" because I don't want that the function returns before the radio command be finished and I want to be sure that the command is executed when I call this function. How can I have the same behavior as "runCmd" (which works with sdk 2.10) ? Is there a plan to fix runCmd in order to work with sdk 2.30 ?

    Thank you for your help
  • Hi Thib,

    RF_runScheduleCmd() as I suggested in the last post is the equivalent for RF_runCmd() but with the more advanced scheduling features. You can also always use any "non run" command together with RF_pendCmd() to achieve the same behavior (run is basically just post/schedule + pend).

    IEEE BG/FG support was never intended for the normal RF_runCmd() / RF_postCmd() APIs and it likely just by chance that it worked for you in the 2.10 SDK. That said, there is no plans to bring the support for this to these APIs as of now.