基于BlueCore2External藍牙芯片的USB接口設(shè)計
關(guān)鍵詞:藍牙;主機控制器接口(HCI);USB;軟件開發(fā)包DDK
1前言
藍牙是一種全新的無線數(shù)據(jù)交換技術(shù),他的應(yīng)用省卻了各種數(shù)字設(shè)備之間需要經(jīng)過 復(fù)雜的軟件安裝與調(diào)試的有線連接過程,做到緊緊咬合、無縫連接,使各種電子設(shè)備與家用 電器融為一體,給人們的生活和工作帶來全新的感受。
藍牙技術(shù)集成到各種數(shù)字設(shè)備中的方式有2種:一種是單微控制器方式,即所有的藍牙低層傳輸協(xié)議(包括藍牙射頻、基帶與鏈路控制器、鏈路管理器)與高層傳輸協(xié)議(包括邏輯鏈 路控制與適配協(xié)議、服務(wù)發(fā)現(xiàn)協(xié)議、串口仿真協(xié)議、網(wǎng)絡(luò)封裝協(xié)議等)以及用戶應(yīng)用程序都 集成到一個模塊當(dāng)中,整個處理過程由一個微處理器來完成;另一種是雙微控制器方式,即 藍牙協(xié)議與用戶應(yīng)用程序分別由主機和主機控制器來實現(xiàn)(低層傳輸協(xié)議一般通過藍牙硬件模塊實現(xiàn),模塊內(nèi)部嵌入的微處理器稱為主機控制器,高層傳輸協(xié)議和用戶應(yīng)用程序在個人計算機或嵌入的單片機、DSP等上運行,稱為主機),主機和主機控制器之間通過標 準的物理總線接口(USB,RS 232等)連接。
在藍牙的主機-主機控制器連接模型中,主機接口HCI(Host Controller Interface)作為藍牙軟件協(xié)議堆棧中軟硬件之間的接口,他提供了一個控制基帶與鏈路控制器、鏈路管理器、狀態(tài)寄存器等硬件的統(tǒng)一接口。目前,藍牙HCI傳輸層的物理接口有通用串行總線USB,串行端口RS 232、通用異步收發(fā)器UART等。當(dāng)主機和主機控制器通信時,HCI層以上的協(xié)議 在主機上運行,而HCI層以下的協(xié)議由藍牙主機控制器硬件完成,他們通過HCI傳輸層進行通信。主機和主機控制器中都有HCI,他們具有相同的接口標準。主機控制器中的HCI解釋來自主機的信息并將信息發(fā)向相應(yīng)的硬件模塊單元,同時還將模塊中的信息(包括數(shù)據(jù)和硬件/固件信息)根據(jù)需要向上轉(zhuǎn)發(fā)給主機。如圖1所示為藍牙主機-主機控制器模型。
藍牙主機-主機控制器模型方案采用了CSR公司的BlueCore2External藍牙芯片的藍牙模塊、附加模塊和對接對象模塊來實現(xiàn)藍牙的USB接口。
2藍牙模塊、附加模塊和對接對象模塊概述
2.1藍牙模塊
2.1.1BlueCore2External芯片
BlueCore2External是一個單一芯片無線電和基帶鏈路控制器的BlueTooth 2.4 GH z系統(tǒng),他采用0.18 μmCMOS技術(shù)集成了射頻、基帶和帶有全部集成藍牙協(xié)議棧的MCU以 及收發(fā)器。工作電源為1.8 V,相對該公司的第一代藍牙產(chǎn)品BlueCore1提高了內(nèi)部的RAM(3 2 kB),對擴展的外部FLASH提高到了8 Mb,且能量消耗更低。采用BlueCore2Extern al芯片進行設(shè)計減少了外部射頻元件的數(shù)目,確保產(chǎn)品模塊的成本減到最小。裝置合并自動校正和建立內(nèi)部的自我測試程序使發(fā)展簡單化,類型一致和實現(xiàn)生產(chǎn)測試。所有的硬件和裝 置固件都與BlueTooth規(guī)格v1.1完全適用。若配合使用包含有CSR藍牙協(xié)議棧的外部閃存,就可以實現(xiàn)數(shù)據(jù)和語音通信。該芯片除了藍牙規(guī)范v1.1中定義的USB接口和UART接口,以及PCMCODEC音頻接口外,還定義了串行外設(shè)接口,并行可編程I/O端口和I2C總線接口,這些接口使得編程仿真、調(diào)試和測試更加方便,也大大加強了與外部設(shè)備的接口能力。該芯片的內(nèi)部結(jié)構(gòu)如圖2所示。
2.1.2MBM29LV800BA90PBT閃存器芯片
MBM29LV800BA90PBT是FUJITSU公司生產(chǎn)的8 Mb閃速存儲器。他是通過每8 b1 MB方式或者每16 b512 kB組織起來的,3.3 V單電源供電,具有編程和擦 除功能,可將系統(tǒng)電源需求減到最小,支持JEDEC控制標準,與E2PROM使用相同的控制軟件。?
2.2附加模塊
附加模塊由2塊芯片組成即MAX878芯片和XC6209B182MR芯片,這是2塊電壓轉(zhuǎn)換芯片,主要 為藍牙模塊中的BlueCore2External芯片及閃存芯片MBM29LV800BA90PBT提 供電壓。這2塊芯片的電壓由對接對象模塊USB設(shè)備提供,由于USB插座均由PC機內(nèi)部獲得5 V電源,而BlueCore2External芯片需1.8 V和3.3 V兩種電源,閃存芯片MBM29LV 800BA90PBT需3.3 V單電源,故電壓轉(zhuǎn)換芯片需完成由5 V轉(zhuǎn)換到1.8 V和3.3 V。MAX878芯片完成由5 V到3.3 V的轉(zhuǎn)換,XC6209B182MR芯片完成由3.3 V到1.8 V的轉(zhuǎn)換。
2.3對接對象模塊USB
USB是由“通用串行總線實施論壇”組織公開發(fā)布推廣的一種串行接口標準。藍牙沒有為USB 接口開發(fā)新的協(xié)議,而是使用已有的USB協(xié)議。USB接口支持符合藍牙規(guī)范v1.1,可以和其他數(shù)字設(shè)備兼容通信,USB設(shè)備硬件能夠以2種方式裝入設(shè)備中,一種是形狀類似于U盤的US B dongle;另一種是集成到電腦的主板上面。具體藍牙USB接口端點的配置請參考藍牙規(guī)范1.1。
綜上所述,具體設(shè)計的硬件信號流程如圖3所示。
?
3軟件程序?qū)崿F(xiàn)
對于USB硬件驅(qū)動程序可以使用微軟提供的軟件開發(fā)包DDK,該軟件包為驅(qū)動程序開發(fā)者提供 了用于開發(fā)驅(qū)動程序所需的資源文件、編譯連接程序、開發(fā)技術(shù)文檔等。藍牙協(xié)議沒有為US B接口開發(fā)新的協(xié)議,而是使用已有的USB協(xié)議,限于篇幅,對于USB接口硬件驅(qū)動程序部分不 再詳述。只著重介紹通過藍牙HCI傳輸層USB的物理接口來實現(xiàn)藍牙連接和數(shù)據(jù)通信。以VC++6.0為軟件開發(fā)平臺,由于條件所限,只給出點對點的藍牙連接和通信的程序,至于點對多點的只需對某些參數(shù)稍做修改。點對點的軟件的流程框圖如圖4所示。
?
代碼如下:
(1) 打開設(shè)備,同時要開啟HCI事件,HCI ACL,HCI SCO三個從主機控制器返回到主機上的事件的線程:
?
(2) 對本地藍牙設(shè)備配置
通過調(diào)用此函數(shù)來實現(xiàn)對藍牙設(shè)備的配置,包括連接建立最大的響應(yīng)時間、尋呼最大響應(yīng)時間、加密、鑒權(quán)、流量控制、讀取本地藍牙設(shè)備的名字以及本地藍牙設(shè)備地址BD_ADDR等。
(3) 查詢有效范圍內(nèi)的其他藍牙設(shè)備
在查詢成功的同時通過HCI事件線程Get_HCI_Event()獲取對方藍牙設(shè)備的地址和雙方的時鐘偏差,這2個是決定在下一步是否能建立ACL連接的關(guān)鍵參數(shù)。
(4) 建立ACL連接
在建立ACL連接成功的同時,通過HCI事件線程Get_HCI_Event()獲取ACL連接句柄,在以后建立SCO連接以及發(fā)送ACL數(shù)據(jù)都將使用這個句柄來完成相應(yīng)的操作。
(5) 建立SCO連接
在建立SCO連接成功的同時,通過HCI事件線程Get_HCI_Event()獲取SCO連接句柄,在以后進行發(fā)送SCO數(shù)據(jù)時要使用這個句柄來完成相應(yīng)的操作。
(6) 建立完ACL和SCO連接后,就可以進行ACL和SCO數(shù)據(jù)發(fā)送和接收,通過線程Get_ACL_Data(),Get_SCO_Data()獲取ACL和SCO數(shù)據(jù)
(7) 斷開連接
參考文獻
[1]Bluetooth SIG Specification of Bluetooth System Version 1. 1[S].2001?
[2]馬建倉,羅亞軍,趙玉亭.藍牙核心技術(shù)及應(yīng)用[M].北京:科學(xué)出版社,2003?
[3]http://www.csr.comBlueCore2External Product Data Sheet 2004?
[4]宋春榮.通用集成電路速查手冊[M].濟南:山東科學(xué)技術(shù)出版社,1995
[5]梁廷貴.現(xiàn)代集成電路實用手冊 譯碼器 編碼器 數(shù)據(jù)選擇器 電子開關(guān)電源分冊[M].北京:科學(xué)技術(shù)文獻出版社,2002
評論