加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

藍(lán)牙的狀態(tài)機(jī)和連接過(guò)程

05/17 08:20
4302
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

藍(lán)牙具有5種狀態(tài):

待機(jī)狀態(tài)(standby) :沒(méi)有連接任何設(shè)備,沒(méi)有傳輸和發(fā)送數(shù)據(jù)。

廣播狀態(tài)(Advertiser/advertising):周期性廣播狀態(tài)。

掃描狀態(tài)(Scanner/scanning) :主動(dòng)尋找正在廣播的設(shè)備。

發(fā)起連接狀態(tài)(Initiator/initiating):主動(dòng)發(fā)起連接。

連接狀態(tài)(connected) :已經(jīng)連接。

藍(lán)牙的角色將決定藍(lán)牙如何在5種狀態(tài)中跳轉(zhuǎn),在藍(lán)牙SDK的框架中也是按照這五種狀態(tài)為脈絡(luò)來(lái)進(jìn)行架設(shè)的。

SLAVE? ? ? ? ? ? ? ? ? ? ? ?MASTER

standby? ? ? ? ? ? ? ? ? ? ?standby

advertising? ? ? ? ? ? ? ? ?scanning

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?initiating

connected? ? ? ? ? ? ? ? ? ?connected

從設(shè)備從standby狀態(tài)進(jìn)入advertising后就開(kāi)始按照廣播參數(shù)進(jìn)行廣播,主機(jī)從standby狀態(tài)進(jìn)入scanning后,則開(kāi)始在對(duì)應(yīng)的三個(gè)廣播通道上監(jiān)聽(tīng)。監(jiān)聽(tīng)到的廣播信息將通過(guò)掃描事件和消息返回。主機(jī)決定發(fā)起連接設(shè)備,進(jìn)入initiating狀態(tài)。

鏈接事件和鏈接參數(shù)

主設(shè)備和從設(shè)備建立連接后,所有的數(shù)據(jù)的通信都是在連接事件中進(jìn)行的。如下圖的電流檢測(cè)曲線(xiàn)所示。

主從設(shè)備會(huì)按照約定好的一個(gè)時(shí)間間隔進(jìn)行一次首發(fā)通信,這就像我們通常使用的串口一樣,約定好一個(gè)波特率,串口中叫波特率是因?yàn)槊看味即當(dāng)?shù)一個(gè)bit,而藍(lán)牙中則被稱(chēng)為鏈接間隔。在鏈接間隔之間,藍(lán)牙一直處于sleep模式,這樣就會(huì)讓藍(lán)牙的整個(gè)通信非常的省電。所以藍(lán)牙對(duì)于時(shí)鐘計(jì)數(shù)非常的在意,為什么經(jīng)常手機(jī)連接著設(shè)備一會(huì)就斷了,就是不同步了。

在每個(gè)鏈接事件中,都需要MASTER設(shè)備發(fā)起包,然后有SLAVE設(shè)備進(jìn)行回復(fù)。對(duì)于鏈接的參數(shù),主要是規(guī)定主從機(jī)通信的時(shí)間:

    intervalMin :最小的連接間隔,一般設(shè)置范圍為6-3200,單位是1.25msintervalMax:最大鏈接間隔,范圍同樣是6-3200,單位是1.25msslaverLatency:從機(jī)忽略時(shí)間,范圍是0-499,單位也是1.25mstimeout:超時(shí)時(shí)間,設(shè)置范圍10-3200,單位是10ms。

從上面可以計(jì)算,藍(lán)牙的鏈接間隔最短是7.5ms,最長(zhǎng)是4s。這里要注意,手機(jī)藍(lán)牙的連接間隔的可是值范圍并不一樣,蘋(píng)果系統(tǒng)的一般是20ms起步,而各式各樣的Android手機(jī)不盡相同,但大多數(shù)可以從7.5ms起步。

什么是slave Latency呢?

上面提到過(guò),每過(guò)一個(gè)鏈接間隔,主從機(jī)都會(huì)發(fā)送和回復(fù)一次數(shù)據(jù)。那么為了讓從機(jī)能夠更省電,我們肯定不希望從機(jī)每次都老老實(shí)實(shí)的回復(fù),因此藍(lán)牙協(xié)議中允許從機(jī)可以沉默幾次,下圖是slaverLatency分別為0和3的對(duì)比:

再說(shuō)timeout參數(shù),其設(shè)置范圍實(shí)際為100ms - 32s。這個(gè)參數(shù)給主從機(jī)提供一個(gè)判斷鏈接的門(mén)限,如果沒(méi)有鏈接事件的時(shí)間持續(xù)超過(guò)設(shè)定的timeout值,則認(rèn)定通信連接斷開(kāi)。

連接參數(shù)影響功耗和體驗(yàn)

    鏈接間隔設(shè)置縮短,也就意味著1s內(nèi)MASTER和SLAVE之間的額通信更頻繁,這樣可以提高數(shù)據(jù)吞吐量,當(dāng)然對(duì)應(yīng)的功耗就會(huì)增加。鏈接間隔設(shè)置增長(zhǎng),通信頻率降低,數(shù)據(jù)吞吐量也降低,這樣可以有效的降低藍(lán)牙通信的功耗。salve Latency設(shè)置小的話(huà),從機(jī)回復(fù)主機(jī)的頻次增多,從機(jī)的功耗就會(huì)增加。salve Latency設(shè)置大的話(huà),從機(jī)回復(fù)主機(jī)的頻次減少,從機(jī)的功耗就會(huì)減小。

手機(jī)中需要注意的問(wèn)題:

    安卓手機(jī)作為主設(shè)備時(shí),部分手機(jī)連接BLE設(shè)備后,只能進(jìn)行一次連接參數(shù)的修改,因此從設(shè)備最好不要頻繁請(qǐng)求修改,開(kāi)始就規(guī)劃好鏈接參數(shù)。蘋(píng)果系統(tǒng)對(duì)于鏈接參數(shù)的更新更苛刻,想上面提到的鏈接間隔必須從20ms起步,slave Latency要小于4,同時(shí)timeou要小于6s。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
KSZ8041TLI 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48

ECAD模型

下載ECAD模型
$3.59 查看
AD9364BBCZREEL 1 Analog Devices Inc 1 x 1 RF Agile Transceiver
暫無(wú)數(shù)據(jù) 查看
KSZ8873MLLV 1 Microchip Technology Inc LAN Switching Circuit, PQFP64
暫無(wú)數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

多年硬件從業(yè)經(jīng)驗(yàn),專(zhuān)注分享從研發(fā)到供應(yīng)鏈,再到精益制造過(guò)程中的經(jīng)驗(yàn)和感悟!