1 概 述 隨著(zhù)PC的廣泛應用,其外設也越來(lái)越多,打印機、鼠標、掃描儀、游戲桿、音箱……,每個(gè)外設都需要通過(guò)一個(gè)接口與PC相連。外設多了,PC的I/O插口自然也就不夠用了。在很多特定的應用場(chǎng)合,如工業(yè)數據采集等領(lǐng)域,常常用采集板卡來(lái)完成工作,而每一個(gè)板卡自然會(huì )占用一個(gè)PC插槽。PC插槽有限。采集點(diǎn)多了就不夠用。除此之外,在個(gè)人電腦的應用中,外圍設備存在很多問(wèn)題。這些問(wèn)題大致可以歸結到成本、配置以及個(gè)人電腦的連接等幾個(gè)方面,而USB正是為了解決這些問(wèn)題而出現的一種方案。簡(jiǎn)而言之,USB的出現不僅解決了I/O插口不夠的問(wèn)題,而且還建立了一條連接和訪(fǎng)問(wèn)外設的方法。這些方法可以有效地減少總體成本,而且從終端用戶(hù)的角度來(lái)看,可以增加可連接的外設數目,簡(jiǎn)化設備的連接和配置。 通用串行總線(xiàn)USB是由Intel等廠(chǎng)商制定的連接計算機與具有USB接口的多種外設之間的串行總線(xiàn)。其拓撲結構如圖1所示。 成本低。為了把外設連接到PC上,USB提供了一種低成本的解決方案。 熱插拔。設備連接后由USB自動(dòng)檢測,并由軟件自動(dòng)配置,完成后可立即使用,無(wú)須用戶(hù)干涉。 單一的連接器類(lèi)型。USB定義了一種簡(jiǎn)單的連接器,可以用來(lái)連接任何一個(gè)USB設備。多個(gè)連接器可以通過(guò)USB集線(xiàn)器連接。 每個(gè)USB總線(xiàn)支持127個(gè)設備的連接。 USB支持三種設備傳輸速率:1.5 Mb/s(低速設備)、12 Mb/s(中速設備)和480 Mb/s(高速設備)。 外設能夠直接由USB總線(xiàn)進(jìn)行供電。 不需要系統資源(如內存、I/O地址空間和中斷請求線(xiàn)路)。 USB事務(wù)處理包括錯誤檢測機制,它們用以確保數據無(wú)錯誤發(fā)送。 電源保護。如果連續3 ms沒(méi)有總線(xiàn)活動(dòng),USB將自動(dòng)進(jìn)入掛起狀態(tài)。 支持四種類(lèi)型的傳輸方式:塊傳輸、控制傳輸、中斷傳輸和同步傳輸。 2 通用USB控制系統的組成結構 在每一個(gè)USB設備中都有一個(gè)串行接口引擎(SIE)。SIE與USB數據線(xiàn)的D+和D-兩個(gè)引腳相連,與USB設備進(jìn)行字節傳送。圖2表示一次USB塊傳輸,時(shí)間順序從左到右。SIE對PID信息包進(jìn)行解碼,并通過(guò)傳送的CRC位對數據進(jìn)行錯誤檢測,然后,將有效數據送到USB設備。如果SIE檢測到一個(gè)出錯的數據,它并不是發(fā)出一個(gè)握手信號,而是自動(dòng)地不進(jìn)行響應,并告訴主機延時(shí)重發(fā)。 由于USB被設計成可以用簡(jiǎn)便有效的方法來(lái)與多種類(lèi)型的外設通信,沒(méi)有現有接口的局限性和缺點(diǎn),這樣,導致了對USB接口的設計和編程更加復雜。為了降低設計者的開(kāi)發(fā)難度,使用專(zhuān)用的USB控制器已成為研制人員的首選方案。 USB協(xié)議的復雜性意味著(zhù)USB外設必須具備智能。USB控制器必須知道如何檢測并對USB端口的事件做出反應。一般的做法是:USB控制器只處理USB通信,由一個(gè)外部的微控制器(MCU)來(lái)管理USB控制器的寄存器、設備描述符的獲取和數據包的交換等,如圖3所示。 表1所示為可與一般微控制器連接的USB控制器。 USB控制器使用串行口或并行口與MCU連接。這樣,外部接口可能比USB最大速度要慢,使得芯片只適合傳送間歇數據。這樣設計的好處是系統組成靈活,可根據不同的系統需求,搭配不同的MCU,使其具有很高的性能價(jià)格比;但同時(shí)也加大了編程設計人員的開(kāi)發(fā)難度,延長(cháng)了產(chǎn)品的開(kāi)發(fā)周期。 另一種可行的方法是使用嵌入MCU的USB控制器。這樣,CPU只需要訪(fǎng)問(wèn)一系列寄存器和存儲器,便可實(shí)現USB口的數據傳輸。從而簡(jiǎn)化了程序的設計,并且許多供應商還提供許多范例電路和測試代碼,使設計者從復雜的協(xié)議解釋中得到解脫,F在,許多芯片制造商開(kāi)始生產(chǎn)一些基于通用MCU的USB控制器,采用研制人員所熟知的指令集,大大簡(jiǎn)化了編程的難度。如基于8051結構的USB控制器有:Intel公司的8X930A、8X931A;CYPRESS公司的EZ-USB等。此外,還有基于MITSUBISHI 740/7600/M16C的USB芯片;基于MOTORORA HC05系列的USB芯片等。受篇幅所限,本文僅介紹EZ-USB 2100系列單片機。 3 EZ-USB組成結構及特性 美國CYPRESS公司是一家從事USB接口芯片和USB單片機開(kāi)發(fā)和生產(chǎn)的公司。CYPRESS最新推出的帶智能USB接口的單片機EZ-USB,極大地降低了USB外設的開(kāi)發(fā)難度,為PC外設的制造商提供了一個(gè)性能優(yōu)良、價(jià)格較低的設計方案。 EZ-USB有多個(gè)系列的產(chǎn)品,根據不同的速率需求,可滿(mǎn)足不同的系統要求和價(jià)格。CYPRESS提供三個(gè)系列的EZ-USB芯片,如表2和表3所列。 3.1 EZ-USB芯片組成結構 EZ-USB芯片將USB接口的控制核整合到單片機集成電路中,如圖4所示。集成的USB收發(fā)模塊與USB 總線(xiàn)的D+和D-引腳相連。SIE進(jìn)行串行數據譯碼和錯誤更正,以及其他USB所要求的信號級操作等,最后,再與USB收發(fā)模塊接口進(jìn)行數據字節的傳輸。 內部的微處理器在標準8051上縮短了執行時(shí)間并增加了新的特性。它用內部SRAM存儲程序和數據,使EZ-USB 系統具有軟配置的特性。USB主機經(jīng)USB總線(xiàn)將8051的程序代碼和描述符裝入SRAM中,然后,EZ-USB芯片用已下裝程序中定義的外設特性進(jìn)行重新連接,這個(gè)過(guò)程也叫再枚舉。 EZ-USB系列使用了強大的SIE/USB接口(稱(chēng)為USB內核)。這個(gè)具有強大功能的內核可以自動(dòng)完成USB協(xié)議的轉換,簡(jiǎn)化8051的代碼。 EZ-USB 芯片在3.3 V電壓下就可以運行,簡(jiǎn)化了USB設備總線(xiàn)電壓的設計。 3.2 EZ-USB特性 ① 改進(jìn)的8051內核。性能可達到標準8051的5~10倍,與標準8051的指令完全兼容。 ② 高度集成。傳統USB外設的硬件設計通常包括非易失性存儲器(如EPROM、EEPROM、FLASH ROM)、微處理器、RAM、SIE(串行接口引擎)和DMA等。EZ-USB將上述多個(gè)模塊集成在一個(gè)芯片中,從而減少了各芯片接口部分時(shí)序配合時(shí)的麻煩。 ③ USB 內核。EZ-USB可以代替USB外設開(kāi)發(fā)者完成USB協(xié)議中規定的80 %~90 %的通信工作,使得開(kāi)發(fā)者不需要深入了解USB的低級協(xié)議即可順利地開(kāi)發(fā)出所需要的USB外設。EZ-USB系列芯片接收全部USB 的吞吐量。這種采用EZ-USB的設計,不受端點(diǎn)數目、緩沖區大小及傳輸速度的限制。 ④ 軟配置。外設未通過(guò)USB接口連接到PC機之前,外設上的固件存儲在PC上;一旦外設接到PC機上,PC先詢(xún)問(wèn)該外設是"誰(shuí)"(即讀設備描述符),然后,將該外設的固件下載到EZ-USB的RAM中并執行,這個(gè)過(guò)程叫作再枚舉。這個(gè)特性給USB外設開(kāi)發(fā)者帶來(lái)許多方便。如開(kāi)發(fā)過(guò)程中,當固件需要修改時(shí),可以在PC機上修改好以后,下載到EZ-USB,從而省去了編程芯片的麻煩。這種基于RAM的軟配置方法,可以允許無(wú)限的配置和升級。 ⑤ 易用的軟件開(kāi)發(fā)工具。固件可獨立于驅動(dòng)程序被測試。驅動(dòng)程序和固件的開(kāi)發(fā)與調試相互獨立,可加快開(kāi)發(fā)的速度。 4 EZ-USB微處理器 EZ-USB微處理器是一個(gè)改進(jìn)的8051內核,使用標準8051指令系統,其指令執行速度比標準8051快,原因有兩點(diǎn): ① 空閑( wasted)的總線(xiàn)周期被消去。一個(gè)總線(xiàn)周期僅包含4個(gè)時(shí)鐘周期,而標準8051則為12個(gè)時(shí)鐘周期。 ② 8051的運行速度為24 MHz。 除了速度的提高,改進(jìn)的8051內核還有以下幾處結構上的改進(jìn): ① 第二個(gè)數據指針,可用于存儲器塊之間的傳輸; ② 第二個(gè)UART; ③ 第三個(gè)16位計數器/定時(shí)器(TIMER2); ④ 與非多路復用16位地址總線(xiàn)的高速存儲器直接接口; ⑤ 增加了7個(gè)中斷源(INT2~INT5、PFI、T2和UART1); ⑥ 可變的MOVX執行時(shí)間可適優(yōu)紡憤/低速的RAM外設; ⑦ 256字節的內部寄存器RAM,8K字節的程序/數據復合SRAM; ⑧ 3.3 V工作電壓。 EZ-USB 集成芯片在8051的基礎上又有其他改進(jìn): ① 快速外部數據塊傳輸(指針自動(dòng)增量,快速傳輸模式); ② USB中斷向量; ③ CONTROL傳輸的SETUP和DATA部分有各自的緩沖器。 4.1 AN2131Q的封裝和引腳描述 圖5是EZ-USB 2100系列中80引腳封裝的AN2131Q的引腳排列圖。 各引腳功能分述如下: DISCON#:引腳1,輸出。該引腳由兩個(gè)位DISCOE和DISCON控制。當DISCOE=0時(shí),引腳懸空;當DISCOE=1時(shí),驅動(dòng)引腳。當DISCOE=1時(shí),驅動(dòng)的邏輯級與DISCON位相反。 USBD-,USBD+:引腳77,79 ,高阻態(tài)。USB D+/D-信號。將24歐姆振蕩器與USB D+/D-引腳相連。 A0~A15:引腳7~12,15,16,26~29,34~37輸出。8051地址總線(xiàn)。 D0~D7:引腳48~51,57~60,I/O/高阻態(tài)。8051數據總線(xiàn)。該雙向總線(xiàn)空閑時(shí)處于高阻狀態(tài),總線(xiàn)讀時(shí)為輸入,總線(xiàn)寫(xiě)時(shí)為輸出。 PSEN#:引腳80,輸出。程序存儲器使能端。引腳接低電平時(shí)有效,表示從外部存儲器中讀取程序。當EA為低電平時(shí),程序存儲器的地址從0x1B40開(kāi)始;當EA為高電平時(shí),程序存儲器的地址從0x0000開(kāi)始。 PA0~PA7:引腳68~71,73~76,I/O。多功能輸入/輸出引腳。 PB0~PB7:引腳44~47,52~55,I/O。多功能輸入/輸出引腳。 PC0~PC7:引腳30~33,38~41,I/O。多功能輸入/輸出引腳。 BKPT:引腳61,輸出。斷點(diǎn)。當8051地址總線(xiàn)與BPADDRH/L寄存器的內容一致,且USBBAV寄存器中的斷點(diǎn)使能(BPEN)時(shí),該引腳被激活(高電平)。如果USBBAV寄存器中的BPPULSE位為高,就產(chǎn)生8個(gè)24 MHz的高電平的時(shí)鐘脈沖;如果BPPULSE位為低,保持高電平直到8051清除USBBAV寄存器中的BREAK位(寫(xiě)1)。 RESET:引腳25,輸入。有效高電平復位。使8051和SIE復位。該引腳一般通過(guò)1個(gè)10 k歐姆電阻接地,用1個(gè)1μF電容接VCC。 EA:引腳24,輸入。訪(fǎng)問(wèn)外部存儲器。該引腳有效(HI)時(shí),8051并不是從內部程序RAM中獲得代碼,而是從外部存儲器中讀取代碼。當EA=0時(shí),8051從外部存儲器的0x1B40地址(AN2131)開(kāi)始讀取代碼。 AVCC:引腳21,電源。Analog Vcc(模擬電源)。該引腳為芯片的模擬部分提供電源。 AGND:引腳18,電源。Analog Ground(模擬地)。盡可能以最短路徑接地。 XIN:引腳19,輸入。晶振輸入。該引腳經(jīng)由12 MHz晶振和22~33 pF電容接地。它也能用12 MHz的時(shí)鐘電路驅動(dòng)。 XOUT:引腳20,輸出。晶振輸出。該引腳經(jīng)由12 MHz晶振和22~33 pF電容接地。當XIN由12 MHz時(shí)鐘電路驅動(dòng)時(shí),該引腳懸空。 WAKEUP#:引腳66,輸入。USB喚醒。當8051掛起時(shí),該引腳上的一個(gè)上升沿可開(kāi)啟振蕩器,向8051發(fā)出中斷,請求推出掛起狀態(tài)。維持WAKEUP#的低電平可避免EZ-US芯片進(jìn)入掛起狀態(tài)。 SCL:引腳65,OD(漏極開(kāi)路)。I2C時(shí)鐘。即使沒(méi)有I2C設備相連,也要用2.2 k歐姆電阻接VCC。 SDA:引腳64,OD(漏極開(kāi)路)。I2C數據。即使沒(méi)有I2C設備相連,也要用2.2 k歐姆電阻接VCC。 CLK24:引腳4,輸入。24 MHz時(shí)鐘,可鎖定為12 MHz輸入時(shí)鐘。當CPUCS寄存器中的OUTCLKEN=0時(shí)沒(méi)有輸出。 NC:引腳67。該引腳不連接。 軟配置是EZ-USB系列芯片的一個(gè)重要特性。EZ-USB芯片中包含內部程序/數據RAM,不再需要ROM或其他固定的存儲器。通過(guò)USB本身將程序下載到RAM中,為設備提供獨特的特性,使得修改、版本更新更容易。 EZ-USB可作為USB設備進(jìn)行連接,當內部8051處于復位狀態(tài)時(shí),將程序下載到內部RAM。這一切都是由改進(jìn)的SIE完成的,它可以進(jìn)行圖2中的所有操作,甚至更多。SIE包含其他邏輯,可用內部描述符表進(jìn)行枚舉操作。它也能響應主機發(fā)出的特殊的"下載固件"設備請求,將固件裝入內部RAM。還有一點(diǎn)值得一提的是,增加的SIE功能可用于8051。這一特點(diǎn)可縮減8051程序,加快程序的執行。 5 EZ-USB的枚舉和再枚舉 PC機運行時(shí),若插上或拔去一個(gè)USB設備,Windows系統便會(huì )自動(dòng)裝載或卸去設備的驅動(dòng)程序,即所謂的即插即用。這一系列動(dòng)作的自動(dòng)完成歸因于在每一個(gè)USB設備里都有一個(gè)描述符表,記錄了設備的要求和性能。當插上USB時(shí),要經(jīng)過(guò)以下幾個(gè)步驟: ① 主機向地址0發(fā)送"Get_Descriptor/Device"請求(設備第一次連接時(shí),必須響應地址0); ② 設備響優(yōu)紡訪(fǎng)請求,并將ID數據發(fā)送給主機; ③ 主機向設備發(fā)出"Set_Address"請求,給設備提供一個(gè)唯一的地址,以區別其他與總線(xiàn)相連的設備; ④ 主機發(fā)出"Get_Descriptor"請求,獲取更多的設備信息。據此,主機可以了解到該設備的其他情況,如該設備的端點(diǎn)個(gè)數、電氣要求、所需帶寬,然后下載程序。 為了支持軟特性,EZ-USB芯片能自動(dòng)地作為一個(gè)不需要固件的USB設備進(jìn)行枚舉,所以,USB接口本身可用來(lái)下載8051的程序和描述符表。當8051復位時(shí),EZ-USB的內核進(jìn)行最初(通電)的枚舉和下載。這種支持程序下載的最初USB 設備被稱(chēng)為"默認的USB設備"。 在代碼描述符表從主機中下載到EZ-USB RAM后,8051脫離復位狀態(tài),開(kāi)始執行設備程序。EZ-USB設備再次枚舉,這一次是作為裝入的設備。第二次枚舉稱(chēng)為"再枚舉"。 再枚舉的完成是EZ-USB芯片通過(guò)給USB 加電,模擬物理斷開(kāi)和重連接來(lái)完成的。 被稱(chēng)為"ReNum"(再枚舉)的EZ-USB控制位決定由內核及8051中的哪一個(gè)實(shí)體處理端點(diǎn)的設備請求。通電時(shí),RENUM位(USBCS.1)為0,表示EZ-USB內核自動(dòng)處理設備請求。一旦運行8051,它能設RENUM=1,表示用戶(hù)8051程序用它下載的固件處理子設備請求。 6 EZ-USB端點(diǎn) 由于USB是串行總線(xiàn),因此設備端點(diǎn)實(shí)際上是一個(gè)FIFO存儲器。主機通過(guò)發(fā)出4位地址及1位方向位,選擇設備端點(diǎn)。所以,USB可定位32個(gè)端點(diǎn):IN0~IN15和OUT0~OUT15。8051從OUT緩沖區中讀取端點(diǎn)數據,將通過(guò)USB傳輸的端點(diǎn)數據寫(xiě)入IN緩沖區。 USB端點(diǎn)有四種類(lèi)型:塊(bulk)、控制、中斷、同步。 6.1 塊端點(diǎn) 塊端點(diǎn)無(wú)方向控制,一個(gè)端點(diǎn)地址對應一個(gè)方向,所以,端點(diǎn)IN2的地址不同于端點(diǎn)OUT2。EZ-USB提供了14個(gè)用于塊傳輸的端點(diǎn),包括7個(gè)IN端點(diǎn)(EP1_IN~EP7_IN)和7個(gè)OUT端點(diǎn)(EP1_OUT~EP7 _OUT)。每一個(gè)端點(diǎn)都有1個(gè)64字節的緩沖區。 6.2 控制端點(diǎn)0 控制端點(diǎn)用于傳輸控制信息。任一個(gè)USB設備必須有默認的控制端點(diǎn)0。設備的枚舉(即第一次插上該設備時(shí),主機對其進(jìn)行初始化的過(guò)程)就是由端點(diǎn)0引導的。主機通過(guò)端點(diǎn)發(fā)送所有的USB請求。 控制端點(diǎn)是雙向的,它只接受SETUP信號?刂苽鬏敯瑑蓚(gè)或三個(gè)階段:SETUP、DATA(可選)和HANDSHAKE。 6.3 中斷端點(diǎn) 中斷端點(diǎn)與塊端點(diǎn)大致相同。14個(gè)EZ-USB端點(diǎn)(EP1~EP7、IN和OUT)可用作中斷端點(diǎn)。中斷端點(diǎn)的信息包的最大長(cháng)度可達到64字節,在它們的描述符中包含一個(gè)"輪詢(xún)間隔"字節,告訴主機為之服務(wù)的頻率。8051通過(guò)中斷端點(diǎn)傳送數據的方式與塊端點(diǎn)完全一樣。 6.4 同步端點(diǎn) 同步端點(diǎn)通過(guò)USB發(fā)送高帶寬、時(shí)間精確的數據。同步端點(diǎn)從數碼相機或掃描儀等外設中獲得數據,或將這些數據輸出至音頻數/模轉換器等設備。EZ-USB包含16個(gè)同步端點(diǎn),編號為8~15(8IN~15IN,8OUT~15OUT)。FIFO存儲器為16個(gè)端點(diǎn)提供了1024字節的存儲單元,這些單元可作為FIFO存儲器,提供雙緩沖器。作為雙緩沖器,8051從包含前一幀數據的同步端點(diǎn)的FIFO緩沖器讀取OUT數據,同時(shí)主機將當前幀的數據寫(xiě)入另一緩沖器中。相似地,8051將IN數據裝入同步端點(diǎn)的FIFO緩沖器中,在下一幀中通過(guò)USB發(fā)送,此時(shí)主機從另一緩沖器中讀當前幀的數據。在每一個(gè)起始幀,USB FIFO和8051 FIFO置位開(kāi)關(guān)或進(jìn)行乒乓通信。 7 USB的前景展望 其實(shí),除了像顯卡這種需要極高數據量和一些實(shí)時(shí)性要求特別高的控制設備外,幾乎所有的PC外設都可以移植到USB上來(lái)。而事實(shí)上國外幾乎已經(jīng)做到了這一點(diǎn),特別是在鼠標、鍵盤(pán)等產(chǎn)品上有很強的競爭實(shí)力。所以,USB的PC外設的發(fā)展空間是不可限量的。它可歸納為以下幾個(gè)大類(lèi)供開(kāi)發(fā)者參考: ① 傳統PC外設,像鼠標、鍵盤(pán)、音箱、游戲桿、掃描儀、打印機等; ② 基于PC的通信設備,如Modem、ISDN等; ③ 端口轉接器,如USB→232、USB→LPT等,以適應原來(lái)的設備; ④ 具有中國特色的設備,像漢字輸入筆那樣的東西; ⑤ 工業(yè)領(lǐng)域。 選擇何種芯片來(lái)設計USB控制系統,一般是基于任務(wù)的需求、學(xué)習編程的難易程度、性能價(jià)格比、可重編程及提供范例代碼等幾個(gè)因素來(lái)考慮。EZ-USB使得開(kāi)發(fā)過(guò)程更簡(jiǎn)單和廉價(jià),同時(shí)也大大提高了開(kāi)發(fā)效率,縮短了產(chǎn)品的研發(fā)周期。 |