《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 基于nRF24L01和FT245BM的無(wú)線文件傳輸系統(tǒng)設(shè)計(jì)

基于nRF24L01和FT245BM的無(wú)線文件傳輸系統(tǒng)設(shè)計(jì)

2008-07-15
作者:時(shí)志云, 楊 毓, 王代華, 張

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

?

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

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

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

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

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

???????????????????????????????
4.2 USB軟件設(shè)計(jì)
??? 當(dāng)外設(shè)連接到主機(jī)上的USB接口時(shí),主機(jī)會(huì)檢測(cè)到新硬件,這時(shí)需安裝一個(gè)由FTDI公司免費(fèi)提供的D2XX驅(qū)動(dòng)程序,在該驅(qū)動(dòng)程序中包含了一個(gè)動(dòng)態(tài)鏈接庫(kù)(DLL)。使用時(shí)需在VB里調(diào)用相關(guān)的函數(shù)。
4.3 單片機(jī)控制程序
??? 在該系統(tǒng)中,單片機(jī)主要控制L01和FT245BM,實(shí)現(xiàn)數(shù)據(jù)的無(wú)線傳輸。單片機(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)誤碼時(shí)重發(fā)。整套系統(tǒng)發(fā)射機(jī)一直處于發(fā)射模式,接收機(jī)一直處于接收模式。程序控制流程如圖5所示。

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

??????????????????????
??? 基于24L01和FT245BM的無(wú)線文件傳輸系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,使用方便,誤碼率低,可靠性高。經(jīng)大量試驗(yàn)測(cè)得:其傳輸速率約為256kb/s。提高單片機(jī)的晶振則可以加快文件的傳輸速度,其應(yīng)用前景也就更加廣闊。
參考文獻(xiàn)
[1]?肖鐸, 徐潔, 杜鵬英. 基于USB 口的無(wú)線數(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)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。