Transcript 4. 第4章

04
藍芽簡介
藍芽協定
藍芽無線電層協定
藍芽的基頻層協定
藍芽微網的建立及連接過程
藍芽連線及應用層
藍芽的應用及未來發展
藍芽起源於 1994 年,由易利信公司(Ericsson)開始研究電腦與
電話等週邊設備的無線網路溝通的技術,並且以低成本、低耗電
量為目標,期望藍芽能與快速成長的手機結合。藍芽是以西元 10
世紀一位丹麥國王的名字(Harald Blatand, Blatand 翻為英文即為
Bluetooth)來命名。
在藍芽中,形成網路的基本單位是微網(Piconet),一個微網內
的裝置數目最多為八個,其中包含至少一個主裝置(Master
device),以及一至七個的從裝置(Slave device)。在一個微網
中,基本的網路架構是星狀,其形態是各個從裝置都會和一個主
裝置連接。若幾個微網間有共用的裝置,則由這些微網形成的網
路稱為擴散網(Scatternet)。
• 藍芽的無線電層(Bluetooth radio layer)和許多其他的無線網
路協定一樣使用免執照的 ISM 頻帶。在大部分的地區中,藍芽
使用的頻率範圍為 2.400至 2.4825GHz,並且將這段範圍分成 79
個,每個頻寬為 1MHz 的頻道。
• 藍芽調變方式採用高斯頻移鍵控(Gaussian Frequency Shift
Keying, GFSK)調變,在傳輸方面,藍芽採用了跳頻
(Frequency hopping)的技術,將時間切成多個時槽,對一個
裝置而言,每換一個時槽就會重新選一個不同的頻道來傳輸,
這樣的做法可以有效降低碰撞的機率。
4.4.1 跳頻和跳頻序列
在一個微網中,一個時槽內只會有主裝置和某一個從裝置傳輸,
而它們傳輸所使用的頻道由主裝置來決定。主裝置和從裝置都會
根據主裝置 48 位元的藍芽裝置位址(Bluetooth device address,
BD_Addr)以及主裝置目前的時脈算出一組頻道的近隨機跳頻序列
(Pseudo-random hopping sequence),各個裝置再依照這個序列
來切換頻道。
4.4.2 藍芽的分時雙工
在藍芽中,時間被分成許多個大小相等的時槽,由主裝置傳送資
料給從裝置的下傳(Downlink)和由從裝置傳送資料給主裝置的
上傳(Uplink)這兩種動作交互地出現。
4.4.2 藍芽的分時雙工
4.4.3 實體連接
• 傳送語音時使用的傳輸方式為同步定向(Synchronous
Connection-Oriented, SCO)傳輸,而傳送一般的資料則使用非
同步無連接(Asynchronous Connection-Less, ACL)傳輸。
• 由於語音具有即時的特性,在同步定向傳輸中,主裝置會在每
段時間保留固定的時槽來傳送具有即時性的資料,其他的資料
只能使用這些被保留時槽以外的時槽來傳輸。
• 在非同步無連接傳輸中,沒有保留頻寬給某些特定裝置的機制。
如果微網內沒有使用同步定向傳輸的裝置,各個裝置可以在任
意的時槽傳輸。如果有使用同步定向傳輸的裝置出現,使用非
同步無連接傳輸的裝置必須讓出同步定向傳輸所需要的時槽,
以確保同步定向傳輸的即時性。
4.4.3 實體連接
4.4.3 實體連接
4.4.4 錯誤檢查
藍芽中使用了二種錯誤檢查機制,分別是比率 1/3 的錯誤校正碼
(1/3 Rate forward error correction)、比率 2/3 的錯誤校正碼
(2/3 Rate forward error correction),並且以自動重送請求
(Automatic Repeat reQuest, ARQ)來確保資料能在發生錯誤時能
夠再次被傳輸。
1) 比率 1/3 的錯誤校正碼是將同樣的資料傳送三份,再用多數
投票(Majority voting)的方法來決定每個位元正確的值。
2) 比率 2/3 的錯誤校正碼是利用漢明碼(Hamming code)的概
念,可以校正單一的位元錯誤,或是檢查出兩個位元錯誤的
情形。
4.4.5 藍芽封包格式
4.4.5 藍芽封包格式
存取碼依不同功能共有三種類型:
• 頻道存取碼(Channel Access Code, CAC):用來辨別同一區域的微
網,每個微網的頻道存取碼是唯一的,由微網中主裝置的藍芽裝置位
址的低位 24 位元決定。
• 設備存取碼(Device Access Code, DAC):在呼叫程序時,主裝置呼
叫從裝置或是從裝置回應主裝置的呼叫時,用來呼叫的信號就是設備
存取碼,內容為從裝置的藍芽裝置位址之低位 24 位元。
• 查詢存取碼(Inquiry Access Code, IAC):當主裝置想要查詢附近是
否有其他從裝置時,主裝置就會發出查詢存取碼。查詢存取碼又可再
細分為兩種,一種是一般查詢存取碼(General Inquiry Access Code,
GIAC),用以查詢所有的裝置;另一種是特定查詢存取碼(Dedicated
Inquiry Access Code, DIAC),用以查詢某一特定種類的裝置。
4.4.5 藍芽封包格式
存取碼內含前導碼(Preamble)、同步字元(Sync word)以及尾
碼(Trailer)前導碼和尾碼的作用都是做為 DC 補償(DC
compensation),前導碼是依據同步字元的第一個 LSB 位元來決定
其值。64 位元的同步字元(sync word)是由 BCH code、LAP
(Lower Address Part)與 Barker code 三個部分運算而成。
4.4.5 藍芽封包格式
同步字元的運算方式如下:
1) 首先將 LAP 的後方接上 6 個位元的 Barker code,若 LAP 的 MSB 位元
為0,則 Barker code 為 001101;若 MSB 為 0,則 Barker code 為
001101。另外LAP 的MSB 位元與Barker code 所形成的7 位元的值,
稱之為Barker sequence。
2) 利用一個 6 位元的線性回授位移暫存器來隨機生成一個 64 位元虛擬
雜訊序列(Psuedonoise sequence, PN)p 0 p 1 … p 63 。PN 序列的
種子值為100000。
3) 將 (p 34 p 35 … p 63 ) 與步驟 1 所產生的 30 位元序列做 XOR 的運算。
透過這樣的運算方式能夠破壞掉原始資訊的規則性,達成擾亂資訊
的效果。
4) 藉由 (63, 30) 的 30 位元的 BCH 碼產生一個 34 位元的錯誤更正碼
(error-correcting BCH code),然後將其置於步驟 3 所得到的結果
前面形成 64 位元的碼字。
5) 將 (p 0 p 1 … p 63 ) 與步驟 4 所產生的 64 位元序列做 XOR 的運算。
透過這樣的運算方式能夠還原 LAP 與 Barker code,同時也能破壞掉
BCH code的規則性,達成擾亂資訊的效果。
4.4.5 藍芽封包格式
4.4.5 藍芽封包格式
標頭碼共有 18 個位元。以下是標頭各欄位所代表的意義:
• 活動成員位址(Active Member Address, AM_Addr)代表的是主裝置分
配給從裝置的一個 3 位元的位址。
• 流量(Flow)是在使用非同步無連接傳輸時用來控制流量。
• 封包類型(Type)代表的是這個封包的種類,以及這個封包使用的時
槽個數。
• ARQN 是接收端告知傳送端上一個封包是否傳送成功的欄位。傳送端
如果未收到 ARQN=1 的回覆,傳送端會重新傳送封包,直到收到正確
的回覆。使用 ARQN 判斷是否要重新傳送封包的機制僅用於非同步無
連接傳輸。
• 序列號碼(SEQuence Number, SEQN)是在接收端收到封包時用來判斷
這個封包是否是重複的封包。
• 標頭錯誤檢查(Header Error Check, HEC)用來檢查標頭在傳送的過程
中是否發生錯誤。
4.4.5 藍芽封包格式
負載用於記錄資料,總共分為三個部分:標頭、主體(Body)、
CRC(Cycle Redundancy Check)檢查碼。標頭代表負載的資料種
類,單時槽封包和多時槽封包負載內的標頭大小分別是 8 位元和
16 位元。主體代表的是資料的內容。傳送端送出封包前會計算出
負載的標頭和主體的 CRC 數值,並將他加到負載中。接收端收到
封包以後以同樣的方式算出 CRC 數值,再和收到的CRC 檢查碼比
較,就可以判斷封包是否錯誤。
4.5.1 查詢階段
4.5.1 查詢階段
4.5.2 掃描階段
當主裝置藉由FHS 封包得到從裝置的位置位址及時序後,會進入
呼叫(Page)狀態。主裝置會不斷地發送 ID 封包,其中包含從裝
置的裝置存取碼。主裝置會依照從裝置的裝置位址和時序來算出
從裝置的跳頻序列,並估計從裝置目前使用的頻道。
4.5.3 連線後的各種狀態
在進入連線狀態後,從裝置有四種模式可以選擇:
• 主動模式:主裝置和從裝置傳遞資料的一般模式,在這個模式
下,主裝置要定期地傳送同步訊息來維持與其他從裝置的同
步。
• 監聽模式:從裝置只有在某些特定的時槽時才醒來監聽主裝置
的訊號,但仍然保有和主裝置同樣的跳頻序列。
• 保持模式:從裝置進入保持模式以後將不支援非同步無定向的
傳輸,但仍可加入其他微網,進行上述與主裝置連線的傳輸。
• 休眠模式:從裝置不參與任何微網內的傳輸,但仍是微網的一
員,而且與微網仍保持同步。
4.6.1 連結管理協定
藍芽的連結管理器(Link manager, LM)負責管理網路的連結,如
主裝置將從裝置加到微網中並給予活動成員位址、將從裝置移除、
建立同步定向連接及非同步無連接傳輸的連線設立、認證等工作,
以及在需時在主裝置/從裝置間切換。
4.6.2 主機控制介面
藍芽標準制定了主機控制介面(Host Controller Interface, HCI)來
將上層的程式和下層的連線處理分開,並且經由主機控制介面提
供統一的指令讓上層處理器和下層的基頻層,這種統一的標準提
供了使用藍芽裝置的彈性。
4.6.3 邏輯連接控制及調整協定
邏輯連接控制及調整層(Logical Link Control and Adaptation
Protocol, L2CAP)位於基頻層之上,它會接收基頻層的事件並將它
發送給上層的協定,或是將上層要傳送的資料切成較小的封包來
傳送。另外,邏輯連接控制及調整協定可以用多工
(Multiplexing)的方式傳送多個不同的上層協定的資料,使它們
可以共享連接的資源。邏輯連接控制及調整層也有維護服務品質
(QoS)的功能。
4.6.3 邏輯連接控制及調整協定
邏輯頻道分為三種,而頻道代碼的分配也隨著邏輯頻道種類的不
同而定:
• 信號頻道(Signaling channel):用來交換控制用的命令及訊
息,信號頻道被分配的頻道代碼固定是 1,每個 ACL 連線一定
會有一個信號頻道。
• 無連線資料頻道(Connectionless data channel):這種傳輸的
方向是單一的,比如說廣播。一個裝置的無連線頻道只有一
個,被分配到的頻道代碼固定為 2。
• 連線導向頻道(Connection-oriented data channel):這種連線
的傳輸是雙向的(分時雙工),並且必須有 QoS 的支援。
4.6.3 邏輯連接控制及調整協定
4.6.4 RFCOMM
RFCOMM protocol 位於 L2CAP 之上,利用 L2CAP 以多工的方式來
處理多個連線,並且提供一個模擬的 RS-232 序列埠讓上層協定使
用,使用 RS-232介面的軟體都可以在RFCOMM 之上正常運作。
4.6.5 服務發現協定
服務發現協定(Service Discovery
Protocol, SDP)是幫助藍芽裝置上
的應用程式找到附近的區域有哪
些可用的服務。
SDP 使用 L2CAP 連線並使用請求/
回應的方式來找尋服務,當一個
SDP client 與 SDP server 的連線建
立之後,SDP 便可以向 SDP server
發出 SDP 請求(SDP request)。
4.6.6 TCS-binary
TCS-binary(Telephony Control Specification)定義了一個無線裝置
如何轉換成無線電話(Cordless phone)或一個有藍芽功能的手機
如何在接近藍芽電話基地臺時轉換成藍芽無線電話。