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