藍牙接口系統(tǒng)軟件設(shè)計
系統(tǒng)的軟件結(jié)構(gòu)如圖1所示。軟件結(jié)構(gòu)中的初始化模塊包括0MAP59l0系統(tǒng)、鍵盤液晶、數(shù)據(jù)和語音通信、 FLASH和PC讀寫以及藍牙模塊的初始化。在初始化過程中設(shè)置鍵盤掃描時間、語音采樣頻率、顯示狀態(tài)等各 種參數(shù)。整個系統(tǒng)初始化之后,程序進人監(jiān)控模塊,監(jiān)控模塊隨時判斷各個模塊的狀態(tài),并進人相應(yīng)的處理程序。數(shù)據(jù)通信模塊控制OMAP5910和藍牙模塊的數(shù) 據(jù)接口;語音通信模塊控制0MAP5910和音頻AD/DA的接口;藍牙接口收發(fā)控制OMAP5910和藍牙模塊的信號收 發(fā);FLASH讀寫模塊控制OMAP5910對其片外FLASH的讀寫,必要時可以將某些重要數(shù)據(jù)存儲到FLASH中,此外 OMAP591 0的上電引導(dǎo)程序也存儲在FLASH中;鍵盤和顯示模塊控制系統(tǒng)的人機接口;PC通信模塊控制系統(tǒng) 和PC機的連接。
圖1 系統(tǒng)軟件結(jié)構(gòu)圖
由于0MAP5910具有C55系列DSP核,一些數(shù)字信號處理算法可以很容易地實現(xiàn)。對于語音信號,可以進行濾 波以提高語音質(zhì)量;如果傳輸音樂信號,可以加人音樂處理算法,例如混響、鑲邊、削峰等多種處理;可 以將語音壓縮后傳輸?shù)絇C機,或者解壓后播放各種格式的語音信號。使得系統(tǒng)的應(yīng)用范圍更加廣泛和實用 。
設(shè)計藍牙設(shè)備收發(fā)器的軟仵關(guān)鍵是基于藍牙模塊的軟件驅(qū)動技術(shù)。軟件驅(qū)動包括硬件鏈路管理器驅(qū)動程序 、主機控制接口(HOI)驅(qū)動程序、電源模式管理和電源控制以及其他高層驅(qū)動程序。
其中硬件鏈路管理器驅(qū)動程序與物理固件直接相連,提供USB/RS232或其他接口的驅(qū)動功能。鏈路管理器 驅(qū)動程序?qū)崿F(xiàn)了鏈路管理協(xié)議(LMP),負責(zé)處理底層鏈路控制與藍牙基帶接口,該固件支持點對點和點對 多點的通信。
HOI驅(qū)動程序根據(jù)HOI命令的各種數(shù)據(jù)及參數(shù)格式,對HOI事件數(shù)據(jù)包進行處理。HOI為主機提供了訪問微處 理器、鏈路管理器以及硬件狀態(tài)和控制寄存器的各種命令接口。主機通過HOI驅(qū)動程序提供一系列命令控制 藍牙接口,藍牙固件的HOI收到命令后,會產(chǎn)生事件返回給主機,用來指示接口的當前狀態(tài)變化。主機和 HCI之間共有以下3種類型數(shù)據(jù)。
?。?)Hal命令包。從主機發(fā)向藍牙的HOI。
?。?)Hal事件包。從藍牙的HOI發(fā)向主機。
?。?)HOI數(shù)據(jù)包??梢詮乃{牙的HOI發(fā)向主機,也可以從主機發(fā)向藍牙的Hal。包括擴展同步連接導(dǎo)向數(shù)據(jù) 和非實時的異步無連接數(shù)據(jù)。
電源模式管理可以對電源設(shè)定3種模式,分別為Hold(保持)、Sniff(喚醒)和Park(休息)模式。電源 控制提供了將電源設(shè)定為休眠狀態(tài)的方法,以便最大程度地降低系統(tǒng)功耗。
高層驅(qū)動程序則實現(xiàn)嵌入藍牙模塊的外設(shè)的驅(qū)動功能。
DSP和藍牙接口的軟件結(jié)構(gòu)分為3個層次。
?。?)系統(tǒng)的應(yīng)用程序。
?。?)為藍牙設(shè)備開發(fā)的設(shè)備驅(qū)動程序,包括藍牙的高層協(xié)議(RFCOMM和L2CAP等)。
(3)藍牙基帶部分協(xié)議:這部分協(xié)議已經(jīng)固化在藍牙模塊中。
在本系統(tǒng)中,由于采用藍牙接口模塊,其中基帶和鏈接管理協(xié)議(Link Manager Protocol,LMP)部分由藍牙模塊實現(xiàn)。用戶只需要在DSP即可。
藍牙軟件使用BlueStack編程,完成初始化、連接等功能。藍牙軟件程序流程如圖1所示。
初始化設(shè)備包括對指示燈、調(diào)試信息以及系統(tǒng)內(nèi)定時器的初始化。藍牙內(nèi)部有一小塊稱為PS的存儲區(qū),是掉電不丟失數(shù)據(jù)的,藍牙程序就是將對方地址記錄在這一存儲區(qū)里,每次啟動時都對該存儲區(qū)的藍牙地址對應(yīng)的設(shè)備建立連接。在初始化完成之后,程序還需要向底層發(fā)送消以便使藍牙程序進入消息循環(huán)。消息處理函數(shù)是整個程序的核心,所有功能的打開、連接等都由此來完成,其操作均嚴格依照藍牙協(xié)議的RFCOMM層進行。在整個系統(tǒng)中要重點考慮的是數(shù)據(jù)傳輸?shù)乃俾蕟栴}。由于當藍牙工作在1類發(fā)射功率(100mW)時,通信距離可擴展到100m,速率限制了藍牙在寬帶網(wǎng)絡(luò)中的應(yīng)用。藍牙點對點傳輸時對稱的最大有效速率為42316Kbit/s,不對稱最大有效速率為721Kbit/s,反向為5716Kbit/s。
OMAP5912通過異步串口向BRF6100發(fā)送HCI命令,BRF6100收到命令后,由固化在其ROM的藍牙協(xié)議固件處理,并將向下傳遞到LM層,LM層負責(zé)鏈路的建立、加密和設(shè)置權(quán)限。OMAP5912收到BRF6100發(fā)來的數(shù)據(jù)包,根據(jù)具體的事件采取相應(yīng)的處理。整個異步串口的通信由以下4個功能模塊組成。
?。?)初始化模塊。初始化藍牙芯片以及各狀態(tài)變量,包括ΠFO、中斷寄存器和傳輸波特率等。
(2)事務(wù)調(diào)度模塊。根據(jù)藍牙芯片返回的事件狀態(tài)參數(shù)對系統(tǒng)的事務(wù)進行調(diào)度,跳轉(zhuǎn)到返回事件處理模塊中。
?。?)返回事件處理模塊;各個事件處理子程序分別對應(yīng)不同事件的處理。
?。?)中斷模塊;負責(zé)數(shù)據(jù)包和事件包的接收和發(fā)送。
評論