新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > USB設(shè)備開發(fā)實(shí)例

USB設(shè)備開發(fā)實(shí)例

作者: 時(shí)間:2001-11-09 來源: 收藏

通用串行總線(Universal Serial Bus USB),是一種快速、靈活的總線接口。與其它通信接口比較,USB接口的最大特點(diǎn)是易于使用,這也是USB的主要設(shè)計(jì)目標(biāo)。作為一種高速總線接口,USB適用于多種設(shè)備,比如數(shù)碼相機(jī)、MP3播放機(jī)、高速數(shù)據(jù)采集設(shè)備等。易于使用還表現(xiàn)在USB接口支持熱插拔,并且所有的配置過程都由系統(tǒng)自動(dòng)完成,無需用戶干預(yù)。

本文引用地址:http://2s4d.com/article/2816.htm

從表1可知,數(shù)據(jù)傳輸速率高是USB接口的另一特點(diǎn)。USB接口支持1.5Mb/s(低速)、12Mb/s(全速)和高達(dá)480Mb/s(USB 2.0規(guī)范)的數(shù)據(jù)傳輸速率,扣除用于總線狀態(tài)、控制和錯(cuò)誤監(jiān)測等的數(shù)據(jù)傳輸,USB的最大理論傳輸速率仍達(dá)1.2Mb/s9.6Mb/s,遠(yuǎn)高于一般的串行總線接口。

USB接口芯片價(jià)格低廉,一個(gè)支持USB 1.1規(guī)范的USB接口芯片價(jià)格大多在$12之間,跟一個(gè)232485接口芯片價(jià)格差不多,這也大大促進(jìn)USB設(shè)備的開發(fā)與應(yīng)用。

在進(jìn)行一個(gè)USB設(shè)備開發(fā)之前,首先要根據(jù)具體使用要求選擇合適的USB控制器。目前,市場上供應(yīng)的USB控制器主要有兩種:帶USB接口的單片機(jī)(MCU)或純粹的USB接口芯片。

USB接口的單片機(jī)從應(yīng)用上又可以分成兩類,一類是從底層設(shè)計(jì)專用于USB控制的單片機(jī),比如Cypress公司的CY7C63513(低速)、CY7C64013(全速),但由于價(jià)格、開發(fā)工具以及單片機(jī)性能有限等問題,所以一般不推薦選用。另一類是增加了USB接口的普通單片機(jī),例如Intel公司的8X931(基于8051)、8X930(基于高速、增強(qiáng)的8051)、Cypress公司的EZUSB(基于8051),選擇這類USB控制器的最大好處在于開發(fā)者對系統(tǒng)結(jié)構(gòu)和指令集非常熟悉,開發(fā)工具簡單,但對于簡單或低成本系統(tǒng),價(jià)格高將會(huì)是最大的障礙。一般來說,后者的價(jià)格是前者價(jià)格的10倍。

純粹的USB接口芯片僅處理USB通信,必須有一個(gè)外部微處理器來進(jìn)行協(xié)議處理和數(shù)據(jù)交換。典型產(chǎn)品有Philips公司的PDIUSBD11I2C接口)、PDIUSBD12(并行接口),NS公司的USBN9603/9604(并行接口),NetChip公司的NET2888等。USB接口芯片的主要特點(diǎn)是價(jià)格便宜、接口方便、可靠性高,尤其適合于產(chǎn)品的改型設(shè)計(jì)(硬件上僅需對并行總線和中斷進(jìn)行改動(dòng),軟件則需要增加微處理器的USB中斷處理和數(shù)據(jù)交換程序、PC機(jī)的USB接口通信程序,無需對原有產(chǎn)品系統(tǒng)結(jié)構(gòu)作很大的改動(dòng))。

在選定USB控制器以后,如果是帶USB接口的單片機(jī),則是一般單片機(jī)應(yīng)用系統(tǒng)的開發(fā);反之,就是如何把USB接口芯片與單片機(jī)應(yīng)用系統(tǒng)融合的問題,一般USB接口芯片都支持多種并行總線結(jié)構(gòu)(復(fù)用/非復(fù)用),可以方便的與多種單片機(jī)接口。硬件設(shè)計(jì)中要注意的就是USB接口芯片的時(shí)鐘速度比較高,如果芯片內(nèi)部沒有PLL來倍頻,則外部晶體振蕩電路(多數(shù)在48MHz)的設(shè)計(jì)就應(yīng)該特別注意,包括晶體的選擇(負(fù)載電容大?。?、匹配網(wǎng)絡(luò)的設(shè)計(jì)以及PCB布線。

USB設(shè)備的軟件設(shè)計(jì)主要包括兩部分:一是USB設(shè)備端的單片機(jī)軟件,主要完成USB協(xié)議處理與數(shù)據(jù)交換(多數(shù)情況下是一個(gè)中斷子程序)以及其它應(yīng)用功能程序(比如A/D轉(zhuǎn)換、MP3解碼等)。二是PC端的程序,由USB通信程序和用戶服務(wù)程序兩部分組成,用戶服務(wù)程序通過USB通信程序與系統(tǒng)USBDI(USB Device Interface)通信,由系統(tǒng)完成USB協(xié)議的處理與數(shù)據(jù)傳輸。PC端程序的開發(fā)難度比較大,程序員不僅要熟悉USB協(xié)議,還要熟悉Windows體系結(jié)構(gòu)并能熟練運(yùn)用DDK工具。

USB接口軟件主要完成USB協(xié)議的處理和數(shù)據(jù)的交換,一定要嚴(yán)格遵循USB2.0規(guī)范第九章的規(guī)定(詳見 Universal Serial Bus Specification Revision 2.0 : Chapter 9.USB Device Framework www.usb.org)。

要快捷、成功的開發(fā)一個(gè)USB設(shè)備,正確、合理的調(diào)試方法是必不可少的環(huán)節(jié)。調(diào)試基本分三步進(jìn)行:首先對外部設(shè)備(單片機(jī)部分)借助PC調(diào)試軟件(芯片生產(chǎn)商提供或從網(wǎng)上下載WINRTUSBKernel Driver等調(diào)試軟件)將設(shè)備端的USB協(xié)議(主要有描述符請求、端口配置、地址設(shè)置以及基本數(shù)據(jù)交換)調(diào)通。然后,用調(diào)試好的USB設(shè)備接口來開發(fā)、調(diào)試PC軟件,這一步相對比較容易。最后,加上USB設(shè)備端的其它用戶程序,對整個(gè)完整的系統(tǒng)進(jìn)行系統(tǒng)調(diào)試。

下面從硬件、軟件兩方面具體介紹作者設(shè)計(jì)的一個(gè)便攜式USB數(shù)據(jù)采集設(shè)備,重點(diǎn)介紹USB接口部分。該數(shù)據(jù)采集系統(tǒng)以AD公司的帶8通道12A/D212D/A52內(nèi)核單片機(jī)ADuC812作為系統(tǒng)控制器,采用Philips公司的PDIUSBD12作為USB接口芯片。USB接口電路原理圖如圖1所示。由于系統(tǒng)中需要斷電后保存采集數(shù)據(jù),擴(kuò)展了兩片28F040,因此在這里把PDIUSBD12CPU的接口采用了總線復(fù)用方式,通過ALE信號(hào)把數(shù)據(jù)分離出來,并把低64K RAM空間全留給PDIUSBD12(ADuC812RAM空間有1M,分頁管理,每頁64K,共256頁,對應(yīng)DPP寄存器值0255PDIUSBD12占第0頁,即DPP0),地址線A(P2.0)作為PDIUSBD12的指令/數(shù)據(jù)選擇線,則地址000100H寫指令、000000H讀寫數(shù)據(jù);單片機(jī)的P3.5口線提供PDIUSBD12的復(fù)位信號(hào),接非門是保證單片機(jī)復(fù)位時(shí)PDIUSBD12也復(fù)位。PDIUSBD12與單片機(jī)的數(shù)據(jù)交換采用中斷方式(INT0),實(shí)際應(yīng)用中如果系統(tǒng)中斷資源不夠(特別是系統(tǒng)改型設(shè)計(jì)時(shí)),也可以接成查詢方式,只是注意查詢間隔不要超過USB接口的最大等待時(shí)間(最大500mS)。PDIUSBD12GOOD-LINK指示燈(LED)USB通信時(shí)會(huì)閃爍,常亮或一直不亮說明USB接口有問題,調(diào)試時(shí)非常有用。PDIUSBD12采用PLL倍頻產(chǎn)生系統(tǒng)時(shí)鐘,只需外接低頻晶體,PCB設(shè)計(jì)比較方便。

單片機(jī)軟件設(shè)計(jì)主要注意以下幾點(diǎn):

* PDIUSBD12的中斷輸出引腳只要中斷寄存器不為0就保持低電平,所以單片機(jī)的對應(yīng)中斷(INT0)應(yīng)設(shè)置成電平觸發(fā);中斷處理后要用讀上次傳輸狀態(tài)寄存器清除中斷寄存器中對應(yīng)位(D0-D5)。

* PDIUSBD12靠軟件控制USB端口的連接,程序在系統(tǒng)初始化處理完后軟件設(shè)置連接到USB端口,然后開中斷。

* PDIUSBD12對內(nèi)部寄存器的讀寫沒有邊界限制,程序設(shè)計(jì)中一定不要讀寫超過端點(diǎn)深度的數(shù)據(jù)。特別對于描述符請求,由于其長度大于Control IN 深度(16 Bytes),要分幾個(gè)數(shù)據(jù)周期傳輸。

* 描述符一定要設(shè)置正確,并且注意USB協(xié)議中所有字?jǐn)?shù)據(jù)均定義為低字節(jié)在前傳輸(LSB),例如Phlips的ID為471H,應(yīng)在iDVendor中定義成71H、04H。

* 在接收到Setup包后,一定要用ACK Setup指令來重新使能Control IN 和Control OUT端點(diǎn)。向IN端點(diǎn)寫數(shù)據(jù)后,要用Validate Buffer指令使數(shù)據(jù)可以在下一個(gè)IN數(shù)據(jù)周期發(fā)送。從OUT端點(diǎn)讀數(shù)據(jù)后,要用Clear Buffer指令來清空緩沖區(qū),否則后面OUT周期傳輸?shù)臄?shù)據(jù)將被丟棄(返回NAK)。

*協(xié)議的處理一定要按USB規(guī)范要求進(jìn)行,對無效請求,用Set Endpoint Status指令將Control IN和Control OUT端點(diǎn)Stall即可。

PC機(jī)軟件作者用VC6.0開發(fā),分USB接口通信程序和應(yīng)用程序兩部分,其開發(fā)以及系統(tǒng)調(diào)試過程與前文所述相同,此處不再贅 述?!?/font>

 

參考文獻(xiàn)

1 Jan Axelson.USB Complete.Lakeview Research,1999

2 Don Anderson.Universal Serial Bus System Architecture.Addison Wesley Longman,Inc,2000

3 ANALOG DEVICES.ADuC812 User's Manual,2000



關(guān)鍵詞:

評論


相關(guān)推薦

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

關(guān)閉