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