藍(lán)牙技術(shù)自1998年問世以來(lái),已經(jīng)成為現(xiàn)代通信技術(shù)中不可或缺的一部分。它允許不同設(shè)備之間通過無(wú)線信號(hào)進(jìn)行通信,極大地方便了我們的日常生活。在藍(lán)牙技術(shù)中,設(shè)備發(fā)現(xiàn)(Inquiry)是一個(gè)重要的概念,它涉及到設(shè)備如何相互識(shí)別和建立連接。本文將對(duì)藍(lán)牙設(shè)備發(fā)現(xiàn)過程進(jìn)行解析,幫助讀者更好地理解這一技術(shù)。
1
什么是設(shè)備發(fā)現(xiàn)?
我們?cè)谌粘J褂?a target="_blank">手機(jī)去連接其它如藍(lán)牙耳機(jī)等藍(lán)牙設(shè)備前,一般需要先在手機(jī)上搜索到需要的設(shè)備,這一步就是設(shè)備發(fā)現(xiàn),也叫查詢(inquiry)。而相應(yīng)的藍(lán)牙設(shè)備也需要進(jìn)入被查詢模式,也就是查詢掃描(inquiry scan),只有這樣才會(huì)被手機(jī)等設(shè)備搜索到。
圖1. windows的藍(lán)牙設(shè)備發(fā)現(xiàn)界面
2
設(shè)備發(fā)現(xiàn)工作原理
在設(shè)備發(fā)現(xiàn)過程中,查詢?cè)O(shè)備會(huì)每隔312.5us選擇一個(gè)新的頻點(diǎn)來(lái)發(fā)送查詢,也就是說在一個(gè)tx slot(625us)中,查詢?cè)O(shè)備會(huì)以不同的頻點(diǎn)發(fā)送兩次查詢,而被查詢?cè)O(shè)備會(huì)每隔1.28秒選擇一個(gè)新的監(jiān)聽頻點(diǎn),所以只要查詢一段時(shí)間就總會(huì)有兩者頻點(diǎn)相同的時(shí)候,查詢和被查詢?cè)O(shè)備使用通用查詢接入碼(GIAC,General Inquiry Acess Code)LAP(Low Address Part),作為查詢地址,GIAP LAP為0x9E8B33。藍(lán)牙標(biāo)準(zhǔn)規(guī)定不允許任何藍(lán)牙設(shè)備使用與GIAP LAP一樣的地址。產(chǎn)生的32個(gè)查詢跳頻序列(Inquiring hopping sequence) 均勻分布在79個(gè)頻率信道上。
查詢?cè)O(shè)備會(huì)通過發(fā)送ID包來(lái)進(jìn)行查詢,ID包由查詢?cè)L問碼(IAC)組成,固定68bits長(zhǎng),在上文也提到查詢和被查詢?cè)O(shè)備使用通用查詢接入碼(GIAC),因此可以和配對(duì)時(shí)發(fā)出的ID包區(qū)分開。在標(biāo)準(zhǔn)模式下,當(dāng)被查詢?cè)O(shè)備接收到一個(gè)ID包后,會(huì)在一個(gè)slot(625us)后回復(fù)一個(gè)FHS包,這個(gè)包包含了設(shè)備類型、設(shè)備地址和發(fā)送者的時(shí)鐘,如果查詢模式為返回帶RSSI格式或者額外查詢結(jié)果模式,那么被查詢?cè)O(shè)備就會(huì)在FHS包之后2 slot(1250us)發(fā)送一個(gè)Extended_inquiry_response_packet包,其中會(huì)包含設(shè)備名字、RSSI等信息。
圖2. 收到第一個(gè)或第二個(gè)ID包進(jìn)行響應(yīng)的時(shí)序
我們以一塊泰凌B91開發(fā)板為例來(lái)直觀地看一下設(shè)備發(fā)現(xiàn)的過程。
圖3. B91開發(fā)板
我們先給開發(fā)板燒錄提前編譯好的測(cè)試固件,然后用手機(jī)去搜索附近的藍(lán)牙設(shè)備,并用藍(lán)牙抓包器抓取空中包,通過抓包器我們可以清楚地看到,在開發(fā)板收到ID包625us后發(fā)出了FHS包,之后跟著又發(fā)出了一個(gè)EIR包,與圖2協(xié)議規(guī)定的時(shí)序完全一致。
圖5. 抓包器抓取到的inquiry過程
通過解析包內(nèi)容可以發(fā)現(xiàn),F(xiàn)HS包中包含了設(shè)備類型,時(shí)鐘等信息,而EIR包則包含了設(shè)備名稱。
圖6. FHS包內(nèi)容
圖7. EIR包內(nèi)容
3
HCI指令
在藍(lán)牙中host通過HCI指令來(lái)控制controller的行為,在設(shè)備發(fā)現(xiàn)流程中也需要用到多條HCI指令。
3.1
HCI_inquiry
查詢?cè)O(shè)備可以使用這條指令來(lái)啟動(dòng)inquiry,這個(gè)指令需要填入三個(gè)參數(shù),分別是LAP:一般為0x9e8b33(GIAC),inquiry_length:搜索多長(zhǎng)時(shí)間,num_response:可以搜索多少個(gè)設(shè)備,范圍0~255,如果是0,就是沒有限制,搜索多少個(gè)就上報(bào)給host多少個(gè)。
3.2
HCI_Inquiry_Cancel
host可以發(fā)送這條指令來(lái)提前停止搜索。
3.3
HCI_Write_Inquiry_Mode
host使用這條指令來(lái)設(shè)置inquiry的模式,這將會(huì)決定搜索到的設(shè)備是否返回RSSI、設(shè)備名等信息。
3.4
HCI_Write_Scan_Enable
被搜索設(shè)備使用這條指令來(lái)開啟或關(guān)閉scan狀態(tài),這條指令不僅可以開啟inquiry scan還可以開啟page scan,開啟page scan后設(shè)備將允許被連接。
3.5
HCI_Write_Inquiry_Scan_Activity
這條指令用來(lái)設(shè)置inquiry scan的窗口時(shí)間和窗口間隔,controller會(huì)自動(dòng)隔一段時(shí)間打開一次窗口,只有在打開窗口期間才能收到對(duì)方發(fā)來(lái)的inquiry ID包,因此窗口時(shí)間越長(zhǎng),窗口間隔越短越容易被其它設(shè)備搜索到,需要注意的是,窗口時(shí)間必須要小于等于窗口間隔。
3.6
HCI_Write_Extended_Inquiry_Response
被查詢?cè)O(shè)備的host下發(fā)這個(gè)指令后,查詢?cè)O(shè)備就可以在搜索到后拿到設(shè)備名字等信息,否則后續(xù)就只能通過HCI_Remote_Name_Request指令來(lái)獲取slave的名字。
設(shè)備發(fā)現(xiàn)是藍(lán)牙連接過程中的重要一步,它允許我們查找周圍可被連接的設(shè)備,并且可以靈活地配置查詢的參數(shù),從而使我們下一步方便地在不同設(shè)備之間建立連接。泰凌基于TLSR951x和TLSR952x系列SoC芯片自研的藍(lán)牙協(xié)議棧,得益于芯片本身具備的超低功耗工作模式,實(shí)現(xiàn)了帶低功耗的Inquiry和Inquiry Scan模式,可以將設(shè)備發(fā)現(xiàn)過程芯片整機(jī)功耗降低到3mA以下,能夠滿足對(duì)功耗極度敏感的應(yīng)用場(chǎng)景。
-
通信技術(shù)
+關(guān)注
關(guān)注
20文章
1112瀏覽量
92171 -
藍(lán)牙技術(shù)
+關(guān)注
關(guān)注
44文章
341瀏覽量
52819 -
藍(lán)牙設(shè)備
+關(guān)注
關(guān)注
0文章
37瀏覽量
6701 -
泰凌微
+關(guān)注
關(guān)注
6文章
143瀏覽量
10771
原文標(biāo)題:【技術(shù)專欄】泰凌微電子藍(lán)牙設(shè)備發(fā)現(xiàn)概述
文章出處:【微信號(hào):telink-semi,微信公眾號(hào):泰凌微電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論