<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > BlueCore2型模塊及其HCI傳輸驅(qū)動(dòng)的實(shí)現(xiàn)

          BlueCore2型模塊及其HCI傳輸驅(qū)動(dòng)的實(shí)現(xiàn)

          ——
          作者:中國(guó)海洋大學(xué)信息學(xué)院 李義軍 時(shí)間:2006-09-16 來(lái)源:國(guó)外電子元器件 收藏
          1 引言 

          藍(lán)牙技術(shù)是一種短距離通信技術(shù)。遵循開(kāi)放系統(tǒng)互聯(lián)參考模型(OSI/RM),采用分層的協(xié)議棧。主機(jī)控制接口(HCI)位于藍(lán)牙協(xié)議棧的L2CAP(邏輯鏈路控制與適配協(xié)議)層和LMP(鏈路管理協(xié)議)層之間,是藍(lán)牙協(xié)議棧中軟件與硬件的接口。它為上層軟件調(diào)用下層(基帶和鏈路管理層)狀態(tài)寄存器和控制寄存器等硬件提供了統(tǒng)一的指令接口。藍(lán)牙設(shè)備高層軟件和底層硬件接口之間的消息和數(shù)據(jù)傳遞必須通過(guò)藍(lán)牙主機(jī)控制器接口的解釋才能進(jìn)行。HCI以上的協(xié)議軟件實(shí)體運(yùn)行在主機(jī)上,而HCI以下的功能由藍(lán)牙來(lái)完成,二者之間通過(guò)傳輸層進(jìn)行交互傳輸數(shù)據(jù)。

          2 BlueCore2-external的特點(diǎn)及結(jié)構(gòu)

          BlueCore2-external[1]是英國(guó)CSR公司推出的基于藍(lán)牙技術(shù)的收發(fā)電路。工作在2.4GHz的ISM(工業(yè)、科學(xué)、醫(yī)學(xué))頻段,主要應(yīng)用于PC、手機(jī)、PDA、鼠標(biāo)、鍵盤(pán)、數(shù)碼相機(jī)等。其主要特點(diǎn)如下:

          工作電壓為1.8V;

          完全和別的藍(lán)牙器件匹配;

          采用0.18μm CMOS工藝;

          支持8Mb的外圍FLASH;

          外圍元器件較少。

          該電路集成了藍(lán)牙協(xié)議棧的射頻和基帶部分,具有SPI、UART、USB、PIO、PCM接口。其中,SPI、UART、USB接口主要用來(lái)傳輸數(shù)據(jù);PIO接口為可編程接口;PCM接口用來(lái)傳輸語(yǔ)音。在BlueCore2-External中UART接口的最大傳輸速率為1.5Mb/s,能夠達(dá)到藍(lán)牙標(biāo)準(zhǔn)中規(guī)定的723.2kb/s的數(shù)據(jù)傳輸速率。其內(nèi)部結(jié)構(gòu)如圖1所示。

                                   內(nèi)部結(jié)構(gòu)

          3 硬件電路設(shè)計(jì)

          系統(tǒng)的硬件組成如圖2所示。串口收發(fā)器采用常用的MAX232ACPE,完成BlueCore2與9針串口之間的電平轉(zhuǎn)換。串口和主機(jī)相連,主機(jī)可以是PC、ARM或單片機(jī)。這里為PC上的串口。藍(lán)牙為主機(jī)控制器。這樣,藍(lán)牙主機(jī)可以和藍(lán)牙主機(jī)控制器之間實(shí)現(xiàn)通信。

                            系統(tǒng)的硬件組成

          4 HCI接口分析

          HCI通過(guò)分組的方式傳輸數(shù)據(jù)(Data)、命令(Command)和事件(Event)[2],所有主機(jī)和主機(jī)控制器之間的通信都以分組的形式進(jìn)行。在HCI分組中。數(shù)據(jù)分組是雙向的,命令分組只能從主機(jī)發(fā)往主機(jī)控制器,事件分組只能從主機(jī)控制器發(fā)向主機(jī)。主機(jī)發(fā)出的大多數(shù)命令分組都會(huì)由主機(jī)控制器產(chǎn)生相應(yīng)的事件分組作為響應(yīng)。

          藍(lán)牙標(biāo)準(zhǔn)定義了3種類型的HCI傳輸層[3]:USB、RS232及UART。筆者提出了存在于HCI和UART之間的層-HCI傳輸驅(qū)動(dòng)層,它的上層為HCI層,下層為UART驅(qū)動(dòng)層,實(shí)現(xiàn)HCI和UART
          之間的數(shù)據(jù)傳輸。

          藍(lán)牙HCI接口、藍(lán)牙主機(jī)及藍(lán)牙主機(jī)控制器之間的協(xié)議棧層次[3]如圖3所示。藍(lán)牙主機(jī)控制器即BlueCore2模塊集成了藍(lán)牙協(xié)議棧的射頻、基帶和鏈路管理部分。藍(lán)牙模塊通過(guò)UART硬件連接到藍(lán)牙主機(jī)。在藍(lán)牙主機(jī)中運(yùn)行藍(lán)牙UART驅(qū)動(dòng)程序、HCI傳輸驅(qū)動(dòng)程序、HCI的API函數(shù)及上層協(xié)議棧。

          協(xié)議棧層次

          5 程序設(shè)計(jì)與實(shí)現(xiàn)[4]

          在發(fā)送數(shù)據(jù)階段,HCI傳輸驅(qū)動(dòng)層負(fù)責(zé)把由上層傳輸過(guò)來(lái)的HCI數(shù)據(jù)包傳給UART驅(qū)動(dòng)層,然后通過(guò)UART驅(qū)動(dòng)層把數(shù)據(jù)傳輸?shù)剿{(lán)牙主機(jī)控制器。在接收數(shù)據(jù)時(shí),HCI傳輸驅(qū)動(dòng)層的作用正好相反。

          在驅(qū)動(dòng)程序的設(shè)計(jì)中,把傳輸狀態(tài)分為空閑態(tài)、傳輸類型態(tài)、傳輸頭態(tài)和傳輸數(shù)據(jù)態(tài)。HCI數(shù)據(jù)發(fā)送時(shí)根據(jù)傳輸狀態(tài)來(lái)判斷在哪一狀態(tài)。發(fā)送的數(shù)據(jù)包由類型字段、頭字段和數(shù)據(jù)構(gòu)成。在發(fā)送數(shù)據(jù)階段,數(shù)據(jù)傳輸?shù)念愋妥侄螛?biāo)志傳輸?shù)氖敲睢CL數(shù)據(jù)還是SCO數(shù)據(jù),然后根據(jù)發(fā)送的類型來(lái)確定發(fā)送頭字段的長(zhǎng)度,最后再發(fā)送數(shù)據(jù)。在接收數(shù)據(jù)階段,數(shù)據(jù)傳輸?shù)念愋妥侄螛?biāo)志傳輸?shù)氖鞘录?、ACL數(shù)據(jù)還是SCO數(shù)據(jù)。不同的是在接收數(shù)據(jù)階段需要緩沖來(lái)接收數(shù)據(jù)。HCI傳輸驅(qū)動(dòng)程序的數(shù)據(jù)結(jié)構(gòu)如下所示:

                 
           

          在發(fā)送流程中,先對(duì)發(fā)送的狀態(tài)、看門(mén)狗、UART等初始化。使其處在待發(fā)送數(shù)據(jù)狀態(tài)。具體的發(fā)送流程如圖4所示。

              具體的發(fā)送流程

          接收流程和發(fā)送流程類似,所不同的是需要緩沖來(lái)接收,在此不再贅述。

          本文主要解決了存在于藍(lán)牙UART和HCI層之間的HCI傳輸驅(qū)動(dòng)問(wèn)題,給出了硬件設(shè)計(jì)方案、協(xié)議棧框架圖和程序流程,實(shí)現(xiàn)了藍(lán)牙模塊和藍(lán)牙主機(jī)之間的數(shù)據(jù)傳輸,在傳輸中有較好的應(yīng)用價(jià)值。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();