《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于nRF24L01和FT245BM的无线文件传输系统设计

基于nRF24L01和FT245BM的无线文件传输系统设计

2008-07-15
作者:时志云, 杨 毓, 王代华, 张

??? 摘 要: 設(shè)計了一種基于無線射頻芯片nRF24L01和USB芯片F(xiàn)T245BM的文件傳輸系統(tǒng),介紹了其硬件電路設(shè)計和軟件控制程序設(shè)計,并給出了一些實驗數(shù)據(jù)。經(jīng)實測,該系統(tǒng)運(yùn)行穩(wěn)定,傳輸可靠,平均傳輸速率可達(dá)到256kb/s。
??? 關(guān)鍵詞: nRF24L01? FT245BM? 無線傳輸

?

??? USB通用串行總線為USB設(shè)備與主機(jī)之間大量的數(shù)據(jù)傳輸提供了高速、可靠的傳輸協(xié)議。目前U盤被廣泛用于兩臺計算機(jī)之間的文件傳輸,使用方便、靈活,但其也有不足之處。若有一些惡意病毒隱藏在U盤當(dāng)中,則這些病毒很可能會給用戶帶來不必要的損失;此外當(dāng)傳輸數(shù)據(jù)量較小時,反復(fù)的插拔過程會耽誤寶貴的時間。因此單用USB接口與PC通信有其局限性。隨著短距離無線通信技術(shù)的發(fā)展,其應(yīng)用場合已越來越多,比如儀器儀表、計算機(jī)遙測遙控系統(tǒng)、家庭網(wǎng)絡(luò)系統(tǒng)等[1]。USB接口通信和無線通信都有著各自的優(yōu)勢,倘若把它們結(jié)合起來,揚(yáng)長避短,定會有更大的應(yīng)用前景。
??? 本文采用PIC16F877單片機(jī)、USB芯片F(xiàn)T245BM和無線芯片nRF24L01組成無線文件傳輸系統(tǒng),充分利用USB口數(shù)據(jù)傳輸功能,設(shè)備連接方便,可進(jìn)行文件雙向傳輸。
1 主要芯片介紹
1.1無線傳輸" title="無線傳輸">無線傳輸芯片nRF24L01
??? 24L01是單片射頻收發(fā)芯片,工作于2.4GHz~2.5GHz頻段,工作電壓為1.9V~3.6V,有多達(dá)125個頻道可供選擇,最高通信速率2Mb/s,具有自動應(yīng)答和重發(fā)功能,其工作參數(shù)全部通過芯片狀態(tài)字配置。微處理器通過SPI訪問L01,將配置狀態(tài)字寫入L01中,可將其配置為發(fā)射、接收、空閑及掉電模式。芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器、調(diào)制器等功能模塊,并融進(jìn)了增強(qiáng)型ShockBurst技術(shù)。該項技術(shù)為L01所特有,它使得雙向通信協(xié)議變得簡單。
1.2 USB芯片F(xiàn)T245BM
??? FT245BM芯片是由FTDI公司推出的第二代USB芯片,它的功能是實現(xiàn)USB接口與并行I/O" title="I/O">I/O接口之間數(shù)據(jù)的雙向傳輸。它由3.3V穩(wěn)壓器、USB收發(fā)器、鎖相環(huán)、串行接口引擎(SIE)、FIFO控制器、USB協(xié)議引擎、FIFO接收緩沖區(qū)、發(fā)送緩沖區(qū)以及6MHz振蕩器、8倍頻時鐘倍頻器等組成。一方面,當(dāng)外部設(shè)備" title="外部設(shè)備">外部設(shè)備有數(shù)據(jù)要傳給主機(jī)時,數(shù)據(jù)通過8位并行I/O接口傳給USB芯片內(nèi)部的數(shù)據(jù)緩沖區(qū),F(xiàn)T245BM再將8位并行數(shù)據(jù)轉(zhuǎn)化為串行數(shù)據(jù)" title="串行數(shù)據(jù)">串行數(shù)據(jù),通過USB接口把數(shù)據(jù)發(fā)送給主機(jī);另一方面,當(dāng)主機(jī)有數(shù)據(jù)要給外部設(shè)備時,先將串行數(shù)據(jù)通過USB接口存儲在USB芯片內(nèi)部緩存區(qū)中,F(xiàn)T245BM再將串行數(shù)據(jù)轉(zhuǎn)化為8位并行數(shù)據(jù),然后通過8位I/O接口把數(shù)據(jù)傳給外部設(shè)備。
2 系統(tǒng)總體設(shè)計
??? 本系統(tǒng)采用的核心器件是單片機(jī)PIC16F877、無線芯片nRF24L01及USB芯片F(xiàn)T245BM。一個文件要從一臺計算機(jī)無線傳給另外一臺計算機(jī),首先要將文件轉(zhuǎn)換為二進(jìn)制碼(編碼),然后無線發(fā)射,再無線接收,最后將二進(jìn)制碼還原成原始文件(解碼)。文件的編碼及解碼都是由計算機(jī)VB程序完成,硬件則只完成二進(jìn)制碼的傳輸??紤]到二進(jìn)制碼還要通過單片機(jī)進(jìn)行中繼,因此單片機(jī)與計算機(jī)之間采用USB芯片F(xiàn)T245BM連接,無線傳輸則由單片機(jī)對L01的控制完成。系統(tǒng)設(shè)計總體框圖如圖1所示。

??????????????????????????
3 硬件設(shè)計
3.1 USB接口設(shè)計

??? 單片機(jī)對FT245BM的控制是通過RXF#、RD#、TXE#和WR這四個讀寫控制信號完成的,如圖2所示。當(dāng)RXF#為低時,表示主機(jī)已經(jīng)將至少1字節(jié)的數(shù)據(jù)發(fā)送到USB的接收緩存區(qū),單片機(jī)只需將RD#信號由低置高,就可以把D0~D7上的數(shù)據(jù)讀到單片機(jī)的寄存器中。當(dāng)TXE#為低時,表示單片機(jī)可以把1字節(jié)的數(shù)據(jù)寫入USB,只需把WR信號由高變低,就可以將D0~D7上的數(shù)據(jù)寫入USB的發(fā)送緩存區(qū)。注意,當(dāng)TXE#為高時不可以將數(shù)據(jù)寫入USB,這時USB的發(fā)送緩存區(qū)中正在處理上一次寫入的數(shù)據(jù)或是發(fā)送緩存區(qū)已經(jīng)寫滿。同樣,當(dāng)RXF#為高時,也不能從USB芯片中讀取數(shù)據(jù)。

??????????????????????????????
??? 電路設(shè)計可采用總線供電和自供電兩種方式,總線供電方式是指FT245BM設(shè)備的電源是通過計算機(jī)的USB接口供給的,電流要通過該口流入FT245BM設(shè)備。自供電方式是指FT245BM設(shè)備的電源由自己提供,而不通過主機(jī)供給。如果采用總線供電方式,在電源端采用一個磁珠,可以減少主機(jī)和設(shè)備的干擾。同時,在電源端增加去耦和旁路電容,可以提高電路的抗干擾性。如果電路沒有外接一片EEPROM,則FT245BM將采用默認(rèn)的VID、PID、產(chǎn)品描述符和電源描述符。
3.2 無線部分設(shè)計
??? 單片機(jī)與L01連接圖如圖3所示。CE、CSN、MOSI、MISO、SCK及IRQ是L01的控制引腳。CE是片選端,CSN、MOSI、MISO、SCK是L01的SPI口,PIC16877與L01就是通過SPI[2]口進(jìn)行通信的。SPI通信在無線傳輸中占重要地位。例如:當(dāng)要配置L01時,那些配置狀態(tài)字是通過SPI口寫入L01內(nèi)的;當(dāng)要發(fā)送數(shù)據(jù)時地址和有效數(shù)據(jù)也是通過SPI口寫入L01的;當(dāng)L01接收完數(shù)據(jù)時,單片機(jī)同樣是通過SPI口將其讀出的,所以必須將單片機(jī)與L01采用SPI連接。IRQ則是中斷標(biāo)志位,單片機(jī)查詢此位的狀態(tài)就可知道發(fā)射或接收是否成功了。

???????????????????????????????
4 軟件設(shè)計" title="軟件設(shè)計">軟件設(shè)計
??? 系統(tǒng)的工作原理為:首先將兩塊帶有L01和FT245BM的電路板分別插入主機(jī)和從機(jī)的USB口,以確保上電;然后雙方均運(yùn)行VB程序,進(jìn)入文件傳輸發(fā)送/接收界面;此時若主機(jī)要傳送文件給從機(jī),從機(jī)要先點擊接收命令按鈕,以便進(jìn)入接收狀態(tài)等待文件的到來,接著主機(jī)點擊發(fā)送命令按鈕,彈出選擇文件對話框,選擇要發(fā)送的文件后點擊確定,該文件將在一定時間內(nèi)發(fā)送完畢,同時從機(jī)會彈出保存對話框,點擊保存按鈕后,文件保存成功,文件傳輸結(jié)束。
??? 因此系統(tǒng)的軟件設(shè)計分為三部分:VB界面程序、USB軟件設(shè)計及單片機(jī)控制程序。VB界面程序主要負(fù)責(zé)文件的獲取、文件的編解碼及文件的保存;USB軟件設(shè)計主要確保USB設(shè)備能夠穩(wěn)定工作;單片機(jī)控制程序則負(fù)責(zé)對USB芯片和L01的控制,以完成數(shù)據(jù)的無線發(fā)送/接收。
4.1 VB界面程序
??? VB界面流程圖如圖4所示。

???????????????????????????????
4.2 USB軟件設(shè)計
??? 當(dāng)外設(shè)連接到主機(jī)上的USB接口時,主機(jī)會檢測到新硬件,這時需安裝一個由FTDI公司免費提供的D2XX驅(qū)動程序,在該驅(qū)動程序中包含了一個動態(tài)鏈接庫(DLL)。使用時需在VB里調(diào)用相關(guān)的函數(shù)。
4.3 單片機(jī)控制程序
??? 在該系統(tǒng)中,單片機(jī)主要控制L01和FT245BM,實現(xiàn)數(shù)據(jù)的無線傳輸。單片機(jī)的D口作為數(shù)據(jù)口,B0~B3則作為FT245的讀寫控制及狀態(tài)口。L01每次只能傳輸32字節(jié)數(shù)據(jù),因此將文件分包,每包32字節(jié)。另外,約定了一些通信協(xié)議:每次發(fā)送成功后,向主機(jī)回傳“AAH”,以便讓主機(jī)發(fā)下一包;發(fā)送失敗則回傳“CCH”,以便通知主機(jī)重發(fā)此包數(shù)據(jù)。為了能夠重發(fā)數(shù)據(jù)包,將每次取得的32字節(jié)數(shù)據(jù)存放在單片機(jī)內(nèi)部RAM內(nèi)備份,以便出現(xiàn)誤碼時重發(fā)。整套系統(tǒng)發(fā)射機(jī)一直處于發(fā)射模式,接收機(jī)一直處于接收模式。程序控制流程如圖5所示。

?????????????????????????????
5 實測數(shù)據(jù)
??? 在兩臺計算機(jī)間進(jìn)行了不同格式、不同大小的文件的傳輸試驗,結(jié)果如表1所示。

??????????????????????
??? 基于24L01和FT245BM的無線文件傳輸系統(tǒng)結(jié)構(gòu)簡單,使用方便,誤碼率低,可靠性高。經(jīng)大量試驗測得:其傳輸速率約為256kb/s。提高單片機(jī)的晶振則可以加快文件的傳輸速度,其應(yīng)用前景也就更加廣闊。
參考文獻(xiàn)
[1]?肖鐸, 徐潔, 杜鵬英. 基于USB 口的無線數(shù)據(jù)收發(fā)器[J].電子技術(shù)應(yīng)用, 2006,32(7):80-82.
[2]?李學(xué)海. PIC單片機(jī)原理. 北京:北京航空航天出版社,2004.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容