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.

CC2650EM-5XD-RD: Can't communicate with CC2510 radio.

Part Number: CC2650EM-5XD-RD
Other Parts Discussed in Thread: CC2510, CC2650, CC2531

Hello,

I am trying to communicate with CC2510 using proprietary RF mode. I was successful in doing this using CC2650-LAUNCHPAD with the following settings in the smartrf_settings.c. So, I tried the same on our custom board which is based on CC2650EM-5XD-RD MCU but was unable to transfer any data.

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

// Overrides for CMD_PROP_RADIO_SETUP
uint32_t pOverrides[] = {
MCE_RFE_OVERRIDE(1,0,0,1,0,0),
HW_REG_OVERRIDE(0x4038,0x34),
HW_REG_OVERRIDE(0x6088,0x3F1F),
HW_REG_OVERRIDE(0x608C,0x8213),

HW32_ARRAY_OVERRIDE(0x405C,1),
(uint32_t) 0x1801F800,
HW32_ARRAY_OVERRIDE(0x402C,1),
(uint32_t) 0x00608402,
(uint32_t) 0x00000343,
(uint32_t) 0x000484a3,
(uint32_t) 0x1c8f0583,
(uint32_t) 0x1c8f0543,
(uint32_t) 0x65980603,
(uint32_t) 0x00020623,
(uint32_t) 0x659805c3,
(uint32_t) 0x000205e3,
(uint32_t) 0x02010403,
HW32_ARRAY_OVERRIDE(0x4034,1),
(uint32_t) 0x177F0408,
(uint32_t) 0x00008463,
(uint32_t) 0x00388473,
(uint32_t) 0x00F388a3,

HW_REG_OVERRIDE(0x50C8, 0x60f7), // Set PDIFLIMITRANGE=1 to avoid
// frequency sample artifacts
// causing symbol errors when receiving
// CC2510 MSK.
// HW_REG_OVERRIDE(0x50C8, 0x60ff), // Sets also PDIFLINPRED=1 
// This improves sensitivity, but
// has a negative effect on frequency tolerance.

/* Custom shaping */
(uint32_t) 0x00810083, //Enable piecewise shaper
(uint32_t) 0x001000a3, //Enable piecewise shaper
(uint32_t) 0x000000c3, //No automatic shape programming
(uint32_t) 0x000000e3, //No automatic shape programming
(uint32_t) 0x40064041, //Start shape override
(uint32_t) 0x0000b19a, //first time value pair valid_until=11, value=410
(uint32_t) 0x00013199, //second time value pair valid_until=19, value=409
(uint32_t) 0x00000000, //third time value pair valid_until=0, value=0
(uint32_t) 0x00000000, //fourth time value pair valid_until=0, value=0
(uint32_t) 0x00000000, //fifth time value pair valid_until=0, value=0
(uint32_t) 0x00000000, //sixth time value pair valid_until=0, value=0

(uint32_t)0xFFFFFFFF,
};
rfc_CMD_PROP_RADIO_SETUP_t  RF_cmdPropRadioDivSetup =
{
.commandNo = 0x3806,
.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,
.modulation.deviation = 250,
.symbolRate.preScale = 0x6,
.symbolRate.rateWord = 65536,
.rxBw = 9,
.preamConf.nPreamBytes = 0x4,
.preamConf.preamMode = 0x1,
.formatConf.nSwBits = 0x20,
.formatConf.bBitReversal = 0x1,
.formatConf.bMsbFirst = 0x1,
.formatConf.fecMode = 0x0,
.formatConf.whitenMode = 0x0,
.config.frontEndMode = 0x0,
.config.biasMode = 0x0,
.config.analogCfgMode = 0x0,
.config.bNoFsPowerUp = 0x0,
.txPower = 0x4214,//0x4214 = +1dBm
.pRegOverride = pOverrides,
};


// 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 = 0x0,
    .fractFreq = 0x0000,
    .synthConf.bTxMode = 1,
    .synthConf.refFreq = 0x0,
};

// 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 = 0xD391D391,
    .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 = TRIG_NOW,
    .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 = 0X1,
    .rxConf.bAppendTimestamp = 0x0,
    .rxConf.bAppendStatus = 0x1,
    .syncWord = 0xD391D391,
    .maxPktLen = 0x7d, // MAKE SURE DATA ENTRY IS LARGE ENOUGH
    .address0 = 0xaa,
    .address1 = 0xbb,
    .endTrigger.triggerType = TRIG_NEVER,
    .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
};

// CMD_TX_TEST
rfc_CMD_TX_TEST_t RF_cmdTxTest =
{
        .commandNo = 0x0808,
        .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,
        .config.bUseCw = 0x0,
        .config.bFsOff = 0x0,
        .config.whitenMode = 0x2,
        .__dummy0 = 0x00,
        .txWord = 0xabcd,
        .__dummy1 = 0x00,
        .endTrigger.triggerType = 0x1,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .syncWord = 0x930b51de,
        .endTime = 0x00000000,
};

I am not able to figure out the issue. Can anyone please help?

Thanks
Rahul