工具/软件:TI-RTOS
我们目前正在进行 CC1312项目。
这是使用[节点集中器]基本示例进行的。
我希望在使用节点和集中器时动态更改频率。 (921MHz、922MHz、923MHz)
为此、我继续执行以下设置。
首先、我使用 Smart RF Studio 设置价值。
// //由 SmartRF Studio 版本2.11.0 (内部版本号126)生成 //应用的模板与 CC13x2 SDK 2.20.xx.xx 兼容 //器件:CC1312R 修订版1.1 // ********* // //参数摘要 //地址:0 //地址0:0xAA //地址1:0xBB //地址模式:无地址检查 //频率:921.00000 MHz //数据格式:串行模式禁用 //偏差:5.000 kHz // IEEE 802.15.4数据包长度:30 // 802.15.4g 模式:0 //选择发送 PSDU 八位字节的位顺序: 1 //数据包长度配置:变量 //最大数据包长度:255 //数据包长度:30 //数据包数据:255 //前导码计数:2字节 //前导码模式:发送0作为第一个前导码位 // RX 滤波器带宽:34.1kHz //符号速率:19.99969 kBaud //同步字: 0x930b51de //同步字长度:32位 // TX 功率:14dBm (需要在 ccfg.c 中定义 CCFG_FORCE_VDDR_HH = 1、请参阅 CC13xx/CC26xx 技术参考手册) //提示:CC1101/CC2500兼容 #include #include DeviceFamily_constructPath (driverlib/rf_mailbox.h) #include DeviceFamily_constructPath (driverlib/rf_common_cmd.h) #include DeviceFamily_constructPath (driverlib/rf_prop_cmd.h) #include #include DeviceFamily_constructPath (rf_patches/rf_patch_cpe_prop.h) #include DeviceFamily_constructPath (rf_patches/rf_patch_rfe_genfsk.h) #include DeviceFamily_constructPath (rf_patches/rf_patch_mce_sl_longrprop.h) #include "smartrf_mode_rf_rf_rf_mware/rf_rth )#include "rf_mode.h = rf_rf_rtos"= rf_ rfMode = RF_MODE_AUTO、 .cpePatchFxn =&rf_patch_cpe_prop、 .mcePatchFxn =&rf_patch_mce_sl_longrange、 .rfePatchFxn =&rf_patch_rfe_genfsk 、}; //覆盖 CMD_PROP_RADIO_DIV_SETUP UINT32_t pOverrides[]= { // override_use_patch_simplelink_long_range.xml // PHY:使用 MCE RAM 补丁、RFE RAM 补丁 MCE_RFE_OVERRIDE (1、0、0、1、0、0)、 // PHY:仅对 Rx (0xE)使用 MCE RAM 补丁、对 Tx (0x6)使用 MCE ROM 组6 (uint32_t) 0x006E88E3、 // override_synth_prop_863_930_div5.xml //合成:使用48MHz 晶体作为同步时钟、启用额外的 PLL 滤波 (uint32_t) 0x02400403、 //合成:将最小 RTRIM 设置为6 (uint32_t) 0x00068793、 //合成:配置额外的 PLL 滤波 (uint32_t) 0x001C8473、 //合成:配置额外的 PLL 滤波 (uint32_t) 0x00088433、 //合成:将频率设置为4MHz (uint32_t) 0x000684A3、 //合成:配置更快的校准 HW32_array_override (0x4004、1)、 //合成:配置更快的校准 (uint32_t) 0x180C0618、 //合成:配置更快的校准 (uint32_t) 0xC00401A1、 //合成:配置更快的校准 (uint32_t) 0x00010101、 //合成:配置更快的校准 (uint32_t) 0xC0040141、 //合成:配置更快的校准 (uint32_t) 0x00214AD3、 //合成:将同步编程超时从默认值减少90us (0x0298 RAT 节拍= 166us) (uint32_t) 0x02980243、 //合成:将锁定后的环路带宽设置为20kHz (uint32_t) 0x0A480583、 //合成:将锁定后的环路带宽设置为20kHz (uint32_t) 0x7AB80603、 //合成:将锁定后的环路带宽设置为20kHz (uint32_t) 0x00000623、 // override_phy_simplelink_long_range_dsss2.xml // PHY:为有效载荷数据配置 DSSS SF=2 HW_REG_OVERRIDE (0x5068、0x0100)、 // PHY:设置 SimpleLink 远距离位反转同步字模式(未编码、在扩展到固定大小的64位模式之前):0x146F HW_REG_OVERRIDE (0x5128、0x146F)、 // PHY:设置 SimpleLink 远距离同步字模式(未编码、在扩展到固定大小的64位模式之前):0xEB90 HW_REG_OVERRIDE (0x512C、0xEB90)、 // PHY:降低解调器相关器阈值以提高 Rx 灵敏度 HW_REG_OVERRIDE (0x5124、0x362E)、 // PHY:降低解调器相关器阈值以提高 Rx 灵敏度 HW_REG_OVERRIDE (0x5118、0x004C)、 // PHY:配置频率偏移补偿跟踪器的限制 HW_REG_OVERRIDE (0x5140、0x3E05)、 // override_phy_rx_frontend_simplelink_long_range.xml // Rx:设置 RSSI 偏移以将报告的 RSSI 调整-2dB (默认值:0)、针对外部偏置和差分配置进行了修整 (uint32_t) 0x000288A3、 // override_phy_rx_aaf_bw_0xd.xml // Rx:将抗混叠滤波器带宽设置为0xD (在 ADI0中、设置 IFAMPCTL3[7:4]=0xD) ADI_HALFREG_OVERRIDE (0、61、0xF、0xD)、 // TX 功率覆盖 //直流/直流稳压器:在具有14dBm PA 设置的 Tx 中、使用 DCDCCTL5[3:0]= 0xF (DITHER _EN = 1和 IPEAK = 7)。 在 Rx 中、使用 DCDCCTL5[3:0]=0xC (DITHER _EN=1和 IPEAK_=4)。 (uint32_t) 0xFFFC08C3、 // Tx:将 PA 修整设置为最大值以最大化其输出功率(在 ADI0中、设置 PACTL0=0xf8) ADI_REG_OVERRIDE (0、12、0xF8)、 (uint32_t) 0xFFFFFFFF }; // CMD_PROP_RADIO_DIV_SETUP //针对所有频带的专有模式无线电设置命令 RFC_CMD_PROP_RADIO_DIV_SETUP_t RF_PropcmdletRadioDivSetup = { .commandNo = 0x3807、 .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、 .modulation.deviation = 0x14、 .modulation.deviationStepSz = 0x0、 symbolRate.prescale = 0xF、 symbolRate.rateWord = 0x3333、 .symbolRate.decimMode = 0x0、 .rxBw = 0x4C、 .PreambBytes = 0x2、 .Conf.前置 放大器模式= 0x0、 .formatConf.nSwBits = 0x20、 .formatConf.bBitVersal = 0x0、 .formatConf.bMsbFirst = 0x0、 formatConf.fecMode = 0x8、 formatConf.whitenMode = 0x1、 .config.frontEndMode = 0x0、 config.biasMode = 0x1、 config.analogCfgMode = 0x0、 config.bNoFsPowerUp = 0x0、 TxPower = 0x9F3F、 .pRegOverride = pOverrides、 .centerFreq = 0x0399、 .intFreq = 0x8000、 .loDivider = 0x05 }; // 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 = 0x0399、 fractFreq = 0x0000、 synthConf.bTxMode = 0x0、 .synthConf.refFreq = 0x0、 .__dummy0 = 0x00、 .__dummy1 = 0x00、 .__dummy2=0x00, .__dummy3 = 0x0000 }; // 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 = 0x930B51DE、 .maxPktLen = 0xFF、 .address0 = 0xAA、 .address1 = 0xBB、 endTrigger.triggerType = 0x1、 .endTrigger.bEnaCmd = 0x0、 .endTrigger.triggerNo = 0x0、 .endTrigger.PastTrig = 0x0、 .EndTime = 0x00000000、 .pQueue = 0、//插入适用的指针:(dataQueue_t*)&xxx .pOutput = 0 //插入适用的指针:(uint8_t*)&xxx }; // 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 = 0x1E、 syncdWord = 0x930B51DE、 .pPKT = 0 //插入适用的指针:(UINT8_t*)&xxx };
然后、我使用以下函数在程序中动态更改频率。
-EasyLink_setFrequency (921000000); //设置频率(921Mhz)
-EasyLink_setFrequency (922000000); //设置频率(922Mhz)
-EasyLink_setFrequency (923000000); //设置频率(923Mhz)
1.我在 SmartRF Studio (settings、c files)中的设置是否有问题?
2.只需调用 EasyLink_setFrequency、使用3个频率是否有任何问题? 这是正确的使用方式吗?
是否有用于对射频内核进行去初始化的函数? (我想使用 EasyLink_deinit()/ EasyLink_Close 等功能)
谢谢
