新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于USB接口的無線數(shù)據(jù)傳輸系統(tǒng)的設(shè)計

基于USB接口的無線數(shù)據(jù)傳輸系統(tǒng)的設(shè)計

作者: 時間:2012-03-01 來源:網(wǎng)絡(luò) 收藏

引言

通信是信息的交換平臺,在人們的工作和日常生活中起著重要的作用。傳統(tǒng)的通信技術(shù)是通過數(shù)據(jù)線和串口/并口將設(shè)備連接在一起,這樣就存在布線困難和其它不方便的因素。而且傳統(tǒng)的RS232串口通迅和并口通訊都存在傳輸速度低、接口的連接過于復(fù)雜等不足。本文所設(shè)計的基于利用了的高傳輸速率、即插即用等優(yōu)點,并結(jié)合了傳輸技術(shù),實現(xiàn)了計算機之間的通訊,解決了傳統(tǒng)通信技術(shù)帶給我們的不便。


系統(tǒng)硬件設(shè)計

基于的無線數(shù)據(jù)總體方案如圖1所示,該系統(tǒng)由發(fā)射和接收兩部分組成。其中,發(fā)射(接收)系統(tǒng)由單片機控制射頻發(fā)射模塊和單片機控制USB芯片兩部分組成。系統(tǒng)的工作過程為:主機將數(shù)據(jù)通過USB接口傳給單片機,數(shù)據(jù)通過單片機的SPI口再傳給射頻發(fā)射模塊,最后由射頻發(fā)射模塊把數(shù)據(jù)發(fā)射出去。射頻接收端接收到符合的數(shù)據(jù)包后,通知單片機讀取數(shù)據(jù),單片機將數(shù)據(jù)通過USB接口送給主機,這樣就完成了一包數(shù)據(jù)從發(fā)射端到接收端的傳輸。


單片機控制nRF2401

nRF2401芯片工作在全球開放的2.4~2.5GHz ISM免申請頻段共125個頻點,可滿足多頻點和跳頻的需要;最高速率可達1Mbps,低功耗;發(fā)射功率和頻道參數(shù)可通過軟件設(shè)置完成。nRF2401內(nèi)置地址解碼器、FIFO(先入先出棧區(qū))、解調(diào)處理器、GFSK濾波器、低噪聲放大器、頻率合成器,功率放大器,晶體振蕩器等部分構(gòu)成。nRF2401有兩種模式:Direct Mode(直接模式)和ShockBurst模式。ShockBurst技術(shù)采用芯片內(nèi)部FIFO,數(shù)據(jù)以較低的速率存在FIFO中,再以很高的速率(1Mbps)將數(shù)據(jù)發(fā)射出去,因此它的功耗和成本都很低。nRF2401上的編程采用三線接口方式,單片機通過DATA,CLK1,CS三個引腳對nRF2401芯片進行初始化設(shè)置和數(shù)據(jù)的輸入輸出,單片機還可以通過PWR_UP,CE,CS三個引腳對其進行控制,使nRF2401進入不同的工作模式。nRF2401的DATA引腳是數(shù)據(jù)引腳,SCK引腳是時鐘引腳,在時鐘信號的配合下,單片機通過DATA引腳從nRF2401中讀取數(shù)據(jù)或者把數(shù)據(jù)寫入nRF2401。單片機與nRF2401連接如圖2所示。

首先對nRF2401進行參數(shù)配置,CS=1,CE=0,PWR_UP=1。bit[119:0]有120位需要配置。這里需要注意的是nRF2401一包數(shù)據(jù)的最大長度是256位(32Byte),數(shù)據(jù)段的位數(shù)=256-地址段的位數(shù)-CRC的位數(shù)。因此,要想在一包數(shù)據(jù)中傳輸盡可能多的數(shù)據(jù)段的位數(shù),那么應(yīng)該減少地址段的位數(shù)和CRC的位數(shù)。接下來進入突發(fā)模式:CS=0,CE=1,PWR_UP=1。通過模擬SPI口把數(shù)據(jù)和接收方的地址寫入nRF2401。注意該地址是接收方的地址。最后將CE置低,無線傳輸芯片把數(shù)據(jù)發(fā)射出去。

單片機對FT245BM的控制

FT245BM芯片是由FTDI(Future Technology Devices Intl Ltd)公司推出的第二代USB芯片,它的功能是實現(xiàn)USB接口與并行I/O接口之間數(shù)據(jù)的雙向傳輸。它由3.3V穩(wěn)壓器,USB收發(fā)器,鎖相環(huán),串行接口引擎(SIE),F(xiàn)IFO控制器,USB協(xié)議引擎,F(xiàn)IFO接收緩沖區(qū),發(fā)送緩沖區(qū),以及6M振蕩器,8倍頻時鐘倍頻器等組成。一方面,當外部設(shè)備有數(shù)據(jù)要傳給主機時,數(shù)據(jù)通過8位并行I/O接口傳給USB芯片內(nèi)部的數(shù)據(jù)緩沖區(qū),F(xiàn)T245BM再將8位并行數(shù)據(jù)轉(zhuǎn)化為串行數(shù)據(jù),通過USB接口把數(shù)據(jù)發(fā)送給主機;另一方面,當主機有數(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è)備。單片機與FT245BM的連接如圖3所示。


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

電路設(shè)計可采用總線供電和自供電兩種供電方式,總線供電方式是指FT245BM設(shè)備的電源是通過計算機的USB接口供給的,電流要通過該口流入FT245BM設(shè)備。自供電方式是指FT245BM設(shè)備的電源由自己提供,而不通過主機供給。如果采用總線供電方式,在電源端采用一個磁珠,可以減少主機和設(shè)備的干擾。同時,在電源端增加去耦和旁路電容,可以提高電路的抗干擾性。如果電路沒有外接一片EEPROM,F(xiàn)T245BM將采用默認的VID、PID、產(chǎn)品描述符和電源描述符。


軟件設(shè)計

發(fā)射端流程、接收端流程見圖4、圖5。

軟件設(shè)計

當 外設(shè)連接到主機上的USB接口時,主機會檢測到新硬件,這時需安裝一個由FTDI公司免費提供的D2XX驅(qū)動程序,在該驅(qū)動程序中包含了一個動態(tài)鏈接庫(DLL)。該DLL由四部分組成:Classic Interface Functions、EEPROM Interface、Extended API和FT-Win32 API。Classic Interface Functions中包括FT_Open、FT_Read、FT_Write、FT_Close、FT_SetTimeOuts等函數(shù),其功能如表1所示。

調(diào)用FT_Open函數(shù),打開設(shè)備。如果函數(shù)的返回值與FT_OK的值相等 ,那么函數(shù)調(diào)用成功,即USB設(shè)備被打開。調(diào)用FT_Read函數(shù),從USB中讀取數(shù)據(jù)。在程序中應(yīng)該設(shè)置一個字節(jié)型數(shù)組,用來存放從USB中讀取的1字節(jié)數(shù)據(jù)。調(diào)用之前需設(shè)置FT_SetTimeOuts函數(shù)的讀/寫操作時間,如果實際的讀操作時間超過了所設(shè)置的時間,那么認為讀數(shù)失?。恢挥挟斠?guī)定讀入的字節(jié)數(shù)與實際讀入的字節(jié)數(shù)相等時,讀操作 才算徹底完成。調(diào)用FT_Write函數(shù),把數(shù)據(jù)寫入USB中。在程序中應(yīng)該設(shè)置一個字節(jié)型數(shù)組,用來存放要寫入USB發(fā)送緩存器的數(shù)據(jù),數(shù)組的長度可以自行設(shè)定,但最好不要超過384個字節(jié)。只有當規(guī)定發(fā)送的字節(jié)數(shù)與實際發(fā)送的字節(jié)數(shù)相等時,寫數(shù)才算成功。調(diào)用FT_Close函數(shù),關(guān)閉設(shè)備。如果函數(shù)的返回值與FT_OK的值相等 ,那么函數(shù)調(diào)用成功,即USB設(shè)備被關(guān)閉。


結(jié)論

本系統(tǒng)采用了nRF2401無線射頻芯片和USB接口芯片F(xiàn)T245BM,通過PIC單片機進行控制,在主機端用VB編寫了USB軟件,實現(xiàn)了兩臺計算機之間的無線數(shù)據(jù)傳輸,解決了傳統(tǒng)通信技術(shù)的不足,具有很好的應(yīng)用前景。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉