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