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