日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CC1310切换速率的办法

發布時間:2024/3/26 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC1310切换速率的办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

客戶在使用CC131開發產品的過程中,經常會遇到切換速率的場景,比如此刻使用50Kbps速率傳輸,下一時刻使用10Kbps速率傳輸,那么如何有效的在各個速率之間切換,這里介紹兩個辦法:
一、使用RF_control來切換速率
RF_control函數說明如下:
/** * @brief Set RF control parameters *

  • @note Calling context : Task *
    • @param h Handle previously returned by RF_open()
    • @param ctrl Control codes
    • @param args Pointer to control arguments
    • @return RF_Stat indicates if API call was successfully completed.
  • */
  • extern RF_Stat RF_control(RF_Handle h, int8_t ctrl, void *args);
  • 其中形參h為rfhandle,必須RF_control執行之前由RF_open打開形參ctrl為命令,為RF_CTRL_UPDATE_SETUP_CMD,這個命令說明如下:
  • /! * @brief Control code used by RF_control to update setup command * * Setting this control notifies RF that the setup command is to be updated, so that RF will take * proper actions when executing the next setup command. * Note the updated setup command will take effect in the next power up cycle when RF executes the * setup command. Prior to updating the setup command, user should make sure all pending commands * have completed. /
    #define RF_CTRL_UPDATE_SETUP_CMD 1
    也就是執行這個命令會讓RF使用新的參數來進行下一次數據收發。
    具體使用方法如下,這里首先使用默認的50Kbps速率發送一包數據,然后修改RF_cmdPropRadioDivSetup相關參數為10Kbps速率,然后調用RF_yield將RF關閉并開始啟用新的參數,最后開始使用10Kbps開始一次新的數據傳輸:
    result = RF_runCmd(rfHandle, (RF_Op)&RF_cmdPropTx, RF_PriorityNormal, NULL, 0);
    if (!(result & RF_EventLastCmdDone))
    { while(1); }
    HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0 ) = ( 1 << 25 );
    RF_cmdPropRadioDivSetup.modulation.deviation = 0x4C;
    RF_cmdPropRadioDivSetup.symbolRate.rateWord = 0x199A;
    RF_cmdPropRadioDivSetup.rxBw = 0x23;
    RF_cmdPropRadioDivSetup.pRegOverride = pOverrides_10K;
    RF_control(rfHandle, RF_CTRL_UPDATE_SETUP_CMD, NULL);
    RF_yield(rfHandle); //Force a power down using RF_yield() API. This will power down RF after all pending radio commands are complete.
    HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0 ) = ( 1 << 25 );
    result = RF_runCmd(rfHandle, (RF_Op)&RF_cmdPropTx, RF_PriorityNormal, NULL, 0);if (!(result & RF_EventLastCmdDone)){ while(1); }
    這里測試標紅部分代碼的執行時間約為18.8uS,效率很高。而且用另一塊板子設定在10Kbps速率接收,數據能夠正確接收到,說明速率切換成功了。

    二、使用RF_close來切換速率
    這個方法很簡答,將RF關閉,然后重新初始化RF,再打開RF,就切換到新的速率了,具體使用方法如下:HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0 ) = ( 1 << 25 );
    RF_close(rfHandle);
    rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup_10K, &rfParams);
    RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);
    HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0 ) = ( 1 << 25 );
    這里測試標紅部分代碼的執行時間約為460uS,效率較RF_control相比低多了。

    三、使用RFC_GPO3來映射:
    由圖中可以看到,當TX開始時GPO3拉高,當TX結束時GPO3拉低。我們將RFC_GPO3映射到LED引腳上,
    如下:PINCC26XX_setMux(ledPinHandle, Board_LED3, PINCC26XX_MUX_RFC_GPO3);
    通過觀察LED3的波形來觀察時間,如下圖:
    圖中的低電平即表示上一次tx結束到下一次tx開始的時間,約為1.5ms,高電平的時間表示以10Kbps或者50Kbps發送時的時間。
    源文件見:C:\AAA\1-Sub-1G\CC1310\A-Test OK\CC1310_RFStatusSwitch_Test.rar

總結

以上是生活随笔為你收集整理的CC1310切换速率的办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。