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.

  • Answer Suggested

CC1310: WOR example rfWakeOnRadioTx_CC1310_LAUNCHXL_tirtos_ccs not working with 2.4kbps datarate

Intellectual 570 points

Replies: 21

Views: 416

Part Number: CC1310

WOR example rfWakeOnRadioTx_CC1310_LAUNCHXL_tirtos_ccs works with given Default RF setting. 

On receiving side there is Smart RF studio with same RF setting. 

But on changing RF setting in code to 2.4kbps as shown bellow and similar setting applied to smart RF studio RF communication is not working. Using SDK 3.10

//*********************************************************************************
// Generated by SmartRF Studio version 2.12.0 (build#147)
// The applied template is compatible with CC13x0 SDK 2.30.xx.xx
// Device: CC1310 Rev. B (2.1)
//
//*********************************************************************************


//*********************************************************************************
// Parameter summary
// RX Address0: 0xAA 
// RX Address1: 0xBB 
// RX Address Mode: No address check 
// Frequency: 868.00000 MHz
// Data Format: Serial mode disable 
// Deviation: 5.250 kHz
// Packet Length Config: Variable 
// Packet Length: 20 
// Packet Data: 255 
// RX Filter BW: 49 kHz
// Symbol Rate: 2.40021 kBaud
// Sync Word Length: 32 Bits 
// TX Power: 14 dBm (requires define CCFG_FORCE_VDDR_HH = 1 in ccfg.c, see CC13xx/CC26xx Technical Reference Manual)
// Whitening: No whitening 

#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
#include DeviceFamily_constructPath(driverlib/rf_common_cmd.h)
#include DeviceFamily_constructPath(driverlib/rf_prop_cmd.h)
#include <ti/drivers/rf/RF.h>
#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_brepeat.h)
#include DeviceFamily_constructPath(rf_patches/rf_patch_rfe_brepeat.h)
#include DeviceFamily_constructPath(rf_patches/rf_patch_mce_brepeat.h)
#include "SRWRG_GFSK_2.4kbps_10dbm_868MHz_5.1KHzDev.h"


// TI-RTOS RF Mode Object
RF_Mode RF_prop =
{
    .rfMode = RF_MODE_PROPRIETARY_SUB_1,
    .cpePatchFxn = &rf_patch_cpe_brepeat,
    .mcePatchFxn = &rf_patch_mce_brepeat,
    .rfePatchFxn = &rf_patch_rfe_brepeat
};


// Overrides for CMD_PROP_RADIO_DIV_SETUP
uint32_t pOverrides[] =
{
    // override_use_patch_prop_brepeat.xml
    // PHY: Use MCE RAM patch, RFE RAM patch
    MCE_RFE_OVERRIDE(1,0,0,1,0,0),
    // override_synth_prop_863_930_div5_lbw60k.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 60 kHz
    (uint32_t)0x40410583,
    // Synth: Set loop bandwidth after lock to 60 kHz
    (uint32_t)0x32CC0603,
    // Synth: Set loop bandwidth after lock to 60 kHz
    (uint32_t)0x00010623,
    // 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_synth_disable_bias_div5.xml
    // Synth: Set divider bias to disabled
    HW32_ARRAY_OVERRIDE(0x405C,1),
    // Synth: Set divider bias to disabled (specific for loDivider=5)
    (uint32_t)0x18000200,
    // override_phy_tc189.xml
    // Rx: Set RSSI offset to adjust reported RSSI by +5 dB (default: 0), trimmed for external bias and differential configuration
    (uint32_t)0x00FB88A3,
    // Rx: Set anti-aliasing filter bandwidth to 0xD (in ADI0, set IFAMPCTL3[7:4]=0xD)
    ADI_HALFREG_OVERRIDE(0,61,0xF,0xD),
    // Tx: Configure PA ramping setting (0xC1) for approximately 210 us PA ramp time. Rx: Set AGC reference level to 0x18.
    HW_REG_OVERRIDE(0x6088,0xC118),
    // Tx: Configure PA ramping setting (0xC1) for approximately 210 us PA ramp time
    HW_REG_OVERRIDE(0x608C,0xC113),
    // Rx: Set LNA bias current trim offset to 3
    (uint32_t)0x00038883,
    // Rx: Freeze RSSI on sync found event
    HW_REG_OVERRIDE(0x6084,0x35F1),
    // No SW pream configuration from RadioDivSetup command
    (uint32_t)0x000C8103,
    // 32b SW word, repeat 8 symbol preamble 8 times
    HW_REG_OVERRIDE(0x5050,0x1F77),
    // Tx: Set Preamble pattern
    HW_REG_OVERRIDE(0x5058,0x00CC),
    // Part of Sync Word (sync0)
    HW_REG_OVERRIDE(0x510C,0xF0CF),
    // Part of Sync Word (sync1)
    HW_REG_OVERRIDE(0x5110,0xC0C3),
    // Part of Sync Word (sync2)
    HW_REG_OVERRIDE(0x5114,0xF0CF),
    // Part of Sync Word (sync3)
    HW_REG_OVERRIDE(0x5118,0xC0C3),
    // Repetition factor
    HW_REG_OVERRIDE(0x5178,0x0002),
    // Increase sync threshold
    HW_REG_OVERRIDE(0x5104,0x3030),
    // 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
// Proprietary Mode Radio Setup Command for All Frequency Bands
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 = 0x15,
    .symbolRate.preScale = 0xF,
    .symbolRate.rateWord = 0xC4A,
    .symbolRate.decimMode = 0x0,
    .rxBw = 0x21,
    .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 = 0xA73F,
    .pRegOverride = pOverrides,
    .centerFreq = 0x0364,
    .intFreq = 0x8000,
    .loDivider = 0x05
};

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

// CMD_PROP_TX
// Proprietary Mode Transmit Command
rfc_CMD_PROP_TX_t RF_cmdPropTx =
{
    .commandNo = 0x3801,
    .status = 0x0000,
    .pNextOp = 0, // 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,
    .syncWord = 0x00000000,
    .pPkt = 0 // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};


// CMD_PROP_RX
// Proprietary Mode Receive Command
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 = 0x00000000,
    .maxPktLen = 0xFF,
    .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
};


code stuck at 

   /* Send packet */
        RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropTxAdv, RF_PriorityNormal, NULL, 0);

  • Guru 240310 points

    In reply to hardik harpal:

    I have started to look into it. Not sure which override that causes this.

     OOO until September 30th. If your thread is not answered by someone after 2-3 days after your last post, please repost with a link referring to your original post. 

  • In reply to TER:

    Thanks for looking into it. I have also tried WOR Rx and WOR Tx TiRTOS example when both side 50 kbps default setting is set both example in two launchpad kit works fine when I changed 2.4kbps setting with your suggestion it is not communicating. 

  • In reply to hardik harpal:

    Did you find anything?

  • Guru 240310 points

    In reply to hardik harpal:

    I have been working 100 % on some SDK doc lately so I picked this up earlier today but haven't had enough time to figure out which override I have to change. But I'm working on it.  

     OOO until September 30th. If your thread is not answered by someone after 2-3 days after your last post, please repost with a link referring to your original post. 

  • In reply to TER:

    Hi
    I also ran into this problem. This example does not work with settings from SmartRF Studio for 625bps and 2.5kbs. Although the 5kbs works well.

    I am confused by one moment. If you run the default example (50kbps) in the rfWakeOnRadioRx_CC1310_LAUNCHXL_tirtos_ccs project, then in the variable "datarate" is set to "50000", and if you load the project for 2.5kbs, then the same variable contains the value 10000.

  • Guru 240310 points

    In reply to Belikov Artem:

    Artem: For the datarate question (10 k vs 2.5 k), see http://www.ti.com/lit/an/swra566/swra566.pdf

     OOO until September 30th. If your thread is not answered by someone after 2-3 days after your last post, please repost with a link referring to your original post. 

  • In reply to TER:

    Thank you.

  • In reply to Belikov Artem:

    Hi, Artem

    As per my understanding you tried with Long Range mode RF settings. I am not using long range mode RF settings. 

  • Guru 240310 points

    In reply to hardik harpal:

    I'm not used to decipher what the overrides mean so it took some time to understand what was going on. It looks like the overrides you got sends LSB first over the air. If I used 

    (uint32_t)0x00c48103, //no modification of SW registers, please check the other fields as well
    (uint32_t)0x00f78033, //Set one byte preamble
    (uint32_t)0x00CC8043, //Set preamble pattern to 11001100

    I manage to receive correctly with a CC1101. 

    The highlighted number is the bit that set MSB or LSB first. 

     OOO until September 30th. If your thread is not answered by someone after 2-3 days after your last post, please repost with a link referring to your original post. 

  • In reply to TER:

    With your suggested changes in firmware Tx: rfWakeOnRadioTx_CC1310_LAUNCHXL_nortos_ccs example loaded in CC1310 Launchpad,

    (uint32_t)0x00c48103, //no modification of SW registers, please check the other fields as well
    (uint32_t)0x00f78033, //Set one byte preamble
    (uint32_t)0x00CC8043, //Set preamble pattern to 11001100

    When Device Tx data I was able to receive in Smart RF studio 

    (Rx CC1310 Launchpad connected to smart RF studio).

    But when I tried to receive in Rx: rfWakeOnRadioRx_CC1310_LAUNCHXL_nortos_ccs example loaded in CC1310 Launchpad, it does not get received.


    I have used default WOR Rx and Tx example provided in SDK 3.10 and not modified code at all  just SRWRG_GFSK_2.4kbps_10dbm_915MHz_5.2KHzDev.c , SRWRG_GFSK_50kbps_10dbm_915MHz.c included in project.

    rfWakeOnRadioRx_CC1310_LAUNCHXL_nortos_ccs.rar

    rfWakeOnRadioTx_CC1310_LAUNCHXL_nortos_ccs.rar

    Test scenario 1: 868MHz 50kbps

    using default example with smartrf_settings.c(868MHz 50kbps)  and excluding  SRWRG_GFSK_2.4kbps_10dbm_915MHz_5.2KHzDev.c , SRWRG_GFSK_50kbps_10dbm_915MHz.c  from project :Working OK.

    Test scenario 2915MHz 50kbps

    using default example with SRWRG_GFSK_50kbps_10dbm_915MHz.c and  excluding smartrf_settings.c(868MHz 50kbps)  , SRWRG_GFSK_2.4kbps_10dbm_915MHz_5.2KHzDev.c from project :Working OK.

    Test scenario 3915MHz 2.4kbps

    using default example with SRWRG_GFSK_2.4kbps_10dbm_915MHz_5.2KHzDev.c and  excluding smartrf_settings.c(868MHz 50kbps)  , SRWRG_GFSK_50kbps_10dbm_915MHz.c from project :Working Not Ok. Data not received on Rx Side.

     Kindly find attached project for Rx and Tx.

    rfWakeOnRadioRx_CC1310_LAUNCHXL_nortos_ccs.rar

    rfWakeOnRadioTx_CC1310_LAUNCHXL_nortos_ccs.rar

     

     

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.