基於ISP1581晶元的USB2 0介面設計

2021-04-18 04:41:43 字數 4343 閱讀 5780

基於isp1581晶元的usb2.0介面設計

通用序列匯流排(

usb)作為近年來新發展的一種序列匯流排標準,主要用於

pc機與外圍裝置的互聯。

usb匯流排具有使用簡單、支援即插即用、易於擴充套件和傳輸速度快等優點,使它得到越來越廣泛的應用。其協議主要有

usb1.1

和usb2.0

兩個版本,

usb1.1

傳輸速率最高可以達到

12mb/s

,而usb2.0

最高可以達到

480 mb/s

,這種速度可以滿足大部分資料傳輸應用。

目前,供於開發

usb介面的晶元很多,但主要有兩類:一類是帶usb介面的微控制器,例如cypress公司的ez-usb,intel公司的8x931等;另一類是純粹的usb介面晶元,它需要乙個外部微控制器,例如national公司的usbn9602,philips公司的pdiusbd12和isp1581等。在開發usb裝置之前,必須根據具體要求選用合適的usb介面晶元,以降低開發成本,減少開發時間。

本文給出了一種以

philips公司isp1581作為usb介面晶元,以ti公司的tms320f2812 dsp作為微控制器的usb2.0介面實現方案,並著重介紹了系統的軟硬體設計。

isp1581晶元簡介

isp1581是

philips公司推出的一款價效比很高的usb2.0介面器件。它完全遵循usb2.0規範,支援7個in端點,7個out端點和乙個固定控制in/out端點。它支援

usb2.0的自檢工作模式和usb1.1的返回工作模式,可以在高速或全速條件下正常執行。isp1581內部整合了序列介面引擎(sie)、pie、8kb的fifo儲存器、資料收發器、

pll的12mhz晶體振盪器和3.3v的電壓調整器。它可以直接與ata/atapi 外設相連,並具有高速的dma介面。它可通過軟體控制與usb匯流排的連線(softconnect),內部具有上電復位電路,支援3.3v和5v兩種電源工作方式。

isp1581與外部的微控制器通訊是通過乙個高速的通用並行介面來實現的。它與微控制器的連線有兩種模式:斷開匯流排模式和通用處理器工作模式。在斷開匯流排模式下,

硬體電路設計

由tms320f2812(以下簡稱f2812)和isp1581構成的usb2.0介面電路如圖1所示。f2812是ti公司的c2000系列dsp,它具有很高的運算速度、較大的定址空間和豐富的片上外設資源。f2812和isp1581的連線採用通用處理器模式,即8位位址匯流排和16位資料匯流排分離。f2812的/xcs0and1作為isp1581的片選訊號,此時isp1581的暫存器位址對映到f2812的位址空間0x2000-0x4000。f2812與isp1581的資料交換採用中斷方式。isp1581的喚醒功能引腳wakeup接f2812的乙個通用i/o口; rpu引腳通過1.5k

ω電阻上拉;rref引腳通過12.0k

ω精密電阻接模擬地;mode1引腳在通用處理器模式下應上拉;bus_conf引腳功能為選擇匯流排模式,上拉後為通用處理器模式;mode0引腳用來選擇通用處理器模式下的讀/寫功能,上拉後為8051型;其內部整合了復位電路,reset引腳直接接高電平即可。沒有使用dma傳輸,所以與dma相關的引腳沒有連線。

主機提供

5v電源,經過

ht7133

器件變換為

3.3v

給整個系統供電韌體設計

韌體即微控制器的程式檔案,它主要完成usb協議處理和資料交換,目的是讓windows可以檢測和識別裝置,並建立起正確的通訊連線。裝置與主機的usb通訊可以分為配置通訊和應用通訊。配置通訊是主機對裝置進行檢測過程中,裝置的韌體對主機的一系列標準請求做出響應。裝置必須識別出每個請求,返回被請求的資訊,並且採取其它一些請求指定的動作。應用通訊是在主機識別裝置後進行的有用資料傳輸。usb支援控制傳輸、批量傳輸、中斷傳輸和等時傳輸四種傳輸型別,控制傳輸主要用於配置通訊,其它三種型別主要用於應用通訊。所有的usb器件都只有端點0支援控制傳輸。

根據usb2.0協議,任何傳輸都是由主機開始的,微控制器作它的前台工作,等待中斷。

系統的韌體程式主要由三部分組成:①初始化f2812和所有的外圍電路(包括isp1581);②主迴圈部分,其任務是迴圈掃瞄usb事件和等待中斷;③中斷服務程式,其任務是對時間敏感的,必須馬上執行。

在初始化過程中,除了f2812自身初始化外,主要完成對isp1581各個端點使用的傳輸型別、傳輸包大小和中斷型別及方式等的設定。f2812對isp1581的操作是通過寫/讀暫存器實現的。初始化結束後,通過設定isp1581的方式暫存器中的軟體連線位(softct)使外設連線到usb匯流排上。當主機檢測到有裝置連線後,進行匯流排復位。在此期間,isp1581傳送乙個高速(hs)模式檢測訊號來判斷主控制器支援的是usb2.0還是usb1.1規範,若接收到乙個高速(hs)的握手訊號表明有乙個hs主機與匯流排相連,那麼isp1581就轉換到高速(hs)狀態,否則仍工作在全速(fs)狀態。

isp1581接收到主機的令牌包、匯流排復位、掛起和接收到高速模式握手訊號等事件發生後,isp1581都會給f2812傳送中斷。f2812進人中斷服務程式,首先讀isp1581的中斷暫存器,判斷中斷型別,然後執行相應的操作。匯流排復位和高速模式中斷不需要進行特殊的處理,只需在中斷服務程式中設定標誌即可。在韌體程式中,比較難處理的是包含標準usb請求的控制傳輸。由於只有端點0支援控制傳輸,因此主要是端點0的程式設計。控制傳輸總是在設定(setup)階段開始,之後為可選的資料(data)階段,然後在狀態(status)階段結束。主機會傳送建立包(setup)、控制讀包(control_in)和控制寫包(control_out)三種包到裝置,isp1581相應的會產生三種中斷。在韌體程式設計中,可以設定空閒(usb_idle)、傳送(usb_tran**it)和接收(usb_receive)三種狀態來處理控制傳輸。圖2為微控制器對控制傳輸三種包的乙個處理流程圖。

usb2.0協議的第九章規定了11種標準請求,韌體應該對這11種標準請求作出正確響應。這裡以「get_desctiptor」和「set_descriptor」兩個標準請求為例並結合圖2說明韌體是如何通過控制傳輸來響應請求的。「get_desctiptor」請求開始時,主機傳送乙個建立包到isp1581,isp1581接收到「get_desctiptor」建立包後,將產生乙個中斷通知f2812。微控制器響應中斷,通過選擇端點0setup緩衝區讀取建立包的內容並將其存入儲存區。微控制器根據建立包的內容判斷是否為標準請求,如果是乙個標準請求,微控制器必須向控制輸出端點傳送應答建立命令,以重新使能下乙個建立階段。接下來微控制器需要判斷控制傳輸是控制讀還是寫,這可以通過讀建立包中bmrequesttype的第8位來確定。如果控制傳輸是乙個控制讀型別,器件需要在下乙個資料階段向主機發回資料報。微控制器需要設定乙個標誌以指示usb裝置現在處於傳輸模式,即準備在主機傳送請求時傳送資料。

建立階段結束後,主機會執行資料階段。isp1581等待接收control_in包,接收到後,微控制器確認

isp1581處於傳輸模式後進行資料報的傳送。isp1581的控制端點有64b fifo,每次只能傳輸64b的資料,微控制器在傳輸階段必須控制傳輸資料的數量。如果剩下的位元組數大於64,微控制器將先傳送64b並減去參考長度64。當下乙個control_in包到來時,微控制器將確定剩餘的位元組是否為零。如果已經沒有資料要傳送,微控制器傳送乙個空包以指示主機資料已經傳送完畢。

如果建立包為「

set_descriptor」請求,那麼建立包中的控制傳輸將指示此包為控制寫型別。在執行完「set_descriptor」請求過程中,f2812等待資料階段。主機傳送乙個control_out包標誌,isp1581接收到資料報,並對f2812產生乙個端點0 out中斷。微控制器響應中斷,首先確認isp1581是否處於usb_receive狀態,然後微控制器通過選擇控制輸出端點,確認緩衝區是否已滿,並將資料從緩衝區讀出。 

相對於控制傳輸,

usb的其它幾種傳輸模式都比較好處理。isp1581的7個in端點和7個out端點均可通過程式設計設定為批量傳輸、中斷傳輸或等時傳輸模式。在韌體程式設計中需要注意以下幾點:①isp1581的8kb fifo是所有端點共享的,所以在設定各個端點傳輸包大小時,總和不能超過8kb;②在除錯中,可根據windows對usb裝置的列舉順序進行程式除錯;③為做到相容usb1.1,全速狀態下響應主機標準請求時需要傳送全速描述符。完成usb韌體程式設計後,在主機方面需要編寫usb裝置驅動程式和應用程式。usb驅動程式可使用windows的ddk編寫,也可以使用第三方提供的驅動生成軟體編寫,如jungo公司的windriver驅動生成軟體等。最後,採用批量傳輸方式對系統進行了測試,實際測得傳輸速度9.5mb/s。文中的設計未採用dma,isp1581採用dma方式後最高可以達到25mb/s的傳輸速度。

基於ISP1581晶元的USB2 0介面設計

基於isp1581晶元的usb2.0介面設計 通用序列匯流排 usb 作為近年來新發展的一種序列匯流排標準,主要用於 pc機與外圍裝置的互聯。usb匯流排具有使用簡單 支援即插即用 易於擴充套件和傳輸速度快等優點,使它得到越來越廣泛的應用。其協議主要有 usb1.1 和usb2.0 兩個版本,usb...

USB介面晶元的選擇

在進行乙個usb裝置開發之前,首先要根據具體使用要求選擇合適的usb控制器。目前,市場上 的usb控制器主要有兩種 帶usb介面 ft232bl 的微控制器 mcu 或純粹的usb介面晶元。帶usb介面的微控制器從應用上又可以分成兩類,一類是從底層設計專用於usb控制的微控制器另一類是增加了usb介...

HSIC一種基於USB的高速晶元通訊協議

usb phy 之後通過usb cable 連線。usb2.0可以直接通過hsic直連,屬於晶元間的連線方案。速度可達480m,是iic的理想替代。晶元間usb ic usb 有時也稱為usb ic,晶元間usb或高速晶元間 hsic 是usb實施者論壇的 usb 2.0規範的附錄。hsic的usb...