《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > DSP的嵌入式USB主機接口設計
DSP的嵌入式USB主機接口設計
劉 兵 徐家愷 劉 陽
摘要: 在簡單介紹嵌入式USB芯片SL811HS的基礎上,給出了DSP的嵌入式USB主機接口軟、硬件設計的思路和方法,用以實現DSP和USB設備間的數據傳輸。
Abstract:
Key words :

  摘  要: 在簡單介紹嵌入式title="USB">USB芯片SL811HS的基礎上,給出了DSP的嵌入式USB主機接口軟、硬件設計的思路和方法,用以實現DSP和USB設備間的數據傳輸。
  關鍵詞: 嵌入式USB  DSP  USB固件  海量存儲器

   近年來,通用串行總線(USB)發(fā)展非常迅速,它具有成本低、速度快、總線供電、可熱插拔等特點,被認為是目前PC和外設連接的最佳方案,因而得到了廣泛的應用。USB技術規(guī)范將USB數據傳輸雙方劃分為2種類型:HOST和SLAVE,即主機和從屬設備。目前,USB主機一般都是由PC擔任,而市場上各式各樣的USB產品基本上都是SLAVE。USB技術在PC上應用獲得成功的同時,USB開發(fā)者還為USB尋找到了新的應用空間——嵌入式系統(tǒng)領域,使嵌入式USB技術成為USB發(fā)展的新亮點。該技術可應用在多種場合,例如:數碼相機可以將拍下的照片隨時轉移到移動存儲器上或者直接在打印機上輸出,手機和PDA等手持設備間可隨意交換音頻、視頻等及其他各類文件……其市場前景巨大。
  本文介紹采用TMS320VC54x DSP和嵌入式USB主機芯片的連接,實現USB設備和DSP的數據傳輸。
1 SL811HS芯片
  SL811HS是Cypress公司的一款低價位的嵌入式USB主/從二用芯片。SL811HS支持USB1.1規(guī)范,工作在主機模式下,可以和低速或全速設備進行通信,可以很方便地和MCU、DSP等處理器或者和ISA、PCMCIA等總線建立連接。
  SL811HS主機模式下的功能框圖如圖1所示。在片選信號nCS、讀閘門信號nRD、寫閘門信號nWR等控制信號、地址線A0和數據總線D0~D7的作用下,它可以映射到處理器的I/O空間或存儲器空間。SL811HS片內有256字節(jié)的RAM,其中低16字節(jié)是控制寄存器和狀態(tài)寄存器,剩下的240字節(jié)用作數據緩存。地址線A0的使用比較特殊,訪問芯片時,首先將A0置0,通過D0~D7寫入目標RAM地址,然后在下一次讀寫周期中,將A0置1,這樣D0~D7上就變成訪問的數據。在每次讀寫操作后,RAM地址指針會自動指向下一個數據單元。

 

 

  SL811HS片內寄存器分為二部分,第一部分負責USB的傳輸,包括USB主機控制寄存器(USB Host Control Register)、USB主機基址寄存器(USB Host Base Address)、USB主機長度寄存器(USB Host Base Length)、USB主機令牌、端點寄存器(USB Host PID, Device Endpoint)、USB狀態(tài)寄存器(USB Status)、USB主機設備地址寄存器(USB Host Device Address)、USB傳輸計數器(USB Transfer Count);第二部分負責SL811HS的工作,包括控制寄存器1(Control Register 1)、中斷使能寄存器(Interrupt Enable Register)、中斷狀態(tài)寄存器(Interrupt Status Register)、SOF低位計數器(SOF Counter LOW)、硬件版本寄存器(HW Revision Register),SOF高位計數器(SOF Counter HIGH)、控制寄存器2(Control Register 2)。
  處理器通過訪問上述寄存器來進行數據傳輸控制和獲取傳輸狀態(tài)。另外,SL811HS提供了USB-A和USB-B二組USB主機控制寄存器,因此可以采用乒乓方式進行USB傳輸。而數據的CRC校驗則由芯片自動完成。
2 硬件設計
  本設計中采用的DSP是TI公司的TMS320VC5402,它有64KB的I/O空間,映射SL811HS非常簡單。TMS320VC5402與SL811HS的硬件連接圖如圖2所示。

  硬件設計很簡單,SL811HS的M/S接高電平,工作在主機模式下;DSP的IOSTRB#作為片選nCS輸入;讀寫信號的邏輯表達式分別為:nRD=IOSTRB#+(!R/W#),nWR= IOSTRB#+R/W#;二者的地址線A0和數據線D0~D7對應連接;DSP的輸出XF提供硬件復位脈沖。此外,由于SL811HS的中斷請求INTR高電平有效,而DSP的中斷是下降沿觸發(fā),所以INTR要經過非運算后才能接到INT0#上。經過如上的映射,DSP向奇地址I/O空間寫數據對選擇SL811HS的目標RAM,訪問偶地址I/O空間時則傳輸相應的數據。
3  軟件設計
3.1 SL811HS存儲器讀寫軟件

  SL811HS片內RAM的訪問可以用2個函數實現:Wr811hsBuf(u16 address,u16*buffer、u16 length)和Rd811-hsBuf(u16 address,u16*buffer,u16 length),其中的參數分別為SL811HS的RAM地址、DSP數據單元指針和訪問字節(jié)數,以下給出它們的源代碼。
  void Wr811hsBuf(u16 address,u16*buffer,u16 length)
  { port0000=address;//選擇SL811HS要寫
            //的第1個RAM單元
   While(length--)//將DSP緩沖區(qū)的數據
            //逐一寫入SL811HS
     port0001=*buffer++;//每寫1次,SL811HS
              //自動指向下一個RAM單元
  }
  void Rd811hsBuf(u16 address,u16*buffer,u16 length)
  { port0000=address;//選擇SL811HS要讀的
            //第1個RAM單元
   While(length--)  //將SL811HS的數據
            //逐一讀出放到DSP緩沖區(qū)
      *buffer++=port0001;//每讀1次,SL811HS
  //自動指向下一個RAM單元
  }
3.2 USB主機的Firmware設計
  USB的設計最困難的就是Firmware(固件)設計,固件編程要遵循復雜的USB規(guī)范,所以比硬件設計工作量大得多。
  主機端的固件編程可以基于WINCE、VxWorks、Linux等嵌入式操作系統(tǒng)。Cypress公司網站上有SL811HS在這些RTOS平臺上的驅動源碼。但如果系統(tǒng)資源較少,功能比較簡單,也可以不用RTOS,而直接自己編寫SL811HS的USB底層驅動。筆者就是采用了這一方法,故工作量并不大。
  USB事務處理一般由3個階段組成:令牌階段、數據階段和握手階段。令牌階段定義了事務處理的類型,包括SETUP、IN和OUT;數據階段負責運送和傳輸相關的數據,Data0和Data1二種數據包交替使用,以支持雙方的傳輸同步;握手階段由收方向發(fā)方提供反饋,告知數據是否正確接收。
  在嵌入式USB設計中,固件的核心部分是USB傳輸函數usbXfer。usbXfer管理著USB的事務處理,其入口參數有:設備地址UsbAddr、端點地址Endpoint、令牌包類型PID、端點最大負荷Payload、傳輸數據總長度Length、DSP數據緩存區(qū)指針*Buffer。USB傳輸函數程序流程圖如圖3所示。


  USB主機檢測到設備連接好后要對其進行配置,稱為設備的枚舉,該部分固件的核心是設備請求函數VendorCmd。VendorCmd構建在usbXfer函數之上,通過調用usbXfer進行若干次的控制傳輸來實現??刂苽鬏斢?個階段組成:建立階段、數據階段和狀態(tài)階段。建立階段,主機進行SETUP事務處理,向目標設備發(fā)送標準設備請求;數據階段,由若干個IN事務處理或OUT事務處理組成;狀態(tài)階段,主機則完成與數據階段相反的事務處理,結束本次控制傳輸。
  設備的枚舉過程主要包括以下步驟:(1)主機請求設備控制端點0,以確定缺省管道支持的最大數據量。(2)主機給USB設備分配1個惟一的地址。(3)主機從描述符中讀取配置信息并加以執(zhí)行。(4)主機驗證設備所需要的資源是否可以獲得。(5)主機給USB設備發(fā)送1個配置值,指出如何使用該設備。
  枚舉成功后,主機和設備就可根據設備接口類型,采用相應的接口協(xié)議進行數據控制和傳輸。USB設備類型主要劃分為:音頻設備類、顯示設備類、人機接口類、海量存儲器類等。特定的設備類又劃分為若干個子類,它們又有可能采用不同的接口協(xié)議傳輸指令和數據。以U盤為例,類代碼08h(海量存儲器類),子類代碼06h(SCSI指令集子類),傳輸協(xié)議50h(Bulk-Only傳輸協(xié)議)。按照這些標準,則U盤的操作過程可分為指令、數據和狀態(tài)3個階段,也就是主機首先向設備Bulk-Out端點寫包含SCSI的指令塊(CBW),然后從Bulk-In讀數據或向Bulk-Out端點寫數據,最后從Bulk-In端點讀取傳輸狀態(tài)(CSW)。
4  結束語
  DSP加上嵌入式USB主機接口后,一方面可以和設備之間傳輸數據,另一方面又可對數據進行壓縮和變換等算法處理。這對于音視頻信號等數據采集系統(tǒng),是一個很好的接口方案。故該系統(tǒng)非常適用于數據采集并進行信號處理的場合。
參考文獻
1   Anderson D.USB系統(tǒng)體系.北京:中國電力出版社,2000
2   Universal Serial Bus Specification Revision 1.1.www.usb.
     org,1998
3   Cypress Semiconductor Corporation.SL811HS Datasheet.2002
 

此內容為AET網站原創(chuàng),未經授權禁止轉載。