基于MCU實現藍牙與PC機之間HCI層傳輸
2 藍牙主機控制器接口(HCI) HCI層是藍牙協議棧中軟硬件之間的接口,它提供了一個控制基帶與鏈路控制器、鏈路管理器、狀態寄存器等硬件的統一接口。HCI層以下的協議由藍牙模塊實現,HCI層以上的協議在主機上運行,它們通過HCI傳輸層進行通信。主機與主機控制器通過HCI收發分組方式進行信息交換,用指令—應答(Command-Response)方式實現控制。 HCI分組有三種類型:指令分組(Command Packet)、事件分組(Event Packet)和數據分組(Data Packet)。指令分組只從主機發向主機控制器;事件分組只從主機控制器發向主機,用以說明指令分組的執行情況;數據分組在主機和主機控制器間雙向傳輸。數據分組分為ACL數據分組和SCO數據分組。 3 系統軟件的設計 本系統中藍牙模塊與單片機在同一塊印刷電路板上,可采用HCI的UART傳輸層進行數據傳輸。在單片機與PC機之間采用RS232接口標準,用MAX3222芯片進行電平轉換。PC機與單片機之間分組傳輸格式如圖2所示。
3.1 PC機部分軟件設計 PC部分程序主要是開發藍牙應用組件及在此組件基礎上構建應用程序。主要設計串口的驅動程序,并對HCI指令進行函數封裝,提供相應的應用程序函數接口(API)。軟件主要包括串口驅動程序及HCI指令封裝部分等。組件部分接收應用程序發來的各種操作請求并負責與自身的接口驅動程序及HCI封裝函數進行通信。應用程序需要做的只是對組件部分進行串口及藍牙參數的設置,向其發送一定格式的命令和數據信息,以及實時的顯示及相應的處理。 3.2 單片機部分軟件設計 本文中單片機的軟件設計是針對以MPU為主體的主機應用模式。由于對HCI指令的處理已在應用主體中以組件形式實現,故此時單片機部分軟件設計可不必考慮對HCI指令及事件的處理,所要做的是將主機發送的HCI信息經過校驗后正確地發送給藍牙模塊,同時,將來自藍牙模塊的信息加上校驗后發往主機。 本部分軟件實現的全部功能是通過匯編語言開發的,用W77E58的第一個串口實現與PC機的通信,用第二個串口實現與藍牙模塊通信,流程圖如圖3所示。圖3本程序已經過調試,數據傳輸正常,性能良好。 本文探討了應用雙串口單片機實現藍牙HCI數據傳輸的方法,給出了詳盡的通信流程及具體的軟硬件設計方案,系統在一些短距離無線傳輸應用中有較好的應用價值。














評論