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.

[参考译文] CC2652P:时间共享使用15.4协议栈和 BLE 射频接口。 使用15.4协议栈发送数据或搜索网络时、它将输入"Main_exHandler "

Guru**** 2455840 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1034531/cc2652p-time-sharing-uses-15-4-protocol-stack-and-ble-rf-interface-when-using-15-4-protocol-stack-to-send-data-or-search-network-it-will-enter-main_exchandler

器件型号:CC2652P

如果 BLE 射频接口未睡眠、则不会出现例外情况。 只需在 BLE RF 中设置睡眠、然后使用15.4协议栈将 CPU 置于"Main_excHandler"。中

SDK 版本为4.40.4.04。

BLE 射频代码:

void ble_nc_adv_tx(void)
{
    static uint16_t ble_tx_seq = 0;

    static RF_Object rfObject;
    static RF_Handle rfHandle = 0;
    RF_InfoVal val;

    uint8_t chan = 1;

    RF_Params rfParams;
    RF_Params_init(&rfParams);

    ble_adv_aoa_t *p_ble_aoa = (ble_adv_aoa_t *)ble_aoa_buf;

    p_ble_aoa->user_header = 0x9527;
    p_ble_aoa->tag_id = product_sn.card_id;
    p_ble_aoa->seq = ble_tx_seq++;
    p_ble_aoa->ble_period_10ms = ble_period_ms / 10;
    p_ble_aoa->activity_flag = 0;

    // 求和
    uint8_t sum = 0;
    for (uint8_t i = 0; i < sizeof(ble_adv_aoa_t) - 20 - 1; i++)
    {
        sum += ble_aoa_buf[i];
    }

    p_ble_aoa->sum_check = sum;

    memcpy(p_ble_aoa->tone, tone_dat[chan], 20);

    /* Request access to the radio */
    if(rfHandle == 0)
    {
       //rfParams.nInactivityTimeout = 100;
        rfHandle = RF_open(&rfObject, &RF_prop_bt5le1madvnc_0, (RF_RadioSetup*)&RF_cmdBle5RadioSetup_bt5le1madvnc_0, &rfParams);

        RF_ScheduleCmdParams_init(&schParams_ble);
        //schParams_ble.priority    = RF_PriorityNormal;
        schParams_ble.endTime     = 0;
        schParams_ble.allowDelay  = RF_AllowDelayAny;
    }

    /* Set the frequency */
    RF_cmdFs_bt5le1madvnc_0.frequency = RFfrequencyTable_ble[chan].frequency;
    RF_cmdFs_bt5le1madvnc_0.fractFreq = RFfrequencyTable_ble[chan].fractFreq;
    RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs_bt5le1madvnc_0, RF_PriorityNormal, NULL, 0);
    //RF_scheduleCmd(rfHandle, (RF_Op*)&RF_cmdFs_bt5le1madvnc_0, &schParams_ble, NULL,0);
    RF_getInfo(rfHandle,RF_GET_RADIO_STATE,&val);
        debug_printf("++++RF_GET_RADIO_STATE:%d\r\n",val.bRadioState);

    RF_cmdBleAdvNc_bt5le1madvnc_0.pParams->advLen        = sizeof(ble_adv_aoa_t);
    RF_cmdBleAdvNc_bt5le1madvnc_0.pParams->pAdvData      = ble_aoa_buf;
    RF_cmdBleAdvNc_bt5le1madvnc_0.startTrigger.triggerType  = 0;
    RF_cmdBleAdvNc_bt5le1madvnc_0.startTrigger.pastTrig  = 1;
    RF_cmdBleAdvNc_bt5le1madvnc_0.channel                = 0xff;
    RF_cmdBleAdvNc_bt5le1madvnc_0.whitening.bOverride    = 1;
    RF_cmdBleAdvNc_bt5le1madvnc_0.whitening.init         = RFfrequencyTable_ble[chan].whitening;
    RF_cmdBleAdvNc_bt5le1madvnc_0.startTime              = 0;

    RF_runCmd(rfHandle, (RF_Op*)&RF_cmdBleAdvNc_bt5le1madvnc_0, RF_PriorityNormal, NULL, 0);
   //RF_scheduleCmd(rfHandle, (RF_Op*)&RF_cmdBleAdvNc_bt5le1madvnc_0, &schParams_ble, NULL,0);
   // RF_close(rfHandle);

    uint8_t abortGraceful = 0;
    RF_flushCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, abortGraceful);
   
    RF_yield(rfHandle);

    RF_getInfo(rfHandle,RF_GET_RADIO_STATE,&val);
   debug_printf("++++RF_GET_RADIO_STATE:%d\r\n",val.bRadioState);

}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    由于您似乎是在2个堆栈之间共享时间、是否有原因不使用 DMM (动态多协议管理器)。 您可以在 以下网址阅读有关如何使用 DMM 的更多信息:https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/dmm/dmm_user_guide/html/dmm-guide/index-cc13x2_26x2.html 

    此致、

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ?我们仅需要 BLE 来发送和接收简单数据、而无需使用 BLE 协议栈和 DMM、因此可以更灵活地发送数据、并且闪存占用的面积更小。μ A 是否有办法解决上述问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    张您好、

    您能否分享您如何将 BLE 射频设置为睡眠模式以及如何将操作切换到15.4-Stack 协议?  您是否从使用 CCS 调试器 ROV 中收集了任何其他信息?

    https://e2e.ti.com/f/1/t/882697 
    https://e2e.ti.com/f/1/t/821848 

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    void ble_nc_adv_tx(void)
    {
        static uint16_t ble_tx_seq = 0;
    
        static RF_Object rfObject;
        static RF_Handle rfHandle = 0;
        RF_InfoVal val;
    
        uint8_t chan = 1;
    
        RF_Params rfParams;
        RF_Params_init(&rfParams);
    
        ble_adv_aoa_t *p_ble_aoa = (ble_adv_aoa_t *)ble_aoa_buf;
    
        p_ble_aoa->user_header = 0x9527;
        p_ble_aoa->tag_id = product_sn.card_id;
        p_ble_aoa->seq = ble_tx_seq++;
        p_ble_aoa->ble_period_10ms = ble_period_ms / 10;
        p_ble_aoa->activity_flag = 0;
    
        // 求和
        uint8_t sum = 0;
        for (uint8_t i = 0; i < sizeof(ble_adv_aoa_t) - 20 - 1; i++)
        {
            sum += ble_aoa_buf[i];
        }
    
        p_ble_aoa->sum_check = sum;
    
        memcpy(p_ble_aoa->tone, tone_dat[chan], 20);
    
        /* Request access to the radio */
        if(rfHandle == 0)
        {
           //rfParams.nInactivityTimeout = 100;
            rfHandle = RF_open(&rfObject, &RF_prop_bt5le1madvnc_0, (RF_RadioSetup*)&RF_cmdBle5RadioSetup_bt5le1madvnc_0, &rfParams);
    
            RF_ScheduleCmdParams_init(&schParams_ble);
            //schParams_ble.priority    = RF_PriorityNormal;
            schParams_ble.endTime     = 0;
            schParams_ble.allowDelay  = RF_AllowDelayAny;
        }
    
        /* Set the frequency */
        RF_cmdFs_bt5le1madvnc_0.frequency = RFfrequencyTable_ble[chan].frequency;
        RF_cmdFs_bt5le1madvnc_0.fractFreq = RFfrequencyTable_ble[chan].fractFreq;
        RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs_bt5le1madvnc_0, RF_PriorityNormal, NULL, 0);
        //RF_scheduleCmd(rfHandle, (RF_Op*)&RF_cmdFs_bt5le1madvnc_0, &schParams_ble, NULL,0);
        RF_getInfo(rfHandle,RF_GET_RADIO_STATE,&val);
            debug_printf("++++RF_GET_RADIO_STATE:%d\r\n",val.bRadioState);
    
        RF_cmdBleAdvNc_bt5le1madvnc_0.pParams->advLen        = sizeof(ble_adv_aoa_t);
        RF_cmdBleAdvNc_bt5le1madvnc_0.pParams->pAdvData      = ble_aoa_buf;
        RF_cmdBleAdvNc_bt5le1madvnc_0.startTrigger.triggerType  = 0;
        RF_cmdBleAdvNc_bt5le1madvnc_0.startTrigger.pastTrig  = 1;
        RF_cmdBleAdvNc_bt5le1madvnc_0.channel                = 0xff;
        RF_cmdBleAdvNc_bt5le1madvnc_0.whitening.bOverride    = 1;
        RF_cmdBleAdvNc_bt5le1madvnc_0.whitening.init         = RFfrequencyTable_ble[chan].whitening;
        RF_cmdBleAdvNc_bt5le1madvnc_0.startTime              = 0;
    
        RF_runCmd(rfHandle, (RF_Op*)&RF_cmdBleAdvNc_bt5le1madvnc_0, RF_PriorityNormal, NULL, 0);
       //RF_scheduleCmd(rfHandle, (RF_Op*)&RF_cmdBleAdvNc_bt5le1madvnc_0, &schParams_ble, NULL,0);
       // RF_close(rfHandle);
    
        uint8_t abortGraceful = 0;
        RF_flushCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, abortGraceful);
       
        RF_yield(rfHandle);
    
        RF_getInfo(rfHandle,RF_GET_RADIO_STATE,&val);
       debug_printf("++++RF_GET_RADIO_STATE:%d\r\n",val.bRadioState);
    
    }
    只需添加“rf_flushCmd (rfHandle、rf_CMDHANDLE_FLUSH_ALL、ABortGraceful)”;

    rf_yield (rfHandle);”,调用15.4 stack API 将  CPU 放入"Main_excHander"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    RF_Yield 不足以完全关闭 BLE PHY 以切换到15.4-stack PHY 操作、因为它仅表示无线电客户端在一段时间内不会发出更多命令。  您将需要使用 RF_Close、以便在再次调用 RF_open 之前更改射频参数。  我还建议在冲洗前等待 RF_runCmd 的结果。  请查看 专有射频用户指南rflib API。  https://e2e.ti.com/f/1/t/963331 

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    现在、我们已删除15.4协议堆栈、仅使用射频接口进行测试。 首先、我们进入15.4模式。 按下按钮后、它将切换至"音"模式。 再次按下按钮时、它将切换到15.4模式。 在切换到15.4模式的过程中、执行"RF_runCmd (rfHandle、(RF_OP*)&RF_cmdF、RF_PriorityNormal、NULL、0);"中的代码不会返回、并将跳转到"Main_excel 处理程序"。

    SDK 版本:4.20.0.35

    BLE 模式代码:

    void ble_cfg(uint8_t chan,uint16_t br)
    {
       RF_Params rfParams;
       RF_Params_init(&rfParams);
    
       zgb2g4_close();
    
       if(rfHandle)
       {
    
           /* Request access to the radio */
           (void)RF_cancelCmd(rfHandle, rxCmdHndl, 0);//ABORT_ABRUPT
           (void)RF_pendCmd(rfHandle, rxCmdHndl, 0);
             //uint8_t abortGraceful = 1;
                    //RF_flushCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, abortGraceful);
           RF_close(rfHandle);
       }
       debug_printf("\r\nbefore ble open,firstly close:%d\r\n",rfHandle);
      // memset(&rfObject,0,sizeof(RF_Object));
       rfHandle = RF_open(&rfSnifferObject, &RF_prop, (RF_RadioSetup*)&RF_cmdBle5RadioSetup, &rfParams);
       debug_printf("\r\n ble opened:%d\r\n",rfHandle);
        /* Set the frequency */
        RF_cmdFs.frequency = RFfrequencyTable_ble[chan].frequency;
        RF_cmdFs.fractFreq = RFfrequencyTable_ble[chan].fractFreq;
        RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);
        debug_printf("\r\n ble fs:%d\r\n",rfHandle);
    
        RF_cmdBle5GenericRx.pOutput = &rxStatistics_ble;
        RF_cmdBle5GenericRx.pParams->pRxQ = &dataQueue;
        RF_cmdBle5GenericRx.pParams->bRepeat = 1;
        RF_cmdBle5GenericRx.pParams->rxConfig.bAutoFlushCrcErr = 1;
        RF_cmdBle5GenericRx.pParams->rxConfig.bAppendTimestamp = 1;
        RF_cmdBle5GenericRx.channel = 0xFF;
        RF_cmdBle5GenericRx.whitening.bOverride = 1;
        RF_cmdBle5GenericRx.whitening.init = RFfrequencyTable_ble[chan].whitening;
    
        //rx date rate
        if(br == 125)
        {
            RF_cmdBle5GenericRx.phyMode.coding = 0;
            RF_cmdBle5GenericRx.phyMode.mainMode = 2;
        }
        else if(br == 500)
        {
            RF_cmdBle5GenericRx.phyMode.coding = 1;
            RF_cmdBle5GenericRx.phyMode.mainMode = 2;
        }
        else if(br == 2000)
        {
            RF_cmdBle5GenericRx.phyMode.coding = 0;
            RF_cmdBle5GenericRx.phyMode.mainMode = 1;
        }
        else
        {
            RF_cmdBle5GenericRx.phyMode.coding = 0;
            RF_cmdBle5GenericRx.phyMode.mainMode = 0;
        }
    
        debug_printf("\r\n ble rxCmdHndl:%d\r\n",rxCmdHndl);
    
        rxCmdHndl = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdBle5GenericRx, RF_PriorityNormal, &ble_rx_callback, RF_EventRxEntryDone);
        debug_printf("\r\n ble rx:%d\r\n",rfHandle);
    }
    
    void ble_close(void)
    {
        debug_printf("\r\n close ble start:%d\r\n",rfHandle);
        if(rfHandle)
       {
    
           /* Request access to the radio */
           (void)RF_cancelCmd(rfHandle, rxCmdHndl, 0);//ABORT_ABRUPT
           (void)RF_pendCmd(rfHandle, rxCmdHndl, 0);
           //uint8_t abortGraceful = 1;
          // RF_flushCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, abortGraceful);
           RF_close(rfHandle);
           //rfHandle = 0;
       }
    
        debug_printf("\r\n close ble end:%d\r\n",rfHandle);
    }
    
    void ble_init(void)
    {
        ble_cfg(ble_wireless_param.chan_vlaue,ble_wireless_param.data_rata);
    }

    15.4模式代码:

    void zgb2g4_cfg(uint8_t chan,uint16_t br)
    {
       RF_Params rfParams;
       RF_Params_init(&rfParams);
    
       ble_close();
    
       if(rfHandle)
       {
           /* Request access to the radio */
           (void)RF_cancelCmd(rfHandle, rxCmdHndl, 0);//ABORT_ABRUPT
           (void)RF_pendCmd(rfHandle, rxCmdHndl, 0);
           //uint8_t abortGraceful = 1;
          //RF_flushCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, abortGraceful);
           RF_close(rfHandle);
       }
       debug_printf("\r\nbefore zgb open,firstly close:%d\r\n",rfHandle);
    
       rfHandle = RF_open(&rfSnifferObject, &RF_prop, (RF_RadioSetup*)&RF_cmdRadioSetup, &rfParams);
       debug_printf("\r\n zgb opened:%d\r\n",rfHandle);
        /* Set the frequency */
        RF_cmdFs.frequency = 2405 + 5*(chan -11);//RFfrequencyTable_ble[chan].frequency;
        RF_cmdFs.fractFreq = 0;//RFfrequencyTable_ble[chan].fractFreq;
        RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);
        debug_printf("\r\n zgb fsed:%d\r\n",rfHandle);
    
        RF_cmdIeeeRx.pOutput = &rxStatistics_zgb_2g4;
        RF_cmdIeeeRx.pRxQ = &dataQueue;
        RF_cmdIeeeRx.rxConfig.bIncludePhyHdr = 1;
        RF_cmdIeeeRx.rxConfig.bAppendRssi = 1;
        RF_cmdIeeeRx.rxConfig.bAppendCorrCrc = 0;
        RF_cmdIeeeRx.rxConfig.bAppendTimestamp = 1;
    
        debug_printf("\r\nzgb rxCmdHndl:%d\r\n",rxCmdHndl);
    
        rxCmdHndl = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdIeeeRx, RF_PriorityNormal, &zgb_2g4_rx_callback, RF_EventRxEntryDone);
        debug_printf("\r\n zgb rxed:%d\r\n",rfHandle);
    }
    
    void zgb2g4_close(void)
    {
        debug_printf("\r\n close zgb start:%d\r\n",rfHandle);
        if(rfHandle)
        {
    
          /* Request access to the radio */
          (void)RF_cancelCmd(rfHandle, rxCmdHndl, 0);//ABORT_ABRUPT
          (void)RF_pendCmd(rfHandle, rxCmdHndl, 0);
                  //uint8_t abortGraceful = 1;
                  //RF_flushCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, abortGraceful);
          RF_close(rfHandle);
         // rfHandle = 0;
        }
        debug_printf("\r\n close zgb end:%d\r\n",rfHandle);
    }
    
    void zgb2g4_init(void)
    {
        zgb2g4_cfg(zgb_wireless_param.chan_vlaue,zgb_wireless_param.data_rata);
    }

    切换代码:

    if(s_flag == 1)
    {
        void zgb2g4_init(void);
        zgb2g4_init();
        debug_printf("switch zgb\r\n");
        s_flag = 0;
    }
    else
    {
        void ble_init(void);
        ble_init();
        debug_printf("switch ble\r\n");
        s_flag = 1;
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此、您能够打开一次2.4GHz 15.4射频模式、但在切换到 BLE 并返回后、您无法再运行 RF_cmdF 命令?  两个实例中的 CHAN 参数值是多少?  您是否考虑评估最新的 SDK 版本(v5.20)?  请提供正在  使用的默认 RF_cmdRadioSetup 和 RF_cmdF 结构。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    15.4代码

    // TI-RTOS RF Mode Object
    static RF_Mode RF_prop =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_ieee_802_15_4,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    // Radio Setup Command for Pre-Defined Schemes
    static rfc_CMD_RADIO_SETUP_PA_t RF_cmdRadioSetup =
    {
        .commandNo = 0x0802,
        .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,
        .mode = 0x01,
        .loDivider = 0x00,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .txPower = 0xFFFF,
        .pRegOverride = pOverrides,
        .pRegOverrideTxStd = pOverridesTxStd,
        .pRegOverrideTx20 = pOverridesTx20
    };
    
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    static 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 = 0x0974,
        .fractFreq = 0x0000,
        .synthConf.bTxMode = 0x1,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };

    BLE 代码

    RF_Mode RF_prop =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_bt5,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    rfc_CMD_BLE5_RADIO_SETUP_PA_t RF_cmdBle5RadioSetup =
    {
        .commandNo = 0x1820,
        .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,
        .defaultPhy.mainMode = 0x0,
        .defaultPhy.coding = 0x0,
        .loDivider = 0x00,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .txPower = 0xFFFF,
        .pRegOverrideCommon = pOverridesCommon,
        .pRegOverride1Mbps = pOverrides1Mbps,
        .pRegOverride2Mbps = pOverrides2Mbps,
        .pRegOverrideCoded = pOverridesCoded,
        .pRegOverrideTxStd = pOverridesTxStd,
        .pRegOverrideTx20 = pOverridesTx20
    };
    
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    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 = 0x0974,
        .fractFreq = 0x0000,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是,只能配置一次

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供更多信息。  由于您 为 Rx 命令调用 RF_postCmd (异步)、您也应该使用 RF_pendCmd 等待射频成功或失败、然后再继续执行代码。  另一个建议是使用 RF_runScheduleCmd (参考此 E2E 线程)进行同步操作。  如果这些建议不起作用、您能否提供整个项目以便我能够进一步调查和调试?  您  还可以参考相关的 E2E 主题和 rfDualModeRx 示例。

    此致、
    Ryan