藍(lán)牙技術(shù)的無線顯示屏系統(tǒng)設(shè)計(jì)
引言
藍(lán)牙技術(shù)是一種用于替代有線電纜的短距離無線通信技術(shù)。它是由多家公司發(fā)起的SIG組織制定的無線通信技術(shù)標(biāo)準(zhǔn),目的是取代現(xiàn)有的PC、打印機(jī)、傳真機(jī)、移動(dòng)電話和家庭網(wǎng)關(guān)等設(shè)備上的有線接口,為個(gè)人提供語音數(shù)據(jù)和普通數(shù)據(jù)的無線傳輸。藍(lán)牙設(shè)備的工作頻段選在全世界范圍內(nèi)都可以自由使用的2.4 GHz的ISM頻段;成本低,功耗低,體積小,通信距離短,安全性高,能夠同時(shí)傳送普通數(shù)據(jù)和語音數(shù)據(jù),可以組成微微網(wǎng)和散射網(wǎng)等。它已經(jīng)廣泛應(yīng)用在移動(dòng)電話、PDA、無線耳機(jī)、筆記本電腦等眾多設(shè)備上。ISM頻段是對(duì)所有無線電系統(tǒng)都開放的頻段,因此使用其中的某個(gè)頻段都會(huì)遇到不可預(yù)測(cè)的干擾源。例如某些家電、無繩電話、汽車房開門器、微波爐等,都可能是干擾。為此,藍(lán)牙技術(shù)還特別設(shè)計(jì)了快速確認(rèn)和跳頻方案,以確保鏈路穩(wěn)定。
本文介紹一種藍(lán)牙無線顯示屏系統(tǒng)的設(shè)計(jì)方案。使用藍(lán)牙技術(shù)可以短距離無線控制顯示終端,實(shí)現(xiàn)圖像和字符數(shù)據(jù)的無線傳輸和顯示,免去了有線連接所帶來的缺陷,可以應(yīng)用在多種領(lǐng)域。
1系統(tǒng)總體設(shè)計(jì)
該無線圖形顯示屏系統(tǒng)主要由兩部分組成:主機(jī)部分和顯示終端部分。主機(jī)負(fù)責(zé)控制命令以及需要顯示數(shù)據(jù)的發(fā)送,顯示終端部分負(fù)責(zé)接收和顯示。系統(tǒng)結(jié)構(gòu)如圖1所示。
主機(jī)部分由裝有Linux操作系統(tǒng)的PC機(jī)和BlueCore4藍(lán)牙模塊通過USB接口連接組成。
顯示終端由以ARM9微控制器S3C2440A為核心的嵌入式Linux平臺(tái)加上BlueCore4藍(lán)牙模塊以及LCD液晶顯示屏組成。Linux操作系統(tǒng)安裝在NAND FLASH中,并連接了64 MB的外擴(kuò)RAM。由于S3C2440A接口比較豐富,所以系統(tǒng)硬件具有較好的擴(kuò)展性能。
系統(tǒng)通過藍(lán)牙協(xié)議棧的RFCOMM協(xié)議層進(jìn)行通信。RFCOMM協(xié)議提供串行數(shù)據(jù)傳輸,并能在2臺(tái)藍(lán)牙設(shè)備之間同時(shí)維持多達(dá)60個(gè)連接,可以同時(shí)支持遺留串行端口應(yīng)用程序以及其他應(yīng)用程序中的OBEX協(xié)議。藍(lán)牙協(xié)議棧的結(jié)構(gòu)框圖如圖2所示。
系統(tǒng)的工作過程為:系統(tǒng)初始化以后,主機(jī)和顯示終端建立藍(lán)牙連接。連接成功以后,主機(jī)應(yīng)用程序通過藍(lán)牙模塊向顯示終端發(fā)送顯示的命令,顯示終端根據(jù)對(duì)應(yīng)命令進(jìn)行接收?qǐng)D像數(shù)據(jù)或者字符數(shù)據(jù)等操作,然后通過LCD控制器將數(shù)據(jù)發(fā)送到LCD液晶顯示屏。系統(tǒng)連接成功以后,顯示終端可以根據(jù)收到的數(shù)據(jù)實(shí)時(shí)地顯示不同的圖像和字符數(shù)據(jù),直到主機(jī)發(fā)出退出命令系統(tǒng)后結(jié)束通信。
2系統(tǒng)硬件設(shè)計(jì)
主機(jī)端和顯示終端都使用了CSR公司BlueCore4-ROM芯片組成的藍(lán)牙無線收發(fā)模塊。BlueCore4系列符合2.0版藍(lán)牙標(biāo)準(zhǔn),并與現(xiàn)有1.1版和1.2版藍(lán)牙設(shè)備完全兼容。這里采用的BlueCore4-ROM芯片具有很高的集成度,需要很少的外圍露件。它提供了UART、USB2.0等主機(jī)接口,并且提供了PCM音頻接口以及SPI接口。具有支持微微網(wǎng)和散射網(wǎng),低功耗,和手機(jī)良好兼容,可以和802.11協(xié)議共存等優(yōu)點(diǎn)。BlueCore4藍(lán)牙模塊結(jié)構(gòu)如圖3所示。
PC主機(jī)使用USB接口和BlueCore4藍(lán)牙模塊連接,對(duì)應(yīng)的藍(lán)牙模塊同樣通過USB接口和S3C2440A的USB-HOST接口進(jìn)行連接。USB接口具有即插即用的優(yōu)點(diǎn)。通過Linux操作系統(tǒng)的支持,該模塊還可以使用通用的USB藍(lán)牙適配器替代。BlueCore4藍(lán)牙模塊部分參考電路原理如圖4所示。
LCD液晶屏和S3C2440A微控制器之間通過S3C2440A內(nèi)建的LCD控制器接口進(jìn)行連接。LCD液晶屏這里采用了3.5 in的L35T32,該液晶屏顯示像素為240×320,可顯示16位色彩,并可以方便地?cái)U(kuò)展為更大尺寸的液晶屏。S3C2440A的USB-HOST接口和LCD控制器接口部分參考電路原理。LCD控制器接口連線主要包括:VD0到VD23(R、G、B三色分色信息),VCLK(數(shù)據(jù)傳輸時(shí)鐘),HSYNC(行同步信號(hào)),VSYNC(場(chǎng)同步信號(hào)),VDEN(數(shù)據(jù)使能),LCD_PWREN(顯示使能)。
3系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件同樣分為主機(jī)部分和顯示終端部分。這里主要分析顯示終端部分軟件的設(shè)計(jì),主機(jī)部分與其類似。顯示終端部分程序包括:LCD液晶屏初始化,藍(lán)牙設(shè)備的初始化,藍(lán)牙連接的建立和圖像字符數(shù)據(jù)的傳輸顯示等幾個(gè)部分。程序流程如圖6所示。
用戶程序以Linux操作系統(tǒng)上的Bluez藍(lán)牙協(xié)議棧為平臺(tái)進(jìn)行開發(fā)。主機(jī)應(yīng)用程序采用GCC編譯器進(jìn)行編譯,顯示終端應(yīng)用程序采用arm-linux-gcc編譯器進(jìn)行交叉編譯。
3.1藍(lán)牙部分程序設(shè)計(jì)
該部分采用了藍(lán)牙socket編程。通過建立藍(lán)牙RFCOMM協(xié)議層的socket進(jìn)行連接。連接建立成功之后可以調(diào)用函數(shù)recv或者read讀取主機(jī)發(fā)來的數(shù)據(jù),主機(jī)端則對(duì)應(yīng)地采用函數(shù)send或者write發(fā)送數(shù)據(jù)。通信結(jié)束之后可以調(diào)用函數(shù)close結(jié)束連接。
主機(jī)和顯示終端藍(lán)牙模塊都有固定的藍(lán)牙地址,主機(jī)端直接和固定藍(lán)牙地址的顯示終端設(shè)備進(jìn)行連接。一臺(tái)主機(jī)可以和多個(gè)顯示終端進(jìn)行通信,在不同的顯示終端上顯示圖像和字符。
藍(lán)牙初始化部分參考程序如下:
3.2 LCD液晶屏部分程序設(shè)計(jì)
LCD液晶屏部分程序采用了Linux內(nèi)核驅(qū)動(dòng)程序的framebuffer編程接口。framebuffer為圖像硬件設(shè)備提供了一種抽象化處理,允許應(yīng)用程序通過定義明確的界面來訪問圖像硬件設(shè)備。軟件無須了解任何涉及硬件底層驅(qū)動(dòng)的東西。通過framebuffer,應(yīng)用程序可以用mmap函數(shù)把顯存映射到應(yīng)用程序虛擬地址空間,將要顯示的數(shù)據(jù)寫入內(nèi)存空間就可以在屏幕上顯示出來。LCD顯示屏初始化和清屏部分參考程序如下:
LCD液晶屏初始化和藍(lán)牙socket初始化連接完成以后,便可以通過藍(lán)牙發(fā)送圖像和字符數(shù)據(jù)。藍(lán)牙接收顯示圖像和字符兩個(gè)部分的程序類似,都是通過調(diào)用函數(shù)recv或者read讀取主機(jī)發(fā)來的命令,經(jīng)過程序判斷然后以相同的方式接收數(shù)據(jù)。字符部分?jǐn)?shù)據(jù)接收和顯示參考程序如下:
該段程序利用接收到的字符數(shù)據(jù)得到對(duì)應(yīng)的顯示字庫(kù)數(shù)據(jù),然后通過frambuffer顯示接口顯示到LCD液晶屏上面。源程序帶有顯示字庫(kù)文件,該文件通過編譯并嵌入可執(zhí)行代碼,然后下載到顯示終端文件系統(tǒng)。系統(tǒng)這里只添加了英文字庫(kù)和對(duì)應(yīng)的顯示代碼,可以正常顯示英文字符。如果需要,通過添加中文字庫(kù)和少量顯示代碼就可以很方便地實(shí)現(xiàn)中文字符的顯示。圖像部分程序則是將接收到的位圖數(shù)據(jù)通過frambuffer顯示接口直接顯示到LCD液晶屏上面。
為了在顯示終端的Linux操作系統(tǒng)上使用藍(lán)牙協(xié)議棧,需要在交叉編譯嵌入式Linux內(nèi)核時(shí)將所需的藍(lán)牙支持選項(xiàng)選上,并將所需的Bluez藍(lán)牙庫(kù)編譯安裝到終端文件系統(tǒng)中。用戶應(yīng)用程序同樣通過交叉編譯得到可執(zhí)行代碼,然后下載到終端文件系統(tǒng)運(yùn)行。
該系統(tǒng)可以應(yīng)用在公共信息顯示屏,如大廳廣告信息屏、建筑物提示標(biāo)志等地方,可以避免有線連接的缺陷。系統(tǒng)通過擴(kuò)展后還可以同移動(dòng)電話、PDA、無線耳機(jī)、無線揚(yáng)聲器交換數(shù)據(jù)。
4結(jié)論
在嵌入式Linux操作系統(tǒng)上通過已有的藍(lán)牙協(xié)議棧進(jìn)行藍(lán)牙開發(fā),通過藍(lán)牙協(xié)議層無線收發(fā)數(shù)據(jù),可以不用關(guān)心藍(lán)牙底層驅(qū)動(dòng)的實(shí)現(xiàn)。用戶可以通過各種上層協(xié)議進(jìn)行更復(fù)雜的通信,通過藍(lán)牙SCO協(xié)議層還可以發(fā)送音頻數(shù)據(jù)。因此嵌入式Linux操作系統(tǒng)平臺(tái)上進(jìn)行藍(lán)牙無線顯示屏系統(tǒng)的開發(fā)較為方便,并且具有擴(kuò)展性能好的優(yōu)點(diǎn)。
評(píng)論