用單片機(jī)實(shí)現(xiàn)藍(lán)牙功能
下面的文字只是關(guān)于藍(lán)芽技術(shù)的調(diào)制算法方面,我認(rèn)為只需要將藍(lán)芽模塊加在單片機(jī)上就可以了,而不必通過(guò)單片機(jī)編程來(lái)實(shí)現(xiàn)具體的算法,只需要編寫使兩個(gè)模塊的接口就可以,也就是單片機(jī)發(fā)送信號(hào)時(shí)的激勵(lì)程序,接受外來(lái)信號(hào)后的處理程序。置于其余就由作為硬件設(shè)備的藍(lán)芽來(lái)自行處理。不過(guò)我并不確定,我會(huì)查查看的.
本文引用地址:http://www.ex-cimer.com/article/172356.htm藍(lán)牙技術(shù)是用于替代電纜或連線的短距離無(wú)線通信技術(shù)。它需要把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)以便在空間中傳輸,它采用的調(diào)制方式是高斯頻移鍵控,以下簡(jiǎn)稱GFSK, 要了解GFSK,就要先說(shuō)說(shuō)頻移鍵控的原理,以下簡(jiǎn)稱 FSK
FSK: 簡(jiǎn)單的講,就是用不同的頻率來(lái)調(diào)制不同的碼元,比如說(shuō)二進(jìn)制,有0和1 兩種碼元,那么我就需要兩個(gè)頻率f1和f2來(lái)調(diào)制數(shù)字0和1,在接受端根據(jù)頻率f1代表數(shù)字0,頻率f2代表數(shù)字1的道理把模擬信號(hào)還原為數(shù)字信號(hào)。
GFSK:就是在進(jìn)行FSK 調(diào)制之前,將原始信號(hào)通過(guò)一個(gè)高斯低通濾波器來(lái)限制信號(hào)的頻譜寬度,這樣一來(lái)可以獲得更加緊湊的頻譜,也就是過(guò)濾掉高頻的信號(hào),但是保留了足夠的頻帶能量以便在收端成功恢復(fù)信號(hào)。高斯低通濾波器限制了帶寬,對(duì)基帶信號(hào)進(jìn)行了整形,形成高斯脈沖信號(hào)。下面說(shuō)下加入高斯低通濾波器的好處。
假設(shè)我用-1來(lái)代表該信號(hào)頻譜覆蓋范圍里最低的頻率成分;用1來(lái)代表該信號(hào)頻譜覆蓋范圍里最高的頻率成分。一旦信號(hào)從-1跳變到1,或者從1跳變到 -1的時(shí)候,那么被調(diào)制的信號(hào)的波形變換太快了,很有可能會(huì)導(dǎo)致在原始信號(hào)的頻率范圍里出現(xiàn)新的頻率成分,那么我們的信號(hào)就已經(jīng)失真了,這是我們最不想看到的結(jié)果。而這正是FSK的一個(gè)隱憂。高斯低通濾波器使得信號(hào)變得平滑,同樣的從-1到1,因?yàn)闉V波器限制了帶寬,于是實(shí)際效果是 -1,-98,-93,--- 96,99,1那么用這些變化平滑的數(shù)字脈沖信號(hào)去調(diào)制載波,就會(huì)減少上述出現(xiàn)的多余頻率成分的現(xiàn)象。
那么為什么在藍(lán)牙技術(shù)中采用了GFSK而不是FSK?因FSK技術(shù)對(duì)于信號(hào)的頻譜寬度沒(méi)有什么限制,頻率間的范圍可能很大,導(dǎo)致跳變實(shí)在太快,這樣就造成了失真的可能和頻譜的利用率不高(這句話是我從一英文網(wǎng)上看到的,不過(guò)現(xiàn)在還不明白),而藍(lán)牙傳輸?shù)念l譜并不大,所以采用GFSK技術(shù)。還有,有限的帶寬可以節(jié)省電流,那么對(duì)于手機(jī)和單片機(jī)的壽命是有好處的?!?/p>
我認(rèn)為不必深究高斯低通濾波的原理,因?yàn)樵摓V波器是一個(gè)硬件設(shè)備,作為組件是直接加在藍(lán)芽模塊之中的。如果真的要對(duì)算法進(jìn)行編程,那么我們就只需要對(duì)濾波器里出來(lái)的信號(hào)進(jìn)行處理,也就是如何用程序來(lái)表示FSK算法。
下面我結(jié)合具體的藍(lán)芽模塊來(lái)說(shuō)下GFSK調(diào)制在其中的應(yīng)用
藍(lán)芽的載波選用全球公用的2.4Ghz
實(shí)際射頻通道為f=2402 k×1mhz,k=0,1,2,…,78 共79個(gè)頻帶,并采用跳頻方式來(lái)擴(kuò)展頻帶,跳頻速率為1600跳/s??傻玫?9個(gè)1mhz帶寬的信道。藍(lán)牙設(shè)備采用gfsk調(diào)制技術(shù),通信速率為1mbit/s,實(shí)際有效速率最高可達(dá)721kbit/s,通信距離為10m,發(fā)射功率為1mw;當(dāng)發(fā)射功率為 100mw時(shí),通信距離可達(dá)100m
對(duì)于短距離的數(shù)據(jù)傳輸,當(dāng)前最普遍的傳輸方法是有線傳輸、紅外傳輸和藍(lán)牙傳輸。有線傳輸是較為傳統(tǒng)的數(shù)據(jù)傳輸方法,需要傳輸電纜。當(dāng)設(shè)備為移動(dòng)設(shè)備或設(shè)備數(shù)目較多時(shí)這將帶來(lái)很大的不便;紅外傳輸經(jīng)常受到溫度、輻射等干擾,且無(wú)法穿過(guò)實(shí)體進(jìn)行傳輸;使用藍(lán)牙技術(shù)可以很好地摒棄這兩個(gè)缺點(diǎn),但目前藍(lán)牙技術(shù)一般被用于高端的電子設(shè)備中。對(duì)于低端的電子設(shè)備,如何使用藍(lán)牙技術(shù)還是一個(gè)有待解決的問(wèn)題。針對(duì)這個(gè)問(wèn)題,單片機(jī)學(xué)習(xí)網(wǎng)設(shè)計(jì)了一個(gè)基于藍(lán)牙技術(shù)和單片機(jī)的數(shù)據(jù)傳輸系統(tǒng),為嵌入式電子廠商提供一種技術(shù)參考.
1 系統(tǒng)的整體架構(gòu)
該系統(tǒng)由鍵盤、單片機(jī)、LED顯示器、固化了電纜通信協(xié)議(RFCOMM)的藍(lán)牙模塊和PC機(jī)組成。
2 系統(tǒng)的工作原理
系統(tǒng)的核心是單片機(jī)和藍(lán)牙模塊。系統(tǒng)上電后,單片機(jī)初始化自身和所有外圍接口,藍(lán)牙模塊主動(dòng)尋找其它設(shè)備并自動(dòng)建立連接,然后系統(tǒng)進(jìn)入就緒等待狀態(tài)。按照數(shù)據(jù)傳輸方向,可以把系統(tǒng)分為發(fā)送和接收兩個(gè)子系統(tǒng)。
對(duì)于發(fā)送子系統(tǒng),單片機(jī)接收由鍵盤傳來(lái)的鍵值,按照一定的協(xié)議規(guī)則對(duì)其進(jìn)行轉(zhuǎn)換,再顯示到顯示器上。同時(shí),單片機(jī)調(diào)用自身的鍵值分析程序,分析用戶要輸入數(shù)據(jù)還是要發(fā)送數(shù)據(jù)。在輸入狀態(tài)下,單片機(jī)記下用戶所輸入的每一個(gè)數(shù)據(jù)并將其打包、存儲(chǔ),直到用戶按下“發(fā)送”鍵。此時(shí)單片機(jī)轉(zhuǎn)變?yōu)榘l(fā)送狀態(tài),控制藍(lán)牙模塊將剛才存儲(chǔ)的數(shù)據(jù)發(fā)送出去。
對(duì)于接收子系統(tǒng),單片機(jī)按照事先約定的協(xié)議接收從藍(lán)牙模塊傳來(lái)的數(shù)據(jù),直到遇到數(shù)據(jù)結(jié)束符。而后單片機(jī)對(duì)數(shù)據(jù)進(jìn)行分析、解包,并將其顯示在顯示器上為了增強(qiáng)可操作性,本數(shù)據(jù)傳輸系統(tǒng)考慮了單片機(jī)和PC機(jī)兩種情況。每一個(gè)子系統(tǒng)既可以使用單片機(jī)和藍(lán)牙模塊接口,也可以使用PC機(jī)和藍(lán)牙模塊接口。采用這樣的技術(shù)后,不僅單片機(jī)之間可以互傳數(shù)據(jù),而且單片機(jī)還可以和PC機(jī)互傳數(shù)據(jù)。
3 系統(tǒng)的程序設(shè)計(jì)
單片機(jī)上電后,首先要初始化自身。在本系統(tǒng)中,使用了鍵盤掃描和LED顯示接口芯片8279。因此在主程序中還要對(duì)8279進(jìn)行初始化:
COM8279 = 0xd1; //總清除
COM8279 = 0x00; //8*8字符顯示,左邊輸入,編碼掃描鍵盤, 雙鍵封鎖
COM8279 = 0x50; //讀FIFO RAM命令
COM8279 = 0x90; //寫顯示RAM(數(shù)碼管選擇)
之后,可以把程序分為接收、發(fā)送和顯示三個(gè)主要部分。
3.1 接收部分
系統(tǒng)采用查詢的方法采集藍(lán)牙模塊傳送過(guò)來(lái)的串行數(shù)據(jù)。對(duì)鍵盤的按鍵值進(jìn)行設(shè)定由個(gè)人的習(xí)慣來(lái)進(jìn)行設(shè)定。以C語(yǔ)言的形式的偽代碼來(lái)表示,接收函數(shù)的偽代碼如下:
void RcvData(void){
while(DataReceivingNotDone){
ReceiveNextBit;
}
}
3.2 發(fā)送部分
鍵盤數(shù)據(jù)經(jīng)過(guò)處理后,轉(zhuǎn)化為串行數(shù)據(jù)發(fā)送到藍(lán)牙模塊,再由藍(lán)牙模塊發(fā)送出去。發(fā)送函數(shù)的C語(yǔ)言形式的偽代碼為:
void SendData(void){
if( KeyValue 10 ){ //如果數(shù)據(jù)是一位數(shù)
SendOneByte(); //發(fā)送這一位
}
else{ //如果數(shù)據(jù)是兩位數(shù)
SendTwoBytes(); //分成兩位發(fā)送,先發(fā)送高位再發(fā)送低位
}
}
3.3 顯示部分
系統(tǒng)中使用的是八位LED顯示,通過(guò)控制顯示的接口芯片8279,可以控制LED顯示的內(nèi)容。顯示函數(shù)如下:
void DispLong(unsigned int dat,unsigned char addr){
COM8279 = 0x90 + addr;
DAT8279 = disp_tab[0];
COM8279 = 0x90 + addr;
while(dat){
DAT8279 = disp_tab[dat % 10];
dat /= 10;
}
}
4 結(jié)束語(yǔ)
短距離通信的發(fā)展趨勢(shì)是無(wú)線通信。藍(lán)牙技術(shù)在當(dāng)前已經(jīng)應(yīng)用得比較普遍,但是這種應(yīng)用往往局限于高端的電子產(chǎn)品中。本文的設(shè)計(jì)采用低成本的單片機(jī)來(lái)和藍(lán)牙模塊進(jìn)行技術(shù)集成,使得藍(lán)牙技術(shù)也可以應(yīng)用在低端電子產(chǎn)品中。如果您有需要可以與51hei.com聯(lián)系,本文所設(shè)計(jì)的數(shù)據(jù)傳輸系統(tǒng)在實(shí)際中運(yùn)行良好,可以為嵌入式電子廠商提供一種技術(shù)參考。
評(píng)論