USB通用申行總線為USB設(shè)備與主機之間大量的數(shù)據(jù)傳輸提供了高速、可靠的傳輸協(xié)議。目前U盤被廣泛用于兩臺計算機之間的文件傳輸,使用方便、靈活,但其也有不足之處。若有一些惡意病毒隱藏在U盤當(dāng)中,則這些病毒很可能會給用戶帶來不必要的損失;此外當(dāng)傳輸數(shù)據(jù)量較小時,反復(fù)的插拔過程會耽誤寶貴的時間。因此單用USB接口與PC通信有其局限性。隨著短距離無線通信技術(shù)的發(fā)展,其應(yīng)用場合已越來越多,比如儀器儀表、計算機遙測遙控系統(tǒng)、家庭網(wǎng)絡(luò)系統(tǒng)等川。USB接口通信和無線通信都有著各自的優(yōu)勢,倘若把它們結(jié)合起來,揚長避短,定會有更大的應(yīng)用前景。
本文采用PIC16F877單片機、USB芯片FM245BM和無線芯片nR孔4功1組成無線文件傳輸系統(tǒng),充分利用USB口數(shù)據(jù)傳輸功能,設(shè)備連接方便,可進行文件雙向傳輸。
1主要芯片介紹
1.,無線傳輸芯片nRF24L01
24L01是單片射頻收發(fā)芯片,工作于2.4GHZ- 2.SGHz頻段,工作電壓為l.gV一3.6V,有多達125個頻道可供選擇,最高通信速率ZMb/,,具有自動應(yīng)答和重發(fā)功能,其工作參數(shù)全部通過芯片狀態(tài)字配置。微處理器通過SPI訪問IDI,將配置狀態(tài)字寫人IDI中,可將其配置為發(fā)射、接收、空閑及掉電模式。芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器、調(diào)制器等功能模塊,并融進了增強型ShockBurst技術(shù)。該項技術(shù)為IDI所特有,它使得雙向通信協(xié)議變得簡單。
1.2 USB芯片F(xiàn)T245BM
FT45BM芯片是由FTDI公司推出的第二代USB芯片,它的功能是實現(xiàn)USB接口與并行110接口之間數(shù)據(jù)的雙向傳輸。它由3.3V穩(wěn)壓器、USB收發(fā)器、鎖相環(huán)、串行接口引擎(SIE)、nFO控制器、USB協(xié)議引攀、nro接收緩沖區(qū)、發(fā)送緩沖區(qū)以及6MHZ振蕩器、8倍頻時鐘倍頻器等組成。一方面,當(dāng)外部設(shè)備有數(shù)據(jù)要傳給主機時,數(shù)據(jù)通過8位并行110接口傳給USB芯片內(nèi)部的數(shù)據(jù)緩沖區(qū),P咫45BM再將8位并行數(shù)據(jù)轉(zhuǎn)化為串行數(shù)據(jù),通過USB接口把數(shù)據(jù)發(fā)送給主機;另一方面,當(dāng)主機有數(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)采用的核心器件是單片機PIC 16F877、無線芯片nRF’24功1及USB芯片F(xiàn)1245BM。一個文件要從一臺計算機無線傳給另外一臺計算機,首先要將文件轉(zhuǎn)換為二進制碼(編碼),然后無線發(fā)射,再無線接收,最后將二進制碼還原成原始文件(解碼)。文件的編碼及解碼都是由計算機VB程序完成,硬件則只完成二進制碼的傳輸。考慮到二進制碼還要通過單片機進行中繼,因此單片機與計算機之間采用USB芯片F(xiàn)T245BM連接,無線傳輸則由單片機對IDI的控制完成。系統(tǒng)設(shè)計總體框圖如圖1所示。
3硬件設(shè)計
3.1 USB接口設(shè)計
單片機對FT245BM的控制是通過RXF#、RD#、TXE#和WR這四個讀寫控制信號完成的,如圖2所示。當(dāng)RXF#為低時,表示主機已經(jīng)將至少l字節(jié)的數(shù)據(jù)發(fā)送到USB的接收緩存區(qū),單片機只需將RD#信號由低置高,就可以把D0一D7上的數(shù)據(jù)讀到單片機的寄存器中。當(dāng)TXE#為低時,表示單片機可以把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è)計可采用總線供電和自供電兩種方式,總線供電方式是指P咫45BM設(shè)備的電源是通過計算機的USB接口供給的,電流要通過該口流入P巴45BM設(shè)備。自供電方式是指R口45BM設(shè)備的電源由自己提供,而不通過主機供給。如果采用總線供電方式,在電源端采用一個磁珠,可以減少主機和設(shè)備的干擾。同時,在電源端增加去藕和旁路電容,可以提高電路的抗干擾性。如果電路沒有外接一片EEPROM,則R咫45BM將采用默認的VID、PID、產(chǎn)品描述符和電源描述符。
3.2無線部分設(shè)計
單片機與功l連接圖如圖3所示。CE、CSN、MOSI、MISO、SCK及IRQ是L01的控制引腳。CE是片選端,CSN、MOSI、MISO、SCK是L()l的SPI口,PIC16877與功l就是通過SPI[2]口進行通信的。SPI通信在無線傳輸中占重要地位。例如:當(dāng)要配置印1時,那些配置狀態(tài)字是通過SPI口寫人印1內(nèi)的;當(dāng)要發(fā)送數(shù)據(jù)時地址和有效數(shù)據(jù)也是通過SPI口寫人切1的;當(dāng)IDI接收完數(shù)據(jù)時,單片機同樣是通過SPI口將其讀出的,所以必須將單片機與印1采用SPI連接。IRQ則是中斷標(biāo)志位,單片機查詢此位的狀態(tài)就可知道發(fā)射或接收是否成功了。
4軟件設(shè)計
系統(tǒng)的工作原理為:首先將兩塊帶有功1和F幾45BM的電路板分別插入主機和從機的USB口,以確保上電;然后雙方均運行VB程序,進人文件傳輸發(fā)送/接收界面;此時若主機要傳送文件給從機,從機要先點擊接收命令按鈕,以便進人接收狀態(tài)等待文件的到來,接著主機點擊發(fā)送命令按鈕,彈出選擇文件對話框,選擇要發(fā)送的文件后點擊確定,該文件將在一定時間內(nèi)發(fā)送完畢,同時從機會彈出保存對話框,點擊保存按鈕后,文件保存成功,文件傳輸結(jié)束。
因此系統(tǒng)的軟件設(shè)計分為三部分:VB界面程序、USB軟件設(shè)計及單片機控制程序。VB界面程序主要負責(zé)文件的獲取、文件的編解碼及文件的保存;USB軟件設(shè)計主要確保USB設(shè)備能夠穩(wěn)定工作;單片機控制程序則負責(zé)對USB芯片和功1的控制,以完成數(shù)據(jù)的無線發(fā)送l接收。
4.1 VB界面程序
4.2 USB軟件設(shè)計
當(dāng)外設(shè)連接到主機上的USB接口時,主機會檢測到新硬件,這時需安裝一個由FTDI公司免費提供的DZXX驅(qū)動程序,在該驅(qū)動程序中包含了一個動態(tài)鏈接庫(DLL)。使用時需在VB里調(diào)用相打開USB設(shè)備選擇文件對話框編碼解碼文件保存對話框關(guān)閉USB設(shè)備圖4VB界面流程圖關(guān)的函數(shù)。
4.3單片機控制程序
在該系統(tǒng)中,單片機主要控制IDI和R險45BM,實現(xiàn)數(shù)據(jù)的無線傳輸。單片機的D口作為數(shù)據(jù)口,BO一B3則作為p巴45的讀寫控制及狀態(tài)口。IDI每次只能傳翰32字節(jié)數(shù)據(jù),因此將文件分包,每包32字節(jié)。另外,約定了一些通信協(xié)議:每次發(fā)送成功后,向主機回傳“AAH”,以便讓主機發(fā)下一包;發(fā)送失敗則回傳“CCH”,以便通知主機重發(fā)此包數(shù)據(jù)。為了能夠重發(fā)數(shù)據(jù)包,將每次取得的32字節(jié)數(shù)據(jù)存放在單片機內(nèi)部RAM內(nèi)備份,以便出現(xiàn)誤碼時重發(fā)。整套系統(tǒng)發(fā)射機一直處于發(fā)射模式,接收機一直處于接收模式。程序控制流程如圖5所示。
5實測數(shù)據(jù)
?。╝)接收控制程序在兩臺計算機間進行了不同格式、不同大小的文件的傳輸試驗,結(jié)果如表1所示。
基于24IDI和n245BM的無線文件傳輸系統(tǒng)結(jié)構(gòu)簡單,使用方便,誤碼率低,可靠性高。經(jīng)大量試驗測得:其傳輸速率約為256kb/。。提高單片機的晶振則可以加快文件的傳輸速度,其應(yīng)用前景也就更加廣闊。
評論
查看更多