Part Number:LP-CC2652R7
我们的应用场景是用Proprietary RF Radio 在2.4 G频段
快速跳频如在2401到2408 ,使用命令为:
int JumpChannel(RF_Handle rfHandle,uint8_t channel,rfc_CMD_FS_t* pCmdFs){if(channel < 1 || channel>80){printf("CHN err:%d\n",channel);return -1;}pCmdFs->status = 0;pCmdFs->startTrigger.triggerType = TRIG_NOW;pCmdFs->startTrigger.pastTrig= 1;//A trigger in the past is triggered as soon as possible// pCmdFs->synthConf.bTxMode= 1;//Start synth in TX modepCmdFs->frequency= 2400 + channel;//The frequency in MHz to tune to.pCmdFs->fractFreq= 0 ; uint32_t start_tm = RF_getCurrentTime();RF_EventMask result = RF_runCmd(rfHandle, (RF_Op*)pCmdFs,RF_PriorityNormal, NULL, RF_EventLastCmdDone);if(result != RF_EventLastCmdDone){RF_printRunCmdResult(result);return -1;}uint32_t diff = RF_getCurrentTime() - end_tm;return 0; }
输出为:
JMP TO CHN:67 use 580 us
JMP TO CHN:68 use 550 us
JMP TO CHN:69 use 580 us
JMP TO CHN:70 use 580 us
JMP TO CHN:71 use 580 us
JMP TO CHN:72 use 580 us
JMP TO CHN:73 use 580 us
JMP TO CHN:74 use 611 us
JMP TO CHN:75 use 550 us
JMP TO CHN:76 use 580 us
JMP TO CHN:77 use 580 us
JMP TO CHN:78 use 580 us
JMP TO CHN:79 use 580 us
JMP TO CHN:80 use 580 us
这个速度达不到系统要求,
想问一下是不是有什么快速切换频率的命令。
Alex Zhang:
您好,我需要花一些时间来跟进您这边的问题,谢谢
,
Bright Z:
谢谢您的回复,另就是我在看SDK的代码发现有一个ImmediateCmd :CMD_MODIFY_FS
int ModifyChannel(RF_Handle rfHandle,uint8_t channel){rfc_CMD_MODIFY_FS_t cmdModifyFs ={.commandNo = CMD_MODIFY_FS,.frequency = 2400 + channel,.fractFreq = 0};uint32_t start_tm = RF_getCurrentTime();RF_Stat status = RF_runImmediateCmd(rfHandle, (uint32_t*)&cmdModifyFs);if(RF_StatSuccess == status){uint32_t diff = RF_getCurrentTime() - start_tm;printf("Modify TO CHN:%d use %d us\n",channel,(diff+3)/4);}else{RF_printCmdStat(status);}return (int)status; }我尝试了一下如上面的代码,系统老是返回:RF_StatInvalidParamsError,
想问一下这个命令执行前提是什么?是RF_postCmd RX或TX后异步执行?
希望您能指导一下。
,
Alex Zhang:
RF_getCurrentTime 以每微秒 4 个滴答或 0.25 微秒返回 无线电定时器 (RAT) 操作,这需要在计算中考虑在内(除以 4 以获得微秒单位)
在更改频道之前取消所有现有/排队的 RF 命令。
RF_cancelCmd 和 RF_flushCmd 应该足以中止任何 RF 活动。
RF_pendCmd 将返回 RF_EventCmdCancelled、RF_EventCmdAborted 或 RF_EventCmdStopped,具体取决于调用取消/刷新之前命令的状态。
如果没有为频率合成器保留足够的时间来完成更改,则可能会出现无线电问题。RF_yield 必须用于关闭 RF 内核以在其唤醒后强制执行新的设置命令。只有第一个RF句柄完全关闭后,才能 使用CMD_FS命令改变频道
以下是指向RFCC26X2.h和Rf_driver的 rflib API 的链接,这是一个相关的 E2E 帖子,其中包含建议的切换方法:https://e2e.ti.com/f/1/t/1124734
,
Alex Zhang:
您好,新的问题,请您这边从新发帖,便于我们这边论坛的管理,以及大家的二次检索,谢谢
,
Bright Z:
谢谢您的回复
在计算跳频所需的时间是除以 4了
我们的测试用例 仅仅是更改RF频率,可以保证队列中没有其它RF命令
执行命令是使用的RF_runCmd 其应该是可以保证命令同步执行完成的。我想知道单从芯片特性来讲,切换一次频率(正确的操作方式)所使用的时间,其min 和 max 值分别是多少?您这边有相关的数据吗?
,
Bright Z:
2401Mhz – 2480Mhz每1m 为一个channel , 理论上能实现200us内随机channel调频吗?
,
Alex Zhang:
这些链接以及文档您这边参考 了吗?
关于您的问题,我需要一些时间来回复您,稍等一下
,
Alex Zhang:
TI不描述频率变化延迟。 涉及所用PHY,所选数据速率和晶体稳定性的因素多种多样。 我们鼓励客户使用上述说明评估其设置。