<sup id="sbjlm"><small id="sbjlm"><delect id="sbjlm"></delect></small></sup><small id="sbjlm"><option id="sbjlm"><form id="sbjlm"></form></option></small><tr id="sbjlm"></tr>

<tr id="sbjlm"></tr><tr id="sbjlm"></tr>
<tr id="sbjlm"></tr>
<tr id="sbjlm"></tr>
  1. <sup id="sbjlm"><small id="sbjlm"><dfn id="sbjlm"></dfn></small></sup>

    1. 0
      • 聊天消息
      • 系統消息
      • 評論與回復
      登錄后你可以
      • 下載海量資料
      • 學習在線課程
      • 觀看技術視頻
      • 寫文章/發帖/加入社區
      創作中心

      完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

      3天內不再提示

      全志R128 BLE最高吞吐量測試正確配置測試方法

      冬至子 ? 來源:丨budboool ? 作者:丨budboool ? 2023-10-27 17:17 ? 次閱讀

      在R128使用前我們需要了解BLE的最高吞吐量,以方便評估相關功能的開發。

      首先我們了解一下哪些因素會影響藍牙的吞吐量:

      1、藍牙版本與PHY: 藍牙設備的版本和物理層(PHY)對于吞吐量有很大影響。例如,R128設備支持藍牙5.0,而藍牙5.0版本后支持2M PHY,使用2M PHY會獲得更高的數據吞吐量。

      2、DLE(數據長度擴展): 在藍牙4.2版本之后,BLE(藍牙低功耗)開始支持DLE(也稱為長包),使用長包可以使單個BLE數據包傳輸的payload達到251字節。通常,此功能是默認啟用的,這有助于提高數據吞吐量。

      3、MTU與數據發送量: 協議規定LL data PDU的Payload最大為251字節,即一次可以傳輸251字節的L2CAP數據。在L2CAP Data之上還有4個字節的頭部,因此L2CAP的Payload為251-4=247字節,即一次可以傳輸247字節的ATT data。而在ATT Data之上還有3個字節的頭部,所以ATT的payload為247-3=244字節,即一次可以傳輸244字節的應用數據。MTU(最大傳輸單元)通常指的是L2CAP的Payload,即ATT data,其大小為247字節。在發送數據時,應盡量減少拆包和組包的過程,以便提高吞吐量。這意味著應用在發送數據時,應盡量每次發送不超過244字節的數據。

      downloadFileByUrl.png

      4、連接間隔: BLE技術的特點是低功耗,這主要是因為BLE的兩個設備并不是傳統意義上的長連接,而是間隔一段時間進行周期性交互。這個周期性的間隔稱為連接間隔。連接間隔越小,單位時間內可以發送的數據包就越多。因此,為了提高吞吐量,應盡量減小連接間隔。

      downloadFile1ByUrl.png

      5、每個連接事件的最大數據包數: 在藍牙連接過程中,每個連接事件內可以發送的數據包數量通常為7個。如果在一個連接事件內發送過多的數據包,可能會導致吞吐量下降。因此,應盡量保證在一個連接事件內發送不超過7個數據包。

      6、寫操作: 在藍牙通信中,write和write_without_response、indicate和notify是常見的操作方式。write操作需要對方確認,效率相對較低;而write_without_response和notify操作則不需要對方確認,效率較高。因此,為了提高吞吐量,應優先使用write_without_response和notify操作。

      針對以上因素,我們可以制定出一套可以滿足最大吞吐需求的正確配置

      1、使用2M PHY
      (1)若我方作為GATTC,應該由我方發起PHY UPDATE的動作。
      在較新的btmanager中已經適配(在SDK V0.9版本后才有),老版本上未有。若客戶不使用btmanager,需要自行檢查適配。
      (2)若我放作為GATTS,一般支持藍牙的5.0的手機設備默認有PHY UPDATE的動作。

      2、更新LL data length
      雖然默認支持長包功能,但是為了兼容4.0和4.1版本,藍牙controller默認還是使用27字節的包發送。

      需要在連接的時候主動更新LL data length為251字節。在較新的btmanager中已經適配(在SDK V0.9版本后才有)。若客戶不使用btmanager,需要自行檢查適配。

      3、MTU與數據發送量
      L2CAP MTU 設置為247:

      -CONFIG_BT_L2CAP_RX_MTU=65
      +CONFIG_BT_L2CAP_RX_MTU=247
      -CONFIG_BT_L2CAP_TX_MTU=65
      +CONFIG_BT_L2CAP_TX_MTU=247
      

      同時,應用或測試demo在發送數據時,應該每次最多發送244字節。

      4、連接間隔
      連接間隔范圍是7.5ms ~ 4s。
      但是并不是越小就越好

      • 連接間隔越小,抗干擾能力就越差。
      • 若藍牙controller在一個連接事件中能發送7個數據包,連接間隔應該設置大于12.5ms,因為這7個包已經占用了大概9.5ms了。
      • 建議連接間隔在12.5ms、13.75ms、15ms中嘗試。

      (1)若我方作為GATTC,可以在btmg_le_connect中指定為連接間隔即可。
      (2)若我放作為GATTS,對方使用的連接間隔太大,我方可以通過協議棧主動更新,相關配置

      -# CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS is not set
      +CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=y
      +CONFIG_BT_PERIPHERAL_PREF_MIN_INT=11
      +CONFIG_BT_PERIPHERAL_PREF_MAX_INT=11
      +CONFIG_BT_PERIPHERAL_PREF_SLAVE_LATENCY=0
      +CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=42
      

      5、增大協議棧TX和RX buff
      增大協議棧TX buff可以讓數據能快速送到藍牙controller。

      -CONFIG_BT_CONN_TX_MAX=3
      +CONFIG_BT_CONN_TX_MAX=8
      
      -CONFIG_BT_L2CAP_TX_BUF_COUNT=3
      +CONFIG_BT_L2CAP_TX_BUF_COUNT=8
      

      增大RX buff 可以提高接收效率:
      設置為255是因為包含HCI的包頭4個字節。

      -CONFIG_BT_RX_BUF_LEN=88
      +CONFIG_BT_RX_BUF_LEN=255
      
      -CONFIG_BT_DISCARDABLE_BUF_SIZE=88
      +CONFIG_BT_DISCARDABLE_BUF_SIZE=255
      

      6、使用write_without_response和notify發送數據

      聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
      • PDU
        PDU
        +關注

        關注

        0

        文章

        84

        瀏覽量

        16737
      • PHY
        PHY
        +關注

        關注

        2

        文章

        210

        瀏覽量

        50702
      • 協議棧
        +關注

        關注

        2

        文章

        115

        瀏覽量

        32956
      • HCI
        HCI
        +關注

        關注

        0

        文章

        26

        瀏覽量

        12805
      • BLE技術
        +關注

        關注

        0

        文章

        18

        瀏覽量

        5747
      收藏 人收藏

        評論

        相關推薦

        R128 BLE最高吞吐量測試正確配置測試

        R128使用前我們需要了解BLE最高吞吐量,以方便評估相關功能的開發。 首先我們了解一下哪些因素會影響藍牙的
        發表于 10-16 15:22

        R128外設模塊配置——ADC按鍵配置方法

        配置可能不同,以r128為例,下面是r128的成員config: static struct sunxikbd_config key_config = { .measure
        發表于 10-20 11:04

        網卡吞吐量測試解決方案

        吞吐量進行合理的測試,已越來越成為眾多計算機網卡生產廠家日益關注
        發表于 12-23 11:07

        無線測試吞吐量測試

        測試之無線吞吐量測試方法、步驟
        發表于 06-25 08:40

        iperf固定吞吐量測試如何設置

        測試固定的UDP吞吐量。示例:IPEF-C 192.1680.1-P 5001 -I 2 -T 30 -U-B 60M,但客戶端
        發表于 11-06 14:09

        聯詠行車記錄儀方案配RTL8189FTV的WIFI吞吐量測試方法

        吞吐量測試方法1.機器測試的前提條件:機臺設備連上串口,在串口打印內先輸入”ki” 命令啟動WIFI,再輸入 “modeplayback” 進入
        發表于 08-28 13:46

        提高BLE吞吐量的可行辦法

        BLE吞吐量的可行辦法如何實現更快的
        發表于 01-18 06:26

        如何利用NI LabVIEW技術提高測試系統的吞吐量?

        測試系統?如何利用NI LabVIEW技術提高測試系統的吞吐量?如何利用NI LabVIEW技術實現并行化處理和并行化測試?
        發表于 04-15 07:00

        GD32W51x吞吐量及場景功耗測試指南

        吞吐量及場景功耗測試指南
        發表于 03-01 18:42 ?0次下載
        GD32W51x<b>吞吐量</b>及場景功耗<b>測試</b>指南

        AN085 GD32W51x吞吐量及場景功耗測試指南

        吞吐量及場景功耗測試指南
        發表于 03-01 18:51 ?0次下載
        AN085 GD32W51x<b>吞吐量</b>及場景功耗<b>測試</b>指南

        iperf吞吐量測試流程

        吞吐量測試指南
        發表于 04-03 15:40 ?2次下載

        兆易創新GD32W51x吞吐量及場景功耗測試指南

        吞吐量及場景功耗測試指南GD32W51x吞吐量及場景功耗測試指南
        發表于 10-19 17:26 ?1次下載

        R128適配ST7789v LCD

        R128 平臺提供了 SPI DBI 的 SPI TFT 接口,具有如下特點
        的頭像 發表于 10-23 11:26 ?226次閱讀
        <b>全</b><b>志</b><b>R128</b>適配ST7789v LCD
        韩国主播AV福利一区二区,娇妻的闺蜜下面好紧,少妇SPA私密推油按摩受不了,日本在线精品视频免费播放
        <sup id="sbjlm"><small id="sbjlm"><delect id="sbjlm"></delect></small></sup><small id="sbjlm"><option id="sbjlm"><form id="sbjlm"></form></option></small><tr id="sbjlm"></tr>

        <tr id="sbjlm"></tr><tr id="sbjlm"></tr>
        <tr id="sbjlm"></tr>
        <tr id="sbjlm"></tr>
        1. <sup id="sbjlm"><small id="sbjlm"><dfn id="sbjlm"></dfn></small></sup>