1. 程式人生 > >nrf52840藍牙BLE5.0空中速率測試(nordic對nordic)

nrf52840藍牙BLE5.0空中速率測試(nordic對nordic)

nbsp adding 技術 png splay 速度 con 長度 糾正

一、基礎知識:

【1】Data Length:物理層發送一包數據的最大值;

【2】MTU: ATT層發送一次數據長度的最大值;

【3】GAP Event Length:一個connection event中多包持續最大時間,相應的限制了每個連接間隔中間的最大包數;

【4】PHY : 物理層發送速率,目前支持1Mbps和2Mbps;還有長距離傳輸用的CODED,也是1Mbps的,但編碼方式不同。

【5】Connection Interval:連接間隔;

【6】connection event length extension:連接事件長度擴展。可使能或者禁能。不太理解該項,因為未得到驗證,但字面意思為:控制連接間隔之間是否可以發送多包的開關。

規定:

下行:主給從發數據;

上行:從給主發數據;

二、空中抓包速率對比:

1. nordic主對nordic從:

參數設置: data length = 251字節,MTU = 247字節, GAP Event Length = 500ms, PHY = 2Mbps,

connection event length extension = enable,

(1)Connection Interval = 7.5ms時:

下行:

技術分享圖片

上行:

技術分享圖片

單個event的時間:

技術分享圖片

技術分享圖片

從上面的圖中可以看出,7.5ms連接間隔時(其它參數值看上面),

上下行連接間隔中可以發四包數據,所以,速率理論上為:188KB/s,但實測發送1000包速率平均為132KB/s.

(2)Connection Interval = 30ms時:

下行:

技術分享圖片

上行:

技術分享圖片

單個event時間:

技術分享圖片

技術分享圖片

從上面的圖中可以看出,30ms連接間隔時(其它參數值看上面),

上下行連接間隔中可以發20包數據,所以,速率理論上為:178KB/s,但實測發送1000包速率平均為164KB/s.

(3)Connection Interval = 500ms時:

下行:

技術分享圖片

上行:

技術分享圖片

單個event時間:

技術分享圖片

技術分享圖片

從上面的圖中可以看出,500ms連接間隔時(其它參數值看上面),

上下行連接間隔中可以發更多包數據,推算理論速率上為:176KB/s,但實測發送1000包速率平均為176KB/s.

通過上面不同連接間隔的設定,我們大致可以看出,當連接間隔增大時,實際速率會更接近理論速率,這是由於各個連接間隔之間的空余部分基本上都是一樣大的,當連接間隔增大時,這部分空間占的比重會更小,因此通訊速率也就更高。但是過大的連接間隔有一個問題,那就是如果一個應用數據包通訊出錯,那麽該應用數據包得到糾正的時間至少是下一個連接間隔,導致響應時間變長,所以更短的連接間隔更容易糾錯,更長的連接間隔速率更高。30ms時的速率和糾錯時間達到了一個比較好的平衡,所以大數據量傳輸時,選擇這個連接間隔會比較好一些。如果數據量非常小的話,還是7.5ms速度最快,響應時間最短。

關於其它幾個參數:

PHY:PHY為2Mbps相對於1Mbps時快一倍,這個是直接的,比如1Mbps傳輸一個bit需要1us的時間,但是在2Mbps時,只需要0.5us。

由於是滿包發送,且我的需求是發送的數據量越大越好,所以我把GAP Event Length和MTU和data length都設置成了最大進行測試。

nrf52840藍牙BLE5.0空中速率測試(nordic對nordic)