Other Parts Discussed in Thread: CC2544, CC2541
We need to implement a radio link between the existing CC2544 dongle and the new CC2640R2F prototype.
Bitrates with GFSK modulation, which CC2544 supports:
- 250 kbps,160 kHz deviation;
- 1 Mbps,160 kHz deviation;
- 1 Mbps, 250 kHz deviation;
- 2 Mbps, 320 kHz deviation;
- 2 Mbps, 500 kHz deviation.
On the CC2640R2F side we were able to realize only 250 kbps with a 160 kHz deviation. The source code fragment attached.
But we need to increase the bitrate to 2 Mbps or at least to 1 Mbps.
We ask you to give us the appropriate settings for a proprietary radio mode commands: 0x3806, 0x0803, 0x3801, 0x3802.
More, if possible, we would like to see the radio communication between two CC2640R2F chips at a 5 Mbps speed.
// Overrides for CMD_PROP_RADIO_SETUP uint32_t pOverrides[] = { (uint32_t)0xFFFFFFFF, }; // CMD_PROP_RADIO_SETUP 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 = 0x1,// 0: FSK, 1: GFSK, Others: Reserved .modulation.deviation = 640,//Deviation (250-Hz steps) for FSK modulations .symbolRate.preScale = 15,//p is the prescaler value, given by symbolRate.preScale, which can be from 4 to 15 .symbolRate.rateWord = 163840,//Fbaud = (R ◊ Fclk) / (p ◊ 2^20), Fclk is the system clock frequency of 24 MHz .rxBw = 10, .preamConf.nPreamBytes = 0x4, .preamConf.preamMode = 0x0, .formatConf.nSwBits = 32, .formatConf.bBitReversal = 0x1, .formatConf.bMsbFirst = 0x1, .formatConf.fecMode = 0x0, .formatConf.whitenMode = 0x0, .config.frontEndMode = 0x0, .config.biasMode = 0x0, //!< \brief 0: Internal bias, R2 skal ha internal .config.analogCfgMode = 0x0, .config.bNoFsPowerUp = 0x0, .txPower = 0xAB3F,//0xAB3F: 0 Db .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 = 2379, .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 = 0x20,// SET APPLICATION PAYLOAD LENGTH .syncWord = 0x29417671, .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 = 0x0, .rxConf.bAutoFlushCrcErr = 0x0, .rxConf.bIncludeHdr = 0x1, .rxConf.bIncludeCrc = 0x0, .rxConf.bAppendRssi = 0x0, .rxConf.bAppendTimestamp = 0x0, .rxConf.bAppendStatus = 0x1, .syncWord = 0x29417671, .maxPktLen = 0x7d, // MAKE SURE DATA ENTRY IS LARGE ENOUGH .address0 = 0x00, .address1 = 0x00, .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 };