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

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

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

 

 

  SL811HS片內(nèi)寄存器分為二部分,,第一部分負責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傳輸計數(shù)器(USB Transfer Count),;第二部分負責SL811HS的工作,,包括控制寄存器1(Control Register 1)、中斷使能寄存器(Interrupt Enable Register),、中斷狀態(tài)寄存器(Interrupt Status Register),、SOF低位計數(shù)器(SOF Counter LOW)、硬件版本寄存器(HW Revision Register),,SOF高位計數(shù)器(SOF Counter HIGH),、控制寄存器2(Control Register 2),。
  處理器通過訪問上述寄存器來進行數(shù)據(jù)傳輸控制和獲取傳輸狀態(tài)。另外,,SL811HS提供了USB-A和USB-B二組USB主機控制寄存器,,因此可以采用乒乓方式進行USB傳輸。而數(shù)據(jù)的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和數(shù)據(jù)線D0~D7對應連接;DSP的輸出XF提供硬件復位脈沖,。此外,,由于SL811HS的中斷請求INTR高電平有效,而DSP的中斷是下降沿觸發(fā),,所以INTR要經(jīng)過非運算后才能接到INT0#上,。經(jīng)過如上的映射,DSP向奇地址I/O空間寫數(shù)據(jù)對選擇SL811HS的目標RAM,,訪問偶地址I/O空間時則傳輸相應的數(shù)據(jù),。
3  軟件設計
3.1 SL811HS存儲器讀寫軟件

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


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

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。