|
1 引言 USB(universal serial bus,通用串行總線)作為一個(gè)計(jì)算機(jī)與外設(shè)之間的接口方案,因其具有使用方便、傳輸速度快、端口易擴(kuò)展等特點(diǎn),已經(jīng)逐步擴(kuò)展應(yīng)用到了消費(fèi)電子、移動(dòng)通信、家庭網(wǎng)絡(luò)、工業(yè)控制以及儀器儀表等諸多領(lǐng)域。鍵盤、鼠標(biāo)、數(shù)碼相機(jī)、音箱、閃存盤無(wú)不通過(guò)USB與電腦相連,目前每個(gè)月有1億多的USB接口芯片出貨量。 現(xiàn)有的USB接口通常都是有線的,這給使用帶來(lái)一定的不便。隨著近距離無(wú)線通信技術(shù)的發(fā)展,無(wú)線USB(WirelessUSB。簡(jiǎn)稱WUSB)技術(shù)得到了較大發(fā)展,例如,基于UWB(ultra wide band)的WUSB帶寬可達(dá)480Mbps。 WUSB是2004英特爾春季技術(shù)峰會(huì)提出的一個(gè)全新無(wú)線傳輸標(biāo)準(zhǔn),目的是采用無(wú)線的方式收發(fā)信號(hào),消除計(jì)算機(jī)和外設(shè)之間的線纜,但計(jì)算機(jī)和外設(shè)這兩端依然以USB的方式工作。在該標(biāo)準(zhǔn)中,WUSB可認(rèn)為是應(yīng)用層的技術(shù),在應(yīng)用層和物理層之間。加入了匯聚層(類似于鏈路層)WiMedia,提供了一個(gè)公共無(wú)線平臺(tái)。應(yīng)用層除WUSB外,還可以是無(wú)線1394,或疊加各種軟件,以便滿足三種網(wǎng)絡(luò)客戶的不同需求,實(shí)現(xiàn)3C網(wǎng)的融合。因此,WUSB具有廣泛應(yīng)用前途。 本文提出了一種基于NRF24LU1芯片無(wú)線USB模塊的解決方案。 2 無(wú)線USB模塊結(jié)構(gòu)和原理 無(wú)線USB模塊結(jié)構(gòu)如圖1所示,它包括USB接口、USB控制器、MCU、射頻模塊、射頻匹配電路及天線六個(gè)部分組成。其中,USB控制器主要是負(fù)責(zé)把MCU發(fā)來(lái)的數(shù)據(jù)進(jìn)行USB協(xié)議封裝和USB數(shù)據(jù)進(jìn)行控制,及對(duì)USB數(shù)據(jù)解析后轉(zhuǎn)發(fā)到MCU;MCU負(fù)責(zé)對(duì)射頻芯片和USB控制器的控制,實(shí)習(xí)模塊總功能的實(shí)現(xiàn);射頻模塊和射頻匹配電路主要負(fù)責(zé)無(wú)線數(shù)據(jù)的發(fā)送和采集。
圖1 無(wú)線USB結(jié)構(gòu)圖 對(duì)于無(wú)線USB模塊的實(shí)現(xiàn),可以有以下方案:(1)三芯片實(shí)現(xiàn)。分別利用USB控制器芯片、單片機(jī)和射頻芯片實(shí)現(xiàn),如用CP2 102+MCu+NRF905;(2)兩芯片實(shí)現(xiàn)。利用已經(jīng)集成了USB控制器的單片機(jī)芯片和射頻芯片實(shí)現(xiàn),如利用MSP430+CC2400;或用USB控制器芯片和射頻單片機(jī)芯片實(shí)現(xiàn),如用CP2102+NRF24E1;(3)單芯片實(shí)現(xiàn)。用集成好的芯片實(shí)現(xiàn),如NORDIC公司的NRF24LU1。 三個(gè)方案中,方案(1)(2)的成本比較高,而且模塊體積會(huì)比較大,方案(3)中,由于芯片是專門針對(duì)于無(wú)線USB模塊設(shè)計(jì)的,只要用單芯片就可以組成無(wú)線USB模塊.該方案的無(wú)線USB模塊成本只要30塊左右,同時(shí)體積可以達(dá)到10mmx 20mm,能很方便集成到現(xiàn)有的USB設(shè)備中或者直接外接在現(xiàn)有的USB設(shè)備外。所以本文以方案(3)作為討論。 3 NRF24LU1 內(nèi)部結(jié)構(gòu)和工作原理 NRF24LU1是NORDIC公司在07年推出的一款專門針對(duì)于無(wú)線USB實(shí)現(xiàn)的芯片,其內(nèi)部控制器采用MCS 51指令設(shè)計(jì),但其減少了指令周期,達(dá)到傳統(tǒng)8051的12陪;16k字節(jié)的flash和2k片上SRAM;接口包括通用10口、主從SPI接口、UART、和USB口,其中USB控制器是全速USB2.0控制器;2.4GHz的射頻傳輸模塊,傳輸速度可以為1MHz或2MHz,對(duì)于其作為無(wú)線USB應(yīng)用有很好的傳輸速度保證,同時(shí)其包括自動(dòng)回復(fù)和重傳功能。 NRF24LU1里面集成了電壓轉(zhuǎn)換模塊,可以直接由USB供電,不用再加電壓轉(zhuǎn)換芯片。無(wú)線USB模塊硬件結(jié)構(gòu)主要有一下幾部分組成:匹配電路、USB接口和時(shí)鐘輸入接口電路。對(duì)于NRF24LU1芯片。其天線負(fù)載阻抗為,所以要通過(guò)天線匹配網(wǎng)絡(luò),使特征阻抗匹配成,使其能和通用天線匹配,電路如圖2。
圖2 無(wú)線模塊電路圖 由于模塊傳輸速率為2.4Gbit/s,在其布線和做板的時(shí)候要注意阻抗等問(wèn)題。濾波電容盡可能接近芯片電源腳,同時(shí)對(duì)于射頻電路,元件放置應(yīng)該緊密放置,以減少線電感的增加,同時(shí)為了接地良好,上下板層應(yīng)該敷銅接地,并利用適當(dāng)多的過(guò)孔連接兩個(gè)底層。建議板層為兩層,只有單層放元件,敷銅接地,其中板厚為1.6mm,材料FR-4,介質(zhì)常數(shù)4.2。 4 系統(tǒng)軟件設(shè)計(jì) 無(wú)線USB模塊主要包括兩方面,一是USB數(shù)據(jù)采集;二是無(wú)線傳輸。在讀USB數(shù)據(jù)中。USB數(shù)據(jù)由USB控制器處理后,保存到RAM里面,再由MCU通過(guò)SPI總線發(fā)送到無(wú)線傳輸緩沖器,冉發(fā)送出去;而對(duì)于發(fā)送USB數(shù)據(jù),過(guò)程相反。 NRF24LU1對(duì)于輸入輸出數(shù)據(jù)的USB獨(dú)立終端允許5種不同的應(yīng)用,如鼠標(biāo)、鍵盤、移動(dòng)控制,游戲和玩具,同時(shí)其總支持14個(gè)端點(diǎn)和4種傳輸方式,端點(diǎn)0支持控制傳輸,端點(diǎn)1到5(輸入輸出)支持批量傳輸和中斷傳輸,端點(diǎn)8(輸入輸出)支持同步傳輸。 控制傳輸用于在外設(shè)初次連接時(shí)對(duì)器件進(jìn)行配置;對(duì)外設(shè)的狀態(tài)進(jìn)行實(shí)時(shí)檢測(cè);對(duì)控制命令的傳送等;也可以在器件配置完成后被客戶軟件用于其它目的。其包括兩或三個(gè)階段:建立階段、數(shù)據(jù)階段(可選)和狀態(tài)階段。在寫操作時(shí),終端收到建立申請(qǐng)后,USB控制器設(shè)置握手標(biāo)志和建立申請(qǐng)中斷請(qǐng)求標(biāo)志,如果數(shù)據(jù)接收正確,USB控制器則設(shè)置數(shù)據(jù)接收中斷請(qǐng)求標(biāo)志。建立后,終端收到輸出請(qǐng)求,則開始傳輸數(shù)據(jù),傳輸完后設(shè)置輸出終端請(qǐng)求標(biāo)志。狀態(tài)階段在最后的操作序列中。對(duì)于讀操作,過(guò)程跟寫操作基本相同,它們只有在數(shù)據(jù)傳輸階段中有些不同。在數(shù)據(jù)階段,當(dāng)確認(rèn)host數(shù)據(jù)包后,設(shè)置輸入0端點(diǎn)中斷請(qǐng)求和開始把數(shù)據(jù)放到緩沖器里面,在緩沖數(shù)據(jù)的時(shí)候,設(shè)置輸入0端點(diǎn)緩沖器忙標(biāo)志,緩沖完后清除該標(biāo)志。 批量傳送用于進(jìn)行批量的、非實(shí)時(shí)的數(shù)據(jù)傳輸;中斷傳輸模式,對(duì)于那些小批量的、點(diǎn)式、非連續(xù)的數(shù)據(jù)傳輸應(yīng)用的場(chǎng)合,如用于人機(jī)交互的鼠標(biāo)、鍵盤、游戲桿等,中斷傳輸?shù)姆绞绞亲钸m合的。他們包括兩或三個(gè)階段:請(qǐng)求包、數(shù)據(jù)包和握手包(可選)。在批蕈輸入過(guò)程中,host發(fā)送一個(gè)IN數(shù)據(jù)請(qǐng)求去接收批量數(shù)據(jù)。如果輸入忙標(biāo)志有效,USB控制器回復(fù)一個(gè)數(shù)據(jù)包,如果host收到有效數(shù)據(jù),則回復(fù)一個(gè)ACK握手。當(dāng)終端從host收到ACK握手后,USB控制器設(shè)置中端請(qǐng)求標(biāo)志和清除忙標(biāo)志。MCU服務(wù)終端請(qǐng)求,當(dāng)數(shù)據(jù)是有效,則數(shù)據(jù)開始進(jìn)入數(shù)據(jù)緩沖器中,并設(shè)置忙標(biāo)志,并開始重復(fù)上面過(guò)程。在批量輸出過(guò)程中,當(dāng)host想輸出批量數(shù)據(jù),其發(fā)送OUT請(qǐng)求數(shù)據(jù)包。ACK握手信號(hào)返回到host,當(dāng)USB控制器收到數(shù)據(jù)的時(shí)候,設(shè)置輸出中斷標(biāo)志,并開始輸出數(shù)據(jù),并設(shè)置輸出忙標(biāo)志。 同步傳輸適用于那嶼要求資料連續(xù)地、實(shí)時(shí)地、以固定的數(shù)據(jù)傳輸率產(chǎn)生、傳送并消耗的場(chǎng)合,如數(shù)字錄像機(jī)等。其不用握手確定.同時(shí),其數(shù)據(jù)包中的DATA0和DATA1作為PID,用于標(biāo)識(shí)不同的數(shù)據(jù)包。USB控制器在每次傳輸中都自動(dòng)捆綁PID。 系統(tǒng)流程圖如下圖3:
圖3 系統(tǒng)流程圖 其中,USB初始化包括一下步驟:配置USB數(shù)據(jù)包結(jié)構(gòu);初始化USB描述,初始化成你要實(shí)現(xiàn)的USB類型,可以設(shè)置5種不同的類型;選擇語(yǔ)言;設(shè)置狀態(tài)寄存器;設(shè)置ACK要求;設(shè)置USB中斷;設(shè)置USB RAM;選擇USB應(yīng)用的終端類型。 如果USB類型選擇了鍵盤或者鼠標(biāo),要初始化無(wú)線桌面協(xié)議,如選擇鍵盤協(xié)議,則用wdp_device_init(WDP_KEYBOARD)函數(shù)把無(wú)線桌面協(xié)議初始成鍵盤模式。 無(wú)線模塊初始化包括:MCU和無(wú)線模塊SPI接口有效;數(shù)據(jù)傳輸信道選擇;設(shè)置數(shù)據(jù)傳輸速度;FIFO大小設(shè)置;發(fā)送和接收功率設(shè)置;自動(dòng)回復(fù)確認(rèn)和重發(fā)次數(shù)設(shè)定等。 當(dāng)USB數(shù)據(jù)到來(lái)的時(shí)候,模塊首先讀取端點(diǎn)狀態(tài)并選擇終端輸入傳輸端點(diǎn).判斷緩沖器數(shù)據(jù)是否已經(jīng)滿,如果未滿,則接收并知道緩沖器滿并置緩沖器忙,并把緩沖器數(shù)據(jù)傳送到無(wú)線FIFO并發(fā)送到接收模塊,當(dāng)數(shù)據(jù)發(fā)送完并接收到確定后,USB控制器把忙標(biāo)志清楚,在接收USB數(shù)據(jù)。其工作流程圖如下圖4。
圖4 USB數(shù)據(jù)輸入處理流程圖 當(dāng)模塊接收到無(wú)線數(shù)據(jù)的時(shí)候,MCU通過(guò)SPI接口把FIFO的數(shù)據(jù)放到USB發(fā)送緩沖器罩,設(shè)置USB端點(diǎn)狀態(tài),并處理與控制輸出相關(guān)的USB標(biāo)準(zhǔn)請(qǐng)求和USB HID設(shè)備類請(qǐng)求,發(fā)送USB數(shù)據(jù),USB數(shù)據(jù)發(fā)送完畢后,通過(guò)無(wú)線發(fā)送確定信號(hào),并再次接收無(wú)線數(shù)據(jù),如果之前數(shù)據(jù)還沒(méi)有發(fā)送完的,不用再進(jìn)行USB請(qǐng)求等設(shè)置,以減少處理時(shí)間。 由于USB協(xié)議的交互時(shí)間有嚴(yán)格的要求,所以無(wú)線數(shù)據(jù)和數(shù)據(jù)處理中,延時(shí)不能太長(zhǎng);USB 2.0協(xié)議。其支持三種設(shè)備:低速、全速、高速,而對(duì)于NRF24LU1芯片.由于其無(wú)線傳輸速限制,所以無(wú)線USB模塊只能工作在低速和全速。 5 結(jié)語(yǔ) USB接口是計(jì)算機(jī)的基本配置,是最常用的計(jì)算機(jī)和外設(shè)的通信接口。WUSB是近距離無(wú)線通信的重要應(yīng)用.可以消除計(jì)算機(jī)和外設(shè)的連線,給使用帶來(lái)很大的方便,因此WUSB應(yīng)用模塊將會(huì)用很大的發(fā)展空間。本文基于NORDIC公司新推出的NRF24LU1芯片,更好的解決了USB無(wú)線應(yīng)用,其減少了現(xiàn)有無(wú)線USB的尺寸和成本,同時(shí)提高了無(wú)線USB性能和安全性,有一定應(yīng)用前景。 本文作者創(chuàng)新點(diǎn):本文基于NRF24LU1單芯片實(shí)現(xiàn)無(wú)線USB模塊,減少了多芯片模塊的成本和體積,更利于無(wú)線USB模塊的推廣。 作者:丁寶國(guó),陸以勤 來(lái)源:《微計(jì)算機(jī)信息》(嵌入式與SOC)2009年第7-2期 |