This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LP-CC2652R7: Proprietary RF Radio调频需要多长时间?什么方法能最快的调频?在200us内

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 mode
    pCmdFs->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

这个速度达不到系统要求,

想问一下是不是有什么快速切换频率的命令。

  • 您好,我需要花一些时间来跟进您这边的问题,谢谢

  • 谢谢您的回复,另就是我在看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后异步执行?

    希望您能指导一下。

  • 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.hRf_driver的 rflib API 的链接,这是一个相关的 E2E 帖子,其中包含建议的切换方法:https://e2e.ti.com/f/1/t/1124734
  • 您好,新的问题,请您这边从新发帖,便于我们这边论坛的管理,以及大家的二次检索,谢谢

  • 谢谢您的回复

    • 在计算跳频所需的时间是除以 4了
    • 我们的测试用例 仅仅是更改RF频率,可以保证队列中没有其它RF命令
    • 执行命令是使用的RF_runCmd  其应该是可以保证命令同步执行完成的。

    我想知道单从芯片特性来讲,切换一次频率(正确的操作方式)所使用的时间,其min  和 max  值分别是多少?您这边有相关的数据吗?

  • 2401Mhz - 2480Mhz每1m 为一个channel , 理论上能实现200us内随机channel调频吗? 

  • 这些链接以及文档您这边参考 了吗?

    关于您的问题,我需要一些时间来回复您,稍等一下

  • TI不描述频率变化延迟。 涉及所用PHY,所选数据速率和晶体稳定性的因素多种多样。 我们鼓励客户使用上述说明评估其设置。