藍牙BLE傳輸性能及延遲分析

BLE傳輸性能主要受如下幾個因素影響:操做類型,Connection Interval,每一個Connection Event內發送的幀數、每一幀數據的長度。具體參見以下連接:html

https://en.wikipedia.org/wiki/Bluetooth_low_energyandroid

https://devzone.nordicsemi.com/question/3440/how-do-i-calculate-throughput-for-a-ble-link/ios

https://atmosphere.anaren.com/wiki/Data_rates_using_BLE小程序

https://punchthrough.com/blog/posts/maximizing-ble-throughput-on-ios-and-android緩存

目前的一個項目對BLE傳輸性能有較高要求,將以上幾個因素逐一確認,使用協議支持的最優值,其中Connection Interval設置爲7.5ms,每一幀數據長度爲20字節,每一個Connection Event根據業務須要設置爲2,依此計算出的理論傳輸速度約爲5600Bps。爲了測試實際效果,在Android端寫了一個小程序,將數據流和時間戳打印出來,以下:工具

[21]:TS 238.794720 PN 20780 [1]: [21]:TS 238.795954 PN 20780 [2]: [21]:TS 238.802182 PN 20781 [1]: [21]:TS 238.802373 PN 20781 [2]: [21]:TS 238.810432 PN 20782 [1]: [21]:TS 238.832608 PN 20782 [2]: [21]:TS 238.832650 PN 20783 [1]: [21]:TS 238.832728 PN 20783 [2]: [21]:TS 238.832751 PN 20784 [1]: [21]:TS 238.832820 PN 20784 [2]: [21]:TS 238.832843 PN 20785 [1]: [21]:TS 238.833862 PN 20785 [2]: [21]:TS 238.839201 PN 20786 [1]: [21]:TS 238.839403 PN 20786 [2]: [21]:TS 238.848280 PN 20787 [1]: [21]:TS 238.848894 PN 20787 [2]: …… [21]:TS 288.128815 PN 27346 [1]: [21]:TS 288.128977 PN 27346 [2]: [21]:TS 288.136323 PN 27347 [1]: [21]:TS 288.136908 PN 27347 [2]: [21]:TS 288.159292 PN 27348 [1]: [21]:TS 288.159569 PN 27348 [2]: [21]:TS 288.159922 PN 27349 [1]: [21]:TS 288.165079 PN 27349 [2]: [21]:TS 288.167879 PN 27350 [1]: [21]:TS 288.168157 PN 27350 [2]: [21]:TS 288.173809 PN 27351 [1]: [21]:TS 288.173906 PN 27351 [2]:

其中21爲數據長度、TS爲時間戳、PN爲包號,1和2是一個Connection Event內的包的類型。能夠看到,通常狀況下,一個Connection Event發送兩幀數據,這兩幀數據的時間間隔在1ms之內,兩個Connection Event之間的時間間隔約爲7ms。爲了直觀呈現測試結果,在PC端寫了一個工具以分析抓取的LOG,主要根據包號、包的類型、字節長度和時間戳,統計丟包率和傳輸速度,以下圖所示。oop

能夠看到,一共傳輸了約16.3萬個包,沒有數據丟失,兩幀之間最大時間間隔約爲22.384ms,最大傳輸速度爲5641Bps,平均速度約爲5583Bps,與理論值(5600Bps)相差很少。Connection Interval對傳輸性能的影響對比下圖,其Connection Interval爲11.25ms。post

BLE傳輸延遲(Latency)主要是指設備端將數據放至藍牙協議棧到Android主機收到的時間間隔。因爲通訊雙方時間戳不統一,沒法按照前面經過打印時間戳的方式來作統計傳輸延遲,只能經過硬件信號作同步。設備端將數據放至藍牙協議棧時給出一個信號,Android主機收到該數據時也給出一個信號,使用示波器抓取兩個信號便可獲得數據經過藍牙BLE傳輸的延遲,以下圖所示。性能

Channel3爲發送端的信號,Channel2爲接收端的信號,能夠看到BLE傳輸延遲約爲8ms左右,會上下波動。測試

數據傳輸延遲還跟Android端軟件讀取數據的均勻程度有關,Android端軟件需及時將數據從緩存中讀取出來,不然也會形成必定的延遲。評估數據讀取均勻程度的方法同上,也是經過示波器抓取波形來看,以下圖所示。

其中1通道爲設備端發送數據,2通道爲Android端讀取數據,雙方節奏基本保持一致,確保了及時讀取和分發設備端上報的數據。

本文主要是經過打流和抓波形的方法,驗證了藍牙BLE的傳輸性能和延時。實際調試過程當中還可使用FTS4BT工具分析btsnoop_hci.log文件,以探究BLE創建連接、Update Parameters和數據傳輸等細節。

相關文章
相關標籤/搜索