基于MCU實(shí)現(xiàn)藍(lán)牙與PC機(jī)之間HCI層傳輸 作者: 時(shí)間:2007-03-09 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對(duì)面交流海量資料庫查詢 收藏 摘要:分析了藍(lán)牙HCI層的主要功能,并簡(jiǎn)述了藍(lán)牙HCI層數(shù)據(jù)傳輸?shù)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/單片機(jī)">單片機(jī)控制方案。HCI指令從RS232串口通過單片機(jī)的UART輸入,經(jīng)校驗(yàn)后發(fā)送至藍(lán)牙模塊,藍(lán)牙模塊返回的HCI事件在單片機(jī)內(nèi)進(jìn)行分組打包后發(fā)送至PC機(jī)。關(guān)鍵詞:藍(lán)牙協(xié)議HCI 單片機(jī) UART藍(lán)牙模塊 藍(lán)牙是正在興起的短距離無線通信技術(shù),工作在2.4GHz ISM頻段。藍(lán)牙技術(shù)可在各種移動(dòng)設(shè)備、計(jì)算機(jī)外設(shè)等數(shù)字設(shè)備間實(shí)現(xiàn)廉價(jià)的無線連接,靈活便捷地實(shí)現(xiàn)設(shè)備間的數(shù)據(jù)交換。本文介紹利用雙串口單片機(jī)在PC機(jī)與藍(lán)牙模塊間實(shí)現(xiàn)藍(lán)牙HCI層數(shù)據(jù)傳輸。 1 系統(tǒng)的硬件組成 采用愛立信生產(chǎn)的ROK 101 007藍(lán)牙模塊,使用51增強(qiáng)型單片機(jī)W77E58,用MAX3222進(jìn)行RS232轉(zhuǎn)換。系統(tǒng)硬件框圖如圖1所示。 ROK 101 007藍(lán)牙模塊同時(shí)支持?jǐn)?shù)據(jù)和語音傳輸。主機(jī)與模塊間可以通過UART和I2C接口連接,射頻輸出功率等級(jí)為2級(jí)(2.5mW),支持點(diǎn)對(duì)多點(diǎn)連接。 W77E58單片機(jī)與標(biāo)準(zhǔn)80C52管腳兼容,指令集與MCS-51兼容,具有兩個(gè)全雙工串口,12個(gè)中斷源,32KB大容量Flash存儲(chǔ)器,1KB片上SRAM。2 藍(lán)牙主機(jī)控制器接口(HCI) HCI層是藍(lán)牙協(xié)議棧中軟硬件之間的接口,它提供了一個(gè)控制基帶與鏈路控制器、鏈路管理器、狀態(tài)寄存器等硬件的統(tǒng)一接口。HCI層以下的協(xié)議由藍(lán)牙模塊實(shí)現(xiàn),HCI層以上的協(xié)議在主機(jī)上運(yùn)行,它們通過HCI傳輸層進(jìn)行通信。主機(jī)與主機(jī)控制器通過HCI收發(fā)分組方式進(jìn)行信息交換,用指令—應(yīng)答(Command-Response)方式實(shí)現(xiàn)控制。 HCI分組有三種類型:指令分組(Command Packet)、事件分組(Event Packet)和數(shù)據(jù)分組(Data Packet)。指令分組只從主機(jī)發(fā)向主機(jī)控制器;事件分組只從主機(jī)控制器發(fā)向主機(jī),用以說明指令分組的執(zhí)行情況;數(shù)據(jù)分組在主機(jī)和主機(jī)控制器間雙向傳輸。數(shù)據(jù)分組分為ACL數(shù)據(jù)分組和SCO數(shù)據(jù)分組。 3 系統(tǒng)軟件的設(shè)計(jì) 本系統(tǒng)中藍(lán)牙模塊與單片機(jī)在同一塊印刷電路板上,可采用HCI的UART傳輸層進(jìn)行數(shù)據(jù)傳輸。在單片機(jī)與PC機(jī)之間采用RS232接口標(biāo)準(zhǔn),用MAX3222芯片進(jìn)行電平轉(zhuǎn)換。PC機(jī)與單片機(jī)之間分組傳輸格式如圖2所示。3.1 PC機(jī)部分軟件設(shè)計(jì) PC部分程序主要是開發(fā)藍(lán)牙應(yīng)用組件及在此組件基礎(chǔ)上構(gòu)建應(yīng)用程序。主要設(shè)計(jì)串口的驅(qū)動(dòng)程序,并對(duì)HCI指令進(jìn)行函數(shù)封裝,提供相應(yīng)的應(yīng)用程序函數(shù)接口(API)。軟件主要包括串口驅(qū)動(dòng)程序及HCI指令封裝部分等。組件部分接收應(yīng)用程序發(fā)來的各種操作請(qǐng)求并負(fù)責(zé)與自身的接口驅(qū)動(dòng)程序及HCI封裝函數(shù)進(jìn)行通信。應(yīng)用程序需要做的只是對(duì)組件部分進(jìn)行串口及藍(lán)牙參數(shù)的設(shè)置,向其發(fā)送一定格式的命令和數(shù)據(jù)信息,以及實(shí)時(shí)的顯示及相應(yīng)的處理。 3.2 單片機(jī)部分軟件設(shè)計(jì) 本文中單片機(jī)的軟件設(shè)計(jì)是針對(duì)以MPU為主體的主機(jī)應(yīng)用模式。由于對(duì)HCI指令的處理已在應(yīng)用主體中以組件形式實(shí)現(xiàn),故此時(shí)單片機(jī)部分軟件設(shè)計(jì)可不必考慮對(duì)HCI指令及事件的處理,所要做的是將主機(jī)發(fā)送的HCI信息經(jīng)過校驗(yàn)后正確地發(fā)送給藍(lán)牙模塊,同時(shí),將來自藍(lán)牙模塊的信息加上校驗(yàn)后發(fā)往主機(jī)。 本部分軟件實(shí)現(xiàn)的全部功能是通過匯編語言開發(fā)的,用W77E58的第一個(gè)串口實(shí)現(xiàn)與PC機(jī)的通信,用第二個(gè)串口實(shí)現(xiàn)與藍(lán)牙模塊通信,流程圖如圖3所示。圖3本程序已經(jīng)過調(diào)試,數(shù)據(jù)傳輸正常,性能良好。 本文探討了應(yīng)用雙串口單片機(jī)實(shí)現(xiàn)藍(lán)牙HCI數(shù)據(jù)傳輸?shù)姆椒?,給出了詳盡的通信流程及具體的軟硬件設(shè)計(jì)方案,系統(tǒng)在一些短距離無線傳輸應(yīng)用中有較好的應(yīng)用價(jià)值。
評(píng)論