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