??? 摘 要: 設計了一種基于無線射頻芯片nRF24L01和USB芯片FT245BM的文件傳輸系統,介紹了其硬件電路設計和軟件控制程序設計,并給出了一些實驗數據。經實測,該系統運行穩(wěn)定,傳輸可靠,平均傳輸速率可達到256kb/s。
??? 關鍵詞: nRF24L01? FT245BM? 無線傳輸
?
??? USB通用串行總線為USB設備與主機之間大量的數據傳輸提供了高速、可靠的傳輸協議。目前U盤被廣泛用于兩臺計算機之間的文件傳輸,使用方便、靈活,但其也有不足之處。若有一些惡意病毒隱藏在U盤當中,則這些病毒很可能會給用戶帶來不必要的損失;此外當傳輸數據量較小時,反復的插拔過程會耽誤寶貴的時間。因此單用USB接口與PC通信有其局限性。隨著短距離無線通信技術的發(fā)展,其應用場合已越來越多,比如儀器儀表、計算機遙測遙控系統、家庭網絡系統等[1]。USB接口通信和無線通信都有著各自的優(yōu)勢,倘若把它們結合起來,揚長避短,定會有更大的應用前景。
??? 本文采用PIC16F877單片機、USB芯片FT245BM和無線芯片nRF24L01組成無線文件傳輸系統,充分利用USB口數據傳輸功能,設備連接方便,可進行文件雙向傳輸。
1 主要芯片介紹
1.1無線傳輸" title="無線傳輸">無線傳輸芯片nRF24L01
??? 24L01是單片射頻收發(fā)芯片,工作于2.4GHz~2.5GHz頻段,工作電壓為1.9V~3.6V,有多達125個頻道可供選擇,最高通信速率2Mb/s,具有自動應答和重發(fā)功能,其工作參數全部通過芯片狀態(tài)字配置。微處理器通過SPI訪問L01,將配置狀態(tài)字寫入L01中,可將其配置為發(fā)射、接收、空閑及掉電模式。芯片內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,并融進了增強型ShockBurst技術。該項技術為L01所特有,它使得雙向通信協議變得簡單。
1.2 USB芯片FT245BM
??? FT245BM芯片是由FTDI公司推出的第二代USB芯片,它的功能是實現USB接口與并行I/O" title="I/O">I/O接口之間數據的雙向傳輸。它由3.3V穩(wěn)壓器、USB收發(fā)器、鎖相環(huán)、串行接口引擎(SIE)、FIFO控制器、USB協議引擎、FIFO接收緩沖區(qū)、發(fā)送緩沖區(qū)以及6MHz振蕩器、8倍頻時鐘倍頻器等組成。一方面,當外部設備" title="外部設備">外部設備有數據要傳給主機時,數據通過8位并行I/O接口傳給USB芯片內部的數據緩沖區(qū),FT245BM再將8位并行數據轉化為串行數據" title="串行數據">串行數據,通過USB接口把數據發(fā)送給主機;另一方面,當主機有數據要給外部設備時,先將串行數據通過USB接口存儲在USB芯片內部緩存區(qū)中,FT245BM再將串行數據轉化為8位并行數據,然后通過8位I/O接口把數據傳給外部設備。
2 系統總體設計
??? 本系統采用的核心器件是單片機PIC16F877、無線芯片nRF24L01及USB芯片FT245BM。一個文件要從一臺計算機無線傳給另外一臺計算機,首先要將文件轉換為二進制碼(編碼),然后無線發(fā)射,再無線接收,最后將二進制碼還原成原始文件(解碼)。文件的編碼及解碼都是由計算機VB程序完成,硬件則只完成二進制碼的傳輸??紤]到二進制碼還要通過單片機進行中繼,因此單片機與計算機之間采用USB芯片FT245BM連接,無線傳輸則由單片機對L01的控制完成。系統設計總體框圖如圖1所示。
?????????????????????????? 
3 硬件設計
3.1 USB接口設計
??? 單片機對FT245BM的控制是通過RXF#、RD#、TXE#和WR這四個讀寫控制信號完成的,如圖2所示。當RXF#為低時,表示主機已經將至少1字節(jié)的數據發(fā)送到USB的接收緩存區(qū),單片機只需將RD#信號由低置高,就可以把D0~D7上的數據讀到單片機的寄存器中。當TXE#為低時,表示單片機可以把1字節(jié)的數據寫入USB,只需把WR信號由高變低,就可以將D0~D7上的數據寫入USB的發(fā)送緩存區(qū)。注意,當TXE#為高時不可以將數據寫入USB,這時USB的發(fā)送緩存區(qū)中正在處理上一次寫入的數據或是發(fā)送緩存區(qū)已經寫滿。同樣,當RXF#為高時,也不能從USB芯片中讀取數據。
?????????????????????????????? 
??? 電路設計可采用總線供電和自供電兩種方式,總線供電方式是指FT245BM設備的電源是通過計算機的USB接口供給的,電流要通過該口流入FT245BM設備。自供電方式是指FT245BM設備的電源由自己提供,而不通過主機供給。如果采用總線供電方式,在電源端采用一個磁珠,可以減少主機和設備的干擾。同時,在電源端增加去耦和旁路電容,可以提高電路的抗干擾性。如果電路沒有外接一片EEPROM,則FT245BM將采用默認的VID、PID、產品描述符和電源描述符。
3.2 無線部分設計
??? 單片機與L01連接圖如圖3所示。CE、CSN、MOSI、MISO、SCK及IRQ是L01的控制引腳。CE是片選端,CSN、MOSI、MISO、SCK是L01的SPI口,PIC16877與L01就是通過SPI[2]口進行通信的。SPI通信在無線傳輸中占重要地位。例如:當要配置L01時,那些配置狀態(tài)字是通過SPI口寫入L01內的;當要發(fā)送數據時地址和有效數據也是通過SPI口寫入L01的;當L01接收完數據時,單片機同樣是通過SPI口將其讀出的,所以必須將單片機與L01采用SPI連接。IRQ則是中斷標志位,單片機查詢此位的狀態(tài)就可知道發(fā)射或接收是否成功了。
??????????????????????????????? 
4 軟件設計" title="軟件設計">軟件設計
??? 系統的工作原理為:首先將兩塊帶有L01和FT245BM的電路板分別插入主機和從機的USB口,以確保上電;然后雙方均運行VB程序,進入文件傳輸發(fā)送/接收界面;此時若主機要傳送文件給從機,從機要先點擊接收命令按鈕,以便進入接收狀態(tài)等待文件的到來,接著主機點擊發(fā)送命令按鈕,彈出選擇文件對話框,選擇要發(fā)送的文件后點擊確定,該文件將在一定時間內發(fā)送完畢,同時從機會彈出保存對話框,點擊保存按鈕后,文件保存成功,文件傳輸結束。
??? 因此系統的軟件設計分為三部分:VB界面程序、USB軟件設計及單片機控制程序。VB界面程序主要負責文件的獲取、文件的編解碼及文件的保存;USB軟件設計主要確保USB設備能夠穩(wěn)定工作;單片機控制程序則負責對USB芯片和L01的控制,以完成數據的無線發(fā)送/接收。
4.1 VB界面程序
??? VB界面流程圖如圖4所示。
??????????????????????????????? 
4.2 USB軟件設計
??? 當外設連接到主機上的USB接口時,主機會檢測到新硬件,這時需安裝一個由FTDI公司免費提供的D2XX驅動程序,在該驅動程序中包含了一個動態(tài)鏈接庫(DLL)。使用時需在VB里調用相關的函數。
4.3 單片機控制程序
??? 在該系統中,單片機主要控制L01和FT245BM,實現數據的無線傳輸。單片機的D口作為數據口,B0~B3則作為FT245的讀寫控制及狀態(tài)口。L01每次只能傳輸32字節(jié)數據,因此將文件分包,每包32字節(jié)。另外,約定了一些通信協議:每次發(fā)送成功后,向主機回傳“AAH”,以便讓主機發(fā)下一包;發(fā)送失敗則回傳“CCH”,以便通知主機重發(fā)此包數據。為了能夠重發(fā)數據包,將每次取得的32字節(jié)數據存放在單片機內部RAM內備份,以便出現誤碼時重發(fā)。整套系統發(fā)射機一直處于發(fā)射模式,接收機一直處于接收模式。程序控制流程如圖5所示。
????????????????????????????? 
5 實測數據
??? 在兩臺計算機間進行了不同格式、不同大小的文件的傳輸試驗,結果如表1所示。
?????????????????????? 
??? 基于24L01和FT245BM的無線文件傳輸系統結構簡單,使用方便,誤碼率低,可靠性高。經大量試驗測得:其傳輸速率約為256kb/s。提高單片機的晶振則可以加快文件的傳輸速度,其應用前景也就更加廣闊。
參考文獻
[1]?肖鐸, 徐潔, 杜鵬英. 基于USB 口的無線數據收發(fā)器[J].電子技術應用, 2006,32(7):80-82.
[2]?李學海. PIC單片機原理. 北京:北京航空航天出版社,2004.
