主题中讨论的其他器件: CC2544、 CC2541
我们需要在现有 CC2544软件狗和新 CC2640R2F 原型之间实现无线电链路。
采用 GFSK 调制的比特率、CC2544支持:
- 250kbps、160kHz 偏差;
- 1Mbps、160kHz 偏差;
- 1Mbps、250kHz 偏差;
- 2Mbps、320kHz 偏差;
- 2Mbps、500kHz 偏差。
在 CC2640R2F 侧、我们只能实现250kbps、偏差为160kHz。 附加的源代码片段。
但我们需要将比特率提高到2Mbps 或至少1Mbps。
我们要求您为专有无线电模式命令提供适当的设置:0x3806、0x0803、0x3801、0x3802。
如果可能、我们希望看到两个 CC2640R2F 芯片之间以5Mbps 的速度进行无线电通信。
//覆盖 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、//插入适用的指针:(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、其他:保留 .modulation.deviation = 640、// FSK 调制的偏差(250Hz 步长) symbolRate.prescale = 15、//p 是预分频器值、由 symbolRate.prescale 给出、其范围为4至15 symbolRate.rateWord = 163840、//Fbaud =(R◊Fclk)/(p◊2^20)、Fclk 为24MHz 的系统时钟频率 .rxBw = 10、 .PreambBytes = 0x4、 .Conf.前置 放大器模式= 0x0、 .formatConf.nSwBits = 32、 .formatConf.bBitVersal = 0x1、 .formatConf.bMsbFirst = 0x1、 formatConf.fecMode = 0x0、 formatConf.whitenMode = 0x0、 .config.frontEndMode = 0x0、 config.biasMode = 0x0、//!<\brief 0:内部偏置、R2 skal ha 内部 config.analogCfgMode = 0x0、 config.bNoFsPowerUp = 0x0、 TxPower = 0xAB3F、//0xAB3F:0dB .pRegOverride = pOverrides 、}; // CMD_FS RFC_CMD_FS_t RF_cmdF = { .commandNo = 0x0803、 .status = 0x0000、 .pNextOp = 0、//插入适用的指针:(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、//插入适用的指针:(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、//设置应用有效载荷长度 syncdWord = 0x29417671、 .pPKT = 0、//插入适用的指针:(uint8_t*)&xxx }; // CMD_PROP_RX RFC_CMD_PROP_RX_t RF_cmdPropRx = { .commandNo = 0x3802、 .status = 0x0000、 .pNextOp = 0、//插入适用的指针:(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、 syncdWord = 0x29417671、 .maxPktLen = 0x7d、//确保数据输入足够大 .address0 = 0x00、 .address1 = 0x00、 endTrigger.triggerType = 0x1、 .endTrigger.bEnaCmd = 0x0、 .endTrigger.triggerNo = 0x0、 .endTrigger.PastTrig = 0x0、 .EndTime = 0x00000000、 .pQueue = 0、//插入适用的指针:(dataQueue_t*)&xxx .pOutput = 0、//插入适用的指针:(uint8_t*)&xxx };