BlueCore2型模塊及其HCI傳輸驅動的實現(xiàn)
1 引言
藍牙技術是一種短距離無線通信技術。遵循開放系統(tǒng)互聯(lián)參考模型(osi/rm),采用分層的協(xié)議棧。主機控制接口(hci)位于藍牙協(xié)議棧的l2cap(邏輯鏈路控制與適配協(xié)議)層和lmp(鏈路管理協(xié)議)層之間,是藍牙協(xié)議棧中軟件與硬件的接口。它為上層軟件調用下層(基帶和鏈路管理層)狀態(tài)寄存器和控制寄存器等硬件提供了統(tǒng)一的指令接口。藍牙設備高層軟件和底層硬件模塊接口之間的消息和數(shù)據(jù)傳遞必須通過藍牙主機控制器接口的解釋才能進行。hci以上的協(xié)議軟件實體運行在主機上,而hci以下的功能由藍牙模塊來完成,二者之間通過傳輸層進行交互傳輸數(shù)據(jù)。
本文引用地址:http://m.butianyuan.cn/article/20988.htm2 bluecore2-external的特點及結構
bluecore2-external[1]是英國csr公司推出的基于藍牙技術的收發(fā)電路。工作在2.4ghz的ism(工業(yè)、科學、醫(yī)學)頻段,主要應用于pc、無線手機、pda、鼠標、鍵盤、數(shù)碼相機等。其主要特點如下:
工作電壓為1.8v;
完全和別的藍牙器件匹配;
采用0.18μm cmos工藝;
支持8mb的外圍flash;
外圍元器件較少。
該電路集成了藍牙協(xié)議棧的射頻和基帶部分,具有spi、uart、usb、pio、pcm接口。其中,spi、uart、usb接口主要用來傳輸數(shù)據(jù);pio接口為可編程接口;pcm接口用來傳輸語音。在bluecore2-external中uart接口的最大傳輸速率為1.5mb/s,能夠達到藍牙標準中規(guī)定的723.2kb/s的數(shù)據(jù)傳輸速率。其內部結構如圖1所示。
3 硬件電路設計
系統(tǒng)的硬件組成如圖2所示。串口收發(fā)器采用常用的max232acpe,完成bluecore2與9針串口之間的電平轉換。串口和主機相連,主機可以是pc、arm或單片機。這里為pc上的串口。藍牙模塊為主機控制器。這樣,藍牙主機可以和藍牙主機控制器之間實現(xiàn)通信。
4 hci接口分析
hci通過分組的方式傳輸數(shù)據(jù)(data)、命令(command)和事件(event)[2],所有主機和主機控制器之間的通信都以分組的形式進行。在hci分組中。數(shù)據(jù)分組是雙向的,命令分組只能從主機發(fā)往主機控制器,事件分組只能從主機控制器發(fā)向主機。主機發(fā)出的大多數(shù)命令分組都會由主機控制器產(chǎn)生相應的事件分組作為響應。
藍牙標準定義了3種類型的hci傳輸層[3]:usb、rs232及uart。筆者提出了存在于hci和uart之間的層-hci傳輸驅動層,它的上層為hci層,下層為uart驅動層,實現(xiàn)hci和uart
之間的數(shù)據(jù)傳輸。
藍牙hci接口、藍牙主機及藍牙主機控制器之間的協(xié)議棧層次[3]如圖3所示。藍牙主機控制器即bluecore2模塊集成了藍牙協(xié)議棧的射頻、基帶和鏈路管理部分。藍牙模塊通過uart硬件連接到藍牙主機。在藍牙主機中運行藍牙uart驅動程序、hci傳輸驅動程序、hci的api函數(shù)及上層協(xié)議棧。
5 程序設計與實現(xiàn)[4]
在發(fā)送數(shù)據(jù)階段,hci傳輸驅動層負責把由上層傳輸過來的hci數(shù)據(jù)包傳給uart驅動層,然后通過uart驅動層把數(shù)據(jù)傳輸?shù)剿{牙主機控制器。在接收數(shù)據(jù)時,hci傳輸驅動層的作用正好相反。
在驅動程序的設計中,把傳輸狀態(tài)分為空閑態(tài)、傳輸類型態(tài)、傳輸頭態(tài)和傳輸數(shù)據(jù)態(tài)。hci數(shù)據(jù)發(fā)送時根據(jù)傳輸狀態(tài)來判斷在哪一狀態(tài)。發(fā)送的數(shù)據(jù)包由類型字段、頭字段和數(shù)據(jù)構成。在發(fā)送數(shù)據(jù)階段,數(shù)據(jù)傳輸?shù)念愋妥侄螛酥緜鬏數(shù)氖敲?、acl數(shù)據(jù)還是sco數(shù)據(jù),然后根據(jù)發(fā)送的類型來確定發(fā)送頭字段的長度,最后再發(fā)送數(shù)據(jù)。在接收數(shù)據(jù)階段,數(shù)據(jù)傳輸?shù)念愋妥侄螛酥緜鬏數(shù)氖鞘录?、acl數(shù)據(jù)還是sco數(shù)據(jù)。不同的是在接收數(shù)據(jù)階段需要緩沖來接收數(shù)據(jù)。hci傳輸驅動程序的數(shù)據(jù)結構如下所示:
在發(fā)送流程中,先對發(fā)送的狀態(tài)、看門狗、uart等初始化。使其處在待發(fā)送數(shù)據(jù)狀態(tài)。具體的發(fā)送流程如圖4所示。
接收流程和發(fā)送流程類似,所不同的是需要緩沖來接收,在此不再贅述。
本文主要解決了存在于藍牙uart和hci層之間的hci傳輸驅動問題,給出了硬件設計方案、協(xié)議??蚣軋D和程序流程,實現(xiàn)了藍牙模塊和藍牙主機之間的數(shù)據(jù)傳輸,在無線傳輸中有較好的應用價值。
評論