基于ISP1581型接口電路的USB2.0接口設計
摘要:通用串行總線(xiàn)(USB)作為一種計算機與外圍設備連接的標準接口,具有即插即用、外展方便和傳輸速度快等優(yōu)點(diǎn)。文中給出一種基于SIP1581型微控制器的USB2.0接口實(shí)現方案,同時(shí)給出它的軟硬件設計方法。
關(guān)鍵詞:通用串行總線(xiàn) 接口電路 固件 驅動(dòng)程序
1 引言
通用串行總線(xiàn)(USB)是近年來(lái)開(kāi)發(fā)的一種串行總線(xiàn)標準,主要用于PC與外圍設備的互聯(lián)。USB總線(xiàn)具有使用簡(jiǎn)單、即插即用、易于擴展和傳輸速度快等優(yōu)點(diǎn)。其協(xié)議主要有USB1.1和USB2.0二個(gè)版本,USB1.1的傳輸速率最高可以達到12Mb/s,USB2.0最高可以達到480Mb/s,因此可以滿(mǎn)足大部分數據的傳輸需要。
目前,用于USB接口的電路主要有二類(lèi):一類(lèi)是帶USB接口的微控制器(如Cypress公司的EZUSB,Intel公司的8x931等);另一類(lèi)是純粹的USB接口電路,它需要一個(gè)外部微控制器(如National Semiconductor公司的USBN9602,Philips公司的PDIUSBD12和ISP1581等)。通常在開(kāi)發(fā)USB設備之間必須根據具體要求選用合適的USB接口電路,以降低開(kāi)發(fā)成本,減少開(kāi)發(fā)時(shí)間。
本文給出一種以Philips公司的ISP1581型接口電路作為USB接口,以TI公司的TMS320F2812型DSP作為微控制器的USB2.0接口實(shí)現方案和系統軟硬件設計方法。
圖1
2 ISP1581簡(jiǎn)介
ISP1581是Philips公司推出的一款高性?xún)r(jià)比的USB2.0接口電路。它完全遵循它完全遵循USB2.0規范,支持7個(gè)IN端點(diǎn),7個(gè)OUT端點(diǎn)和一個(gè)固定控制IN/OUT端點(diǎn)。ISP1581支持SUB2.0的自檢工作模式和USB1.1的返回工作模式,可以在高速或全速條件下正常運行。內部集成有串行接口引擎(SIE)、PIE、8KB的FIFO存儲器、數據收發(fā)器、PLL的12MHz晶體振蕩器和3.3V的電壓調整器。該電路可直接與ATA/ATAPI外設相連,并具有高速DMA接口。同時(shí),可通過(guò)軟件控制與USB總線(xiàn)的連接(SoftConnect),ISP1581內部具有上電復位電路,支持3.3V和5V二種電源工作方式。
ISP1581與外部微控制器的通信主要通過(guò)一個(gè)高速通用并行接口來(lái)實(shí)現。它與微控制器的連接有二種模式:斷開(kāi)總線(xiàn)模式和通用處理器工作模式。在斷開(kāi)總線(xiàn)模式下,AD[7:0]為多路復用的8位地址/數據總線(xiàn),DATA[15:0]為單獨的DMA數據總線(xiàn);在通用處理器工作模式下,AD[7:0]為單獨的8位地址線(xiàn),DATA[15:0]為16位控制器數據總線(xiàn),此時(shí),DMA將多路復用到DATA[15:0]控制器的數據總線(xiàn)上。ISP1581適合PDA、存儲器類(lèi)、通訊設備類(lèi)、數碼相機類(lèi)、復印機類(lèi)和掃描儀類(lèi)等大多數USB設備類(lèi)的設計。
3 硬件電路設計
由TMS320F2812(以下簡(jiǎn)稱(chēng)F2812)和ISP1581構成的USB2.0接口電路如圖1所示。F2812是TI公司的C2000系列DSP,具有很高的運算速度、較大的尋址空間和豐富的片上外設資源。F2812和ISP1581的連接采用通用處理器模式,即8位地址總線(xiàn)和16位數據總線(xiàn)分離。F2812的XCS0AND1作為ISP1581的片選信號,此時(shí)ISP1581的寄存器地址映射到F2812的地址空間0x2000-0x4000。F2812與ISP1581的數據交換采用中斷方式。ISP1581的喚醒功能引腳WAKEUP接到F2812的一個(gè)通用I/O口上;RPU引腳通過(guò)1.5kΩ電阻器上拉;RREF引腳通過(guò)12.0kΩ精密電阻器接模擬地;MODE引腳在通用處理器模式下也應上拉;BUS_CONF引腳的功能是選擇總線(xiàn)模式,上拉后為通用處理模式;MODE0引腳用來(lái)選擇通用處理器模式下的讀/寫(xiě)功能,上拉后為8051型。該電路內部集成了復位電路,將RESET引腳直接接高電平即可復位。由于本設計沒(méi)有使用DMA傳輸,所以與DMA相關(guān)的引腳沒(méi)有連接。主機提供的5V電源經(jīng)過(guò)HT7133變換為3.3V后可給整個(gè)系統供電。
4 軟件設計
軟件即微控制器的程序文件,它主要完成USB協(xié)議處理和數據交換,目的是讓W(xué)indows檢測和識別設備,建立起正確的通信連接。設備與主機的USB通信可以分為配置通信和應用通信。配置通信 主要指主機在對設備進(jìn)行檢測的過(guò)程中設備軟件對主機的一系列標準請求所做出的響應。設備必須識別每個(gè)請求,并返回被請求的信息,同時(shí)采取其他一些請求指定的動(dòng)作。應用通信主要指主機識別設備后進(jìn)行的有用數據傳輸。USB支持控制傳輸、批量傳輸、中斷傳輸和等時(shí)傳輸4種傳輸類(lèi)型,控制傳輸主要用于配置通信,其他3種類(lèi)型主要用于應用通信。所有的USB器件都只有端點(diǎn)0支持控制傳輸。
根據USB2.0協(xié)議,任何傳輸都是由主機開(kāi)始的,微控制器做它的前臺工作,并等待中斷。系統的軟件程序主要由三部分組成:一是初始化F2812和所有的外圍電路(包括ISP1581);二是主循環(huán)部分,其任務(wù)是循環(huán)掃描USB事件和等待中斷;三是中斷服務(wù)程序,其任務(wù)執行系統指令。
在初始化過(guò)程中,除了F2812自身初始化外,還要完成對ISP1581各個(gè)端點(diǎn)使用的傳輸類(lèi)型、傳輸包大小和中斷類(lèi)型及方式等設備任務(wù)。F2812對ISP1581的操作是通過(guò)寫(xiě)/讀寄存器來(lái)實(shí)現的。初始化結束后,通過(guò)設置ISP1581方式寄存器中的軟件連接位(SOFTCT)可使外設連接到USB總線(xiàn)上。主機檢測到有設備連接后會(huì )進(jìn)行總線(xiàn)復位。在此期間,ISP1581將發(fā)送高速(HS)模式檢測信號來(lái)判斷主控制器支持的是USB2.0還是USB1.1規范,若接收到一個(gè)高速(HS)握手信號,則表明有一個(gè)HS主機與總線(xiàn)相連,此此ISP1581將轉換到高速(HS)狀態(tài),否則仍工作在全速(FS)狀態(tài)。
當ISP1581接收到主機的令牌包、總線(xiàn)復位、掛起和接收到高速模式握手信號等事件后,ISP1581都會(huì )給F2812發(fā)送中斷請求。F2812進(jìn)人中斷服務(wù)程序后,首先讀ISP1581的中斷寄存器,判斷中斷類(lèi)型,然后執行相應的操作??偩€(xiàn)復位和高速模式中斷不需要進(jìn)行特殊的處理,只需在中斷服務(wù)程序中設定標志。在軟件程序中,比較難處理的是包含標準USB請求的控制傳輸。由于只有端點(diǎn)0支持控制傳輸,因此主要是對端點(diǎn)0的編程??刂苽鬏斂偸窃谠O定(SETUP)階段開(kāi)始,之后為可選的數據(DATA)階段,然后在狀態(tài)(STATUS)階段結束。主機會(huì )發(fā)送建立包(SETUP)、控制讀包(CONTROL_IN)和控制寫(xiě)包(CONTROL_OUT)3種包到設備,ISP1581相應的會(huì )產(chǎn)生3種中斷。在編程中,可以設備空閑(USB_IDLE)、發(fā)送(USB_TRANSMIT)和接收(USB_RECEIVE)3種狀態(tài)來(lái)處理控制傳輸。圖2為微控制器對3種包的控制傳輸處理流程。
USB2.0協(xié)議的第九章規定了11種標準請求,軟件應對這11種標準請求作出正確響應。這里以“Get_Desctiptor”和“Set_Descriptor”二個(gè)標準請求為例,并結合圖2來(lái)說(shuō)明軟件是如何通過(guò)控制傳輸來(lái)響應請求的?!癎et_Desctiptor”請求開(kāi)始時(shí),主機發(fā)送一個(gè)建立包到ISP1581,ISP1581接收到“Get_Desctiptor”建立包后,將產(chǎn)生一個(gè)中斷通知F2812。微控制器響應中斷,并通過(guò)選擇端點(diǎn)0SETUP緩沖區來(lái)讀取建立包的內容并將其存入存儲區。微控制器根據建立包的內容判斷是否為標準請求,如果是一個(gè)標準請求,微控制器必須向控制輸出端點(diǎn)發(fā)送應答建立命令,以重新使能下一個(gè)建立階段。接下來(lái)微控制器再判斷控制傳輸是控制讀還是寫(xiě),這可以通過(guò)讀建立包中bmRequestType的第8位來(lái)確定。如果控制傳輸是一個(gè)控制讀,器件將在下一個(gè)數據階段向主機發(fā)回數據包。微控制器需要設置一個(gè)標準以指示USB設備現在處于傳輸模式,即準備在主機發(fā)送請求時(shí)發(fā)送數據。
建立階段結束后,主機會(huì )執行數據階段。當ISP1581接收到所等待的Control_In包后,微控制器將對ISP1581處于傳輸模式后進(jìn)行數據包的發(fā)送進(jìn)行確認。ISP1581的控制端點(diǎn)有64B FIFO,每次只能傳輸64B的數據,微控制器在傳輸階段必須控制傳輸數據的數量。如果剩下的字節數大于64,微控制器將先發(fā)送64B并減去參考長(cháng)度64。當下一個(gè)Control_In包到來(lái)時(shí),微控制器將確定剩余的字節是否為零。如果已經(jīng)沒(méi)有數據要發(fā)送,微控制器將發(fā)送一個(gè)空包向主機表明數據已經(jīng)發(fā)送完畢。
圖2
如果建立包為“Set_Descriptor”請求,那么建立包中的控制傳輸將指示此包為控制寫(xiě)類(lèi)型。在執行完“Set_Descriptor”請求過(guò)程后,F2812進(jìn)入等待數據階段。主機發(fā)送Control_Out包標志后,當ISP1581接收到該數據包時(shí)會(huì )對F2812產(chǎn)生一個(gè)端點(diǎn)0 OUT中斷。微控制器響應中斷時(shí),首先確認ISP1581是否處于USB_Receive狀態(tài),然后微控制器通過(guò)選擇控制輸出端點(diǎn)來(lái)確認緩沖區是否已滿(mǎn),同時(shí)將數據從緩沖區讀出。
相對于控制傳輸來(lái)說(shuō),USB的其他幾種傳輸模式都比較好處理。ISP1581的7個(gè)IN端點(diǎn)和7個(gè)OUT端點(diǎn)均可通過(guò)編程設置為批量傳輸、中斷傳輸或等時(shí)傳輸模式。在軟件編程中需要注意以下幾點(diǎn):
一是ISP1581的8kB FIFO是所有端點(diǎn)共享的,所以在設定各個(gè)端點(diǎn)傳輸包大小時(shí),其總和不能超過(guò)8kB;二是在調試時(shí),可根據Windows對USB設備的枚舉順序進(jìn)行程序調試;第三,為做到與USB1.1兼容,在全速狀態(tài)下響應主機標準請求時(shí),需要發(fā)送全速描述符。
在完成USB軟件編程后,還需要在主機方面編寫(xiě)USB設備驅動(dòng)程序和應用程序。USB驅動(dòng)程序可使用Windows的DDK編寫(xiě),也可以使用第三方提供的驅動(dòng)生成軟件編寫(xiě)(如Jungo公司的WinDriver驅動(dòng)生成軟件等)。最后采用批量傳輸方式對系統進(jìn)行測試(筆者實(shí)際測得的傳輸速度為9.5MB/s)。本文的設計未采用DMA,實(shí)際上,ISP1581采用DMA方式后,最高傳輸速度可以達到25MB/s。
5 結束語(yǔ)
本文詳細介紹了基于ISP1581型接口電路的USB2.0接口軟硬件設計。ISP1581是一個(gè)性能優(yōu)化的USB接口電路,具有同外部微控制器接口簡(jiǎn)單、應用靈活、調試方便和性?xún)r(jià)比較高等優(yōu)點(diǎn)。采用ISP1581可以快速開(kāi)發(fā)出高性能的USB2.0設備。實(shí)際上,USB作為新一代串行總線(xiàn)標準,在計算機與外設的互聯(lián)中得到越來(lái)越廣泛的應用,因此,USB接口的開(kāi)發(fā)也會(huì )得到越來(lái)越多的重視。
評論