iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
1
IoT

玩玩 BLE系列 第 8

[Day 08] 藍芽連接(Connection) (2/2)

  • 分享至 

  • xImage
  •  

BLE連接參數(BLE Connection Parameters)

在建立BLE的連線之前,必須先由主機端(Master)決定四個參數,這四個參數都和連接時間有關:

連接參數 描述 範圍
Connection Interval 兩個連接事件的時間間隔 7.5 ms ~ 4 s
Slave Latency 從機可忽略主機發出的連接事件次數 0 ~ 499
Supervision Timeout Connection supervision timeout 100 ms ~ 32 s

##Connection Interval
下圖是藍牙裝置在連接狀態下,耗電量(橫軸)與時間(縱軸)的關係圖,
連接事件示意圖
首先我們可以看到四支紅色牙籤插在紅色沙灘上,那四支牙籤就代表四個連接事件,其餘的時間裝置進入省電的狀態,
這也是BLE可以很省電的原因之一。

每次的連接事件都會進行無線電的收發(RX和TX),而且收發相對於待機時的耗電來看是極高的。
連接區間越小,代表連接事件越頻繁的發生,就會提高裝置的耗電量。

##Slave Latency
為了提升從機(Slave)的靈活度,此參數允許從機可以跳過數個由主機(Master)發出的連接事件。
當從機沒有要對主機發送資料時,可以決定跳過數個連接事件,以降低裝置的耗電量,
但跳過的次數不可超過Slave Latency參數,否則連線將判定成失敗,就是斷線的意思。
Slave Latency示意圖
上圖可以看出,
當Slave Latency被設定成關閉時,每次主機發出的連接事件,從機都必須要做回應。
當Slave Latency被設定成3的時候,從機則最多可忽略三個連接事件,但下一次就必須要回應,否則就會被判定為斷線。

Supervision Timeout

如果兩次成功的連接事件的時間間隔,超過 Supervision Timeout 則判定為斷線。此參數的值必須要大於有效連接區間。
所謂的有效連線區間就是把 Connection Interval 和 Slave Latency 一起考慮進來,
這邊有一個算式:

Effective Connection Interval = (Connection Interval) * (1 + [Slave Latency])

有些人看到數學式子就想睡,但我還好,
沒關係,我們用上面 Slave Latency 那張來,看他的有效連接區間是多少,
假設:
連接區間(Connection Interval)=100ms
Slave Latency = 3

Effective Connection Interval = (100 ms) * (1 + 3) = 400 ms

在假設第一個M是0 ms時候發出,此時S也有進行回應,所以是一個成功的連接事件,
接下來S為了省電,一直睡直到 Slave Latency 的扣打用完,在第五個M發出之後,S才做回覆,
所以這個連線的有效連接區間就是400 ms。
要設定超時的秒數,當然要比在合理條件下可能會發生的情況還要大,
所以 Supervision Timeout 一定要比 有效連接區間來得大。

最後原本想要提一下 iOS 對於BLE連接參數的限制,但時間用完了,需要的可以自己Google,
另外,Android 手機的連接參數雖然沒有特別的限制,聽說有些手機的連接參數設的很寬鬆,導致手機會誤判仍和BLE裝置連接著。

開發板已經到手了,藍牙學習的部分就大概先這樣,之後邊做邊學,
接著會開始建立開發環境,希望明天也能順利發文。

參考文章:


上一篇
[Day 07] 藍芽連接(Connection) (1/2)
下一篇
[Day 09] 閱讀CC2642R 數據手冊
系列文
玩玩 BLE27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言