前言:本站為你精心整理了藍牙技術通信思考范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。
摘要:藍牙是一種短距離無線通信技術。本文從藍牙協議棧中的HCI層入手,對該層的主要功能和工作機制進行了剖析,進而闡述了基于HCI層的藍牙應用開發(fā)方案,并設計了一個基于藍牙技術開發(fā)的產品實例——藍牙通用外接模塊,最后,還對基于此模塊的擴展應用——無線裁判打分系統進行了說明。
關鍵詞:HCI;藍牙技術;無線通信
1引言
藍牙(Bluetooth),是一種短距離無線通信技術,用于替代數字設備牙設備運行在和計算機外設間的電纜連接以及實現數字設備間的無線組網。1998年5月由愛立信、IBM、英特爾、諾基亞、東芝等5家公司成立了藍牙特殊利益小組(SIG),負責聯合制定藍牙規(guī)范。藍牙工作在向全球統一開放的2.4GHz工業(yè)、科學、醫(yī)學(IndustrialScientificMedical)頻段,可以同時傳輸數據和語音,至多8個活動的藍牙設備可以共享信道帶寬,形成所謂的匹克網(piconet)。在每一個piconet中,有1個為藍牙主設備,其余7個為從設備,同時可容許有更多的從設備以暫停(park)的方式鎖定到主設備。多個picon-
et可以相互重疊。形成散射網(scattern-
et)。
SIG所頒布的藍牙規(guī)范就是藍牙無線通信協議標準,它規(guī)定了藍牙應用應遵循的標準和需要達到的要求,包括核心協議(Core)與應用框架(Profiles)兩部分。協議規(guī)范部分定義了藍牙的各層通信協議,遵循開放系統互連參考模型,從低到高地定義了藍牙協議堆棧的各個層次,如圖1所示。
按照藍牙協議的邏輯功能,協議堆棧由下至上分為三個部分:傳輸協議、中介協議和應用協議。本文中主機控制接口(HCI)位于傳輸協議之中,它并不是嚴格意義上的通信協議,它僅為應用協議堆棧的高層部分提供了一個訪問低層傳輸協議的指令接口。
如果我們從HCI層出發(fā),可以將藍牙協議堆棧分為硬件與軟件2個協議塊。硬件部分由射頻部分(RF)、基帶部分(BB)、鏈路管理器部分(LM)和HCI固件構成,我們也可以把硬件部分稱為藍牙子系統。軟件部分由HCI主機驅動程序、邏輯鏈路控制適配協議(L2CAP)、串口仿真協議(RFCOMM)、服務發(fā)現協議(SDP)、電話控制協議(TCS)及其它應用協議所構成。在藍牙協議堆棧模型中的虛線部分為對本文中HCI協議層軟件的具體劃分。
2HCI協議剖析
在藍牙協議模型中,HCI軟件驅動程序與HCI固件統一歸為HCI(主機控制接口),所以要基于HCI進行開發(fā),首先必須了解HCI涉及的具體內容。主機控制接口為藍牙硬件中基帶控制器和鏈路管理器提供了命令接口,從而實現對硬件狀態(tài)寄存器和控制寄存器的訪問,特別是該接口提供了對藍牙基帶的統一訪問模式。HCI分為主機、傳輸層、主控制器三部分,并在每一層為HCI系統提供不同的功能。本文把HCI協議層劃為HCI軟件和HCI硬件兩部分來加以討論。
2.1HCI軟件
HCI軟件部分可分為HCI固件和HCI驅動兩個部分。
HCI固件位于主控制器。HCI固件通過對基帶命令、鏈路管理器命令、硬件狀態(tài)寄存器、控制寄存器和事件寄存器的訪問,實現藍牙硬件HCI指令。主控制器(HostController)意味著具有主控制接口功能的藍牙器件。
與HCI固件不同,HCI驅動位于主機,即協議模型中的HCI軟件驅動部分。若某事件發(fā)生,用HCI事件通知主機,而主機將收到HCI事件的異步通知。當主機發(fā)現有事件發(fā)生時,它將分析收到的事件包并決定何種事件發(fā)生。主機端的HCI驅動程序,一方面通過接口被藍牙應用程序調用(本文所提到的藍牙應用程序是相對于HCI層而言的,指的是構建于通用外接模塊上的擴展應用程序),實現對上層應用的承載;另一方面實現了協議中的HCI功能集,使主機可以向藍牙子系統發(fā)送HCI指令,或接收子系統返回的HCI事件。
2.2HCI的硬件
HCI驅動和HCI固件是通過主控制器傳輸層(位于主控制器與主機之間的中間層)進行通信的,這些中間層和主控制傳輸層提供了在沒有數據描述信息情況下傳輸數據的能力。在藍牙規(guī)范的描述中,藍牙子系統與主機之間共有3類數據轉移的方式、每一種數據在硬件接口均具有一定的封裝格式,分別是由3種傳輸層支持,分別為UART/RS232和USB。采用不同的主控制器傳輸層對主機所接收的HCI事件異步通知不會產生影響。
3藍牙應用開發(fā)方案
在圖1中所提到的主機是一個廣義的概念,可以是以MPU為核心的計算機、也可以是以MCU為核心的控制電路,二者用途各異。其中以MCU為核心的控制電路適用于嵌入式應用開發(fā),而以MPU為核心的計算機則適合于人機接口的軟件開發(fā)。
藍牙協議為建立于藍牙技術之上的多種應用提供了完整的解決辦法,但對于不同應用一般只用到藍牙協議中的某幾個,而且對于每部分協議也不用它所提供的全部功能。進而,在藍牙應用開發(fā)中可以從不同的協議層入手。在開發(fā)藍牙系統時,一般采用兩種方式進行開發(fā),一種是采用只提供無線接口的簡單模塊,從藍牙子系統做起,再針對應用自行開發(fā)主芯片,該主芯片包括從基帶層到應用層的完整藍牙協議棧,這種開發(fā)方式較為復雜,但不一定需要HCI層;另一種方法是購買由供應商提供的完整的藍牙模塊,這些模塊實現了藍牙子系統的全部或部分功能,屏蔽了射頻和基帶兩個硬件協議層,可以直接在HCI基礎上進行開發(fā)。
目前供應商提供的藍牙模塊大致可分為2類,第1類為只實現了藍牙鏈路控制功能的模塊,第2類為藍牙鏈路控制與嵌入式HCI驅動功能均已實現的模塊。這2類模塊的主要不同之處在于第2類包括一個RISC(精簡指令集計算機)處理器,實現鏈路控制和HCI功能,而第1類的RISC則不具有HCI功能。在實際應用中,要根據實際情況而選擇不同類型的模塊。
如果選用集成了鏈路控制與HCI驅動功能的藍牙模塊,那么就可以在一個比較完整的平臺上進行開發(fā)。如果主機具有USB或UART接口,在藍牙模塊與主機信號電平兼容的情況下,接口連接可以不需要其它輔助硬件電路。許多情況下,USB或UART接口集成在主機的核心芯片上,所以可以實現藍牙模塊與主機的無縫接口。這種模型下的藍牙技術應用開發(fā),主要工作集中在藍牙主機端軟件的實現上,包括HCI驅動程序與傳輸層驅動程序。正是由于這種藍牙模塊實現了嵌入式HCI協議,所以應用開發(fā)可以直接從HCI層開始,避免了基帶與射頻的硬件實現,是一種全軟件式的開發(fā)模式,開發(fā)成果具有很好的可移植性。本文中正是采用了這一開發(fā)方案進行的藍牙通用外接模塊的開發(fā)。通過封裝HCI協議層,可以生成標準的HCI接口函數,為上層的應用開發(fā)(在本文指的是藍牙通用模塊)提供一個完整的平臺。
制功能的藍牙模塊,由于它不提供HCI傳輸層接口和嵌入式HCI驅動程序。此時,嵌入式HCI驅動程序的功能將轉嫁給主機來實現。這樣,與前一種開發(fā)模式相比,主機的HCI層驅動程序將變得十分復雜,開發(fā)周期也將是比較長的。
4藍牙通用外接模塊設計開發(fā)實例
筆者基于HCI成功地開發(fā)了一種在現有的供應商提供的藍牙模塊基礎上進行指令重新解釋與結構封裝的通用外接模塊。本模塊最終面向基于此通用模塊的擴展應用,提供了USB接口、UART/RS232接口、耳機接口、麥克MIC接口、鍵盤等多種接口,可同時進行數據和語音信息的傳輸。該通用外接模塊既可以單獨構成藍牙應用系統使用,也可以與主機連接使用,使用應用者很方便地借助于藍牙技術來實現應用產品的無線通訊。
為了對此通用外接模塊進行功能測試,在實驗開發(fā)階段(本文中對此通用模塊說明均是針對開發(fā)階段的),筆者使用了兩臺PC作為通用外接模塊之上的擴展應用的主體,2個通用外接模塊分別作為藍牙piconet中的主、從設備,藍牙設備通過UART或USB口由PC處接收命令和數據信息,通用外接模塊對此信息進行處理后,以無線傳輸方式將信息發(fā)至另一藍牙設備的應用主體PC處。
下面從硬件和軟件兩個方面加以介紹,本文論及的設計主要包括藍牙通用模塊及作為擴展應用主體的PC兩大部分。
4.1硬件設計
藍牙通用模塊部分硬件電路主要由語音芯片、微控制器部分(即藍牙主機部分)及藍牙模塊等組成。硬件結構如圖2所示:
其中采用了支持雙串口的DALLAS公司生產的DS89C420微控制器作為藍牙主機,兩串口分別與藍牙模塊及構建于通用模塊之上的擴展應用的主體進行通信;使用MSM7560L語音芯片;藍牙模塊采用的是Ericsson公司生產的模塊,型號為ROK101007,屬于本文提到的第2類模塊,采用ARM7芯片作為RISC處理器。
在硬件實現上,微控制器部分主要由DS89C420微控制器、電源系統、振蕩電路、復位電路、接口電平轉換電路等幾部分組成,微控制單元是核心部分。電平轉換電路用于在藍牙模塊與PC通信接口之間進行電平的轉換。另外還包括一些不同類型的接口電路、跳線開關電路以及若干狀態(tài)LED等外圍器件,以備建立于通用外接模塊之上的擴展應用及通訊狀態(tài)監(jiān)測的需要。
4.2軟件設計
4.2.1PC部分軟件設計
PC部分測試程序主要是開發(fā)藍牙應用組件,測試程序運行于Windows操作系統之上,提供了USB和串口驅動程序,應用程序函數接口(API)等,具體可分為PC串口初始化、藍牙通信參數設定、藍牙通用外接模塊控制、HCI指令封裝、數據信息處理等幾個部分。
其中第一步要做的工作是初始化計算機串口,串口參數可以根據實際需要進行選擇。第二步要進行的是藍牙模塊參數的設定,其中包括藍牙設備主從設定、藍牙模塊初始化參數的設定、程序監(jiān)測設定等幾部分。以上所有這些動態(tài)設定,是通過擴展應用主體(此外為PC)往通用外接模塊串口發(fā)送公共變量而實現的。當收到參數設定成功消息后,進行下一步,即向通用外接模塊串口發(fā)送命令消息來實現藍牙設備的初始化、查詢、鏈接建立過程,在收到通用模塊發(fā)回的鏈接建立完成的反饋信息后,即可按一定的格式將數據信息發(fā)往通用外接模塊接口,完成數據信息的無線傳輸。
4.2.2通用外接模塊軟件設計
通用外接模塊一方面從PC方的RS-232串口接收PC端的公共參數信息(用于串口初始化及藍牙模塊參數設定)、命令信息及數據信息,另一方面發(fā)送相應的HCI指令給藍牙模塊ROK101007,然后將返回的事件進行分析處理,最終將有關程序狀態(tài)、通訊數據信息返回給本地PC。軟件實現的全部功能是通過C51語言進行開發(fā)的,由專用寄存器設置子程序、中斷處理程序、定時器中斷程序、看門狗程序、鏈路初始化子程序、鏈路建立子程序、通信數據處理子程序、斷開鏈路子程序、藍牙測試子程序等功能塊來完成。所有程序信息對于通用外接模塊以外的擴展應用主體而言都是不可見的,擴展應用只需按一定的格式發(fā)送相應的信息給通用外接模塊即可完成整個通信過程,在此就不對程序進行具體的說明了。
至此,通用外接模塊開發(fā)實驗階段軟件設計完成,通過測試本模塊完全達到了預期的要求,數據傳輸正常,性能良好。
本封裝模塊之所以被加以“通用”二字來界定,是因為本模塊在功能上很好地做到了以下幾點:
(1)本模塊提供了對多種擴展應用接口的支持,包括UART/USB以及語音傳輸接口。
(2)本模塊既支持以MPC為擴展應用主體的計算機上的擴展應用,又支持以MCU為擴展主體的控制器件上的擴展應用;
(3)本模塊提供對多種操作系統的支持,目前為止,支持Windows95/98/2000/
xp及Linux操作系統。
5一種構建于通用外接模塊之上無線通訊擴展應用——裁判系統
目前,在很多大型賽事中比賽所采用的裁判打分系統大都是采用有纜連接的方式進行的,各位裁判將各自的評定的比賽成績通過有線的電纜傳輸到主控機上進行綜合評定,然后產生最終的結果。但這一系統存在著一個很明顯的不足之外,就是有纜連接所帶來的不便性,而通過采用筆者所設計的通用外接模塊后,通過在通用外接模塊的基礎上相應地增加LCD、鍵盤和MCU后,只要對外加的MCU進行簡單的編程既可實現裁判打分系統的無線通訊化。
日前,筆者參與設計的藍牙無線打分系統已被成功地用于很多大型比賽之中。
6結束語
藍牙產品的開發(fā)重在有特色的應用,在通用模塊的基礎上進行外圍設備的開發(fā)和上層軟件的編寫,可以大大地縮短產品的開發(fā)周期,為各種藍牙應用奠定了基礎,從而方便地實現產品的藍牙無線通訊,使人們擺脫各種線纜的束縛。目前基于藍牙技術的產品開發(fā),正在短距離無線通信中顯示出一股強勁的勢頭,藍牙技術的大發(fā)展期必將很快的到來。
參考文獻:
[1]BluetoothSpecialInterestGroup,
SpecificationofBluetoothSystem
Corev1.1[s],2001.
[2]馬興,梁劍,陳前斌.基于HCI協議層
的藍牙技術應用開發(fā)[J].重慶郵電學
院學報,2002,14(4):78-82.
[3]金鈍,許光辰等.藍牙技術.北京:
電子工業(yè)出版社,2001.
[4]馬建倉等.藍牙核心技術及應用.北
京:科學出版社,2003