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.

CC1310: Wide-Band DSSS and FEC

Part Number: CC1310

Hi forum

I would like to operate CC1310 in wideband DSSS mode and FEC turned on @ 500 kbps...

I have setup my 2 boards as follows:

RF_Mode RF_prop =
{
 .rfMode = RF_MODE_PROPRIETARY_SUB_1
 .cpePatchFxn = &rf_patch_cpe_genfsk,
 .mcePatchFxn = &rf_patch_mce_wb_dsss,
 .rfePatchFxn = 0,
};

// Overrides for CMD_PROP_RADIO_DIV_SETUP
uint32_t pOverrides[] =
{
    MCE_RFE_OVERRIDE(1, 0, 0, 0, 4, 0), // MCE run from RAM, No RFE patch (PA ramping)
    //MCE_RFE_OVERRIDE(1, 0, 0, 1, 0, 0), // MCE and RFE run from patch, PA ramp patch applied
    HW32_ARRAY_OVERRIDE(0x6088,1),
    (uint32_t)0x0000001A,
    HW32_ARRAY_OVERRIDE(0x4038,1),
    (uint32_t)0x00000037,
    HW_REG_OVERRIDE(0x4020,0x7F00),
    HW_REG_OVERRIDE(0x4064,0x0040),   
    (uint32_t)0x684A3,   // Synth: Set FREF = 4 MHz (24 MHz / 6)
    (uint32_t)0xC0040141,
    (uint32_t)0x0533B107,
    (uint32_t)0x0A480583,
    (uint32_t)0x7AB80603,
    (uint32_t)0x02010403,
    (uint32_t)0x00108463,
    (uint32_t)0x04B00243,
    ADI_REG_OVERRIDE(1,4,0x1F),
    ADI_HALFREG_OVERRIDE(1,7,0x4,0x4),
    HW_REG_OVERRIDE(0x6084,0x35F1),
    (uint32_t)0x00038883,
    (uint32_t)0x00FB88A3,
    HW_REG_OVERRIDE(0x6088,0x1F0E), // AGC reference level
    HW_REG_OVERRIDE(0x608C,0x3F13), //PA ramping
    // TX power override
    ADI_REG_OVERRIDE(0,12,0xF9),
    // Overrides for LRM
    HW_REG_OVERRIDE(0x52AC,0x0B03), //DSSS = 4, K=4
    HW_REG_OVERRIDE(0x5108,0x0048), //Correlator Threshold for Sync
    //HW_REG_OVERRIDE(0x50F4,0x5014),
    //HW_REG_OVERRIDE(0x50F8,0x0050),
    ADI_REG_OVERRIDE(1,0x12,0x22),  //Enable RX_OUTQP to ATEST0 and RX_OUTIN to ATEST 1
    (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 = 0x0,          //Changed for LRM mode
    .modulation.deviation = 0x2bc,      //0x2bc, 175KHz deviation (250*100)
    .symbolRate.preScale = 0xf,         //0xf, Prescalar value of 15
    .symbolRate.rateWord = 0x50000,     //0x50000, 500kbps with prescalar of 15.
    .rxBw = 0x2F,                       //1410KHz bandwidth
    .preamConf.nPreamBytes = 0x4,      
    .preamConf.preamMode = 0x0,
    .formatConf.nSwBits = 0x20,         //32 bit Sync word
    .formatConf.bBitReversal = 0x0,
    .formatConf.bMsbFirst = 0x0,        //LSB transmitted first for LRM mode
    .formatConf.fecMode = 0x0,          //Uncoded
    .formatConf.whitenMode = 0x0,
    .config.frontEndMode = 0x0,         //Differential
    .config.biasMode = 0x1,             //External Bias
    .config.bNoFsPowerUp = 0x0,
    .txPower = 0xa73f,
    .pRegOverride = pOverrides,
    .centerFreq = 915,
    //.intFreq = 0x8000,                  //TX IF default, 1MHz IF for RX
    .intFreq = 0x0064,                  //TX IF default, 1MHz IF for RX
    .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 = 915,             //915MHz frequency
    .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 = 0x333C3C33,
    .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 = 0x1,
    .rxConf.bAutoFlushCrcErr = 0x1,
    .rxConf.bIncludeHdr = 0x1,
    .rxConf.bIncludeCrc = 0x0,
    .rxConf.bAppendRssi = 0x1,
    .rxConf.bAppendTimestamp = 0x0,
    .rxConf.bAppendStatus = 0x1,
    .syncWord = 0x333C3C33,
    .maxPktLen = 100, // 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
};

I now want to change the DSSS settings to SF=8 and Turn the FEC to on,

as you can see in my settings that right now I have SF=4 and FEC=off (uncoded)

I want to take advange to FEC and DSSS=8 at the same time 

pleaes guide me

Best Regards

Ali