《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 基于SL811HS的嵌入式USB主機的實現(xiàn)

基于SL811HS的嵌入式USB主機的實現(xiàn)

2008-05-29
作者:段海龍,程 健

  摘 要: 以S3C44BOX作為主控制器、SL811HS作為接口芯片構(gòu)建USB主機的硬件設(shè)計方案及軟件實現(xiàn)。該系統(tǒng)把USB主機引入嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)中,拓寬了USB的應(yīng)用領(lǐng)域。
  關(guān)鍵詞: SL811HS USB主機 嵌入式系統(tǒng)


  隨著USB(Univeral Serial Bus)應(yīng)用領(lǐng)域的逐步擴大,人們對于USB的期望也越來越高。尤其是在移動數(shù)據(jù)領(lǐng)域,希望能通過PDA等移動設(shè)備直接與USB外設(shè)" title="外設(shè)">外設(shè)通信,使USB可以應(yīng)用在沒有PC的領(lǐng)域。但任何一次USB的數(shù)據(jù)傳輸都必須由主機發(fā)起和控制,所有USB設(shè)備只能與主機建立連接,任何兩個外設(shè)之間或兩個主機之間無法直接通信。由于當前大多數(shù)主機使用PC,所以所使用的USB移動設(shè)備都是只能在PC上使用的USB設(shè)備,如USB移動硬盤、USB接口的數(shù)碼相機等,只能通過PC進行文件和數(shù)據(jù)交換。因此開發(fā)嵌入式的USB主機系統(tǒng)十分必要。
1 硬件電路設(shè)計
  本文采用三星公司ARM7系列的S3C44BOX作為主處理器,Cypress公司生產(chǎn)的SL811HS作為USB主控制器。
1.1 S3C44BOX芯片介紹
  S3C44BOX微處理器是三星公司專為手持設(shè)備和一般應(yīng)用提供的高性價比和高性能的微控制器解決方案。它使用ARM7TDMI內(nèi)核,最高工作頻率為66MHz。S3C44BOX通過在ARM7TDMI基礎(chǔ)上擴展完整的通用外圍器件,使系統(tǒng)費用降至最低。集成的片上" title="片上">片上功能主要有:(1)擴展內(nèi)存控制器(FP/FDO/SDRAM控制,片選邏輯);(2)帶8KB緩存的2.5V靜態(tài)ARM7TDMI CPU核;(3)帶有1個專用DMA通道的LCD控制器;(4)2個通用DMA通道,1個帶外部請求管腳的DMA通道;(5)1個多主機I2C總線控制器;(6)5個PWM定時器及1個內(nèi)部定時器;(7)看門狗定時器;(8)71個通用I/O口,8個外部中斷源;(9)能量控制模式:正常、低、休眠和停止模式;(10)8個10位ADC;(11)帶PLL的片上時鐘發(fā)生器。
1.2 SL811HS芯片介紹
  SL811HS是一款嵌入式USB主機/設(shè)備控制器" title="設(shè)備控制器">設(shè)備控制器,它既可做主機控制器,又可做設(shè)備控制器,本系統(tǒng)只用做USB主機控制器。SL811HS的功能模塊如圖1所示。


  SL811HS的主要特點:(1)可作為USB主機或設(shè)備的接口控制器;(2)支持USB協(xié)議1.1,提供全速和低速兩種總線速度方式;(3)片上集成了SIE、單端口根Hub、USB收發(fā)器和256B的SRAM;(4)3.3V工作電壓,接口兼容5V電平;(5)硬件自動產(chǎn)生幀起始包SOF和CRC5/16校驗。
1.3 硬件電路
  處理器與SL811HS的連線如圖2所示。8位數(shù)據(jù)總線、中斷請求引腳接S3C44BOX的數(shù)據(jù)總線D0~D7和外部中斷2,片選連到處理器的nGCS1,即Bank1,A0是地址指針信號。M/S是工作模式選擇,M/S=1是Slave模式,M/S=0是Master模式。此處M/S接地,工作在主機(Host)模式。D+和D-是與USB設(shè)備相連的數(shù)據(jù)信號。由于USB接在S3C44B0X的Bank1上,因此SL811HS的RAM基址是0x02000000。


2 軟件設(shè)計
  處理器對SL811HS的狀態(tài)進行檢測和控制等操作都是基于寄存器實現(xiàn)的,因此從硬件的角度看,系統(tǒng)編程就是對其一系列寄存器和緩存區(qū)的讀/寫訪問。
2.1 SL811HS的相關(guān)寄存器介紹
  SL811HS內(nèi)帶256B的RAM,其片內(nèi)尋址范圍為0x00~0xFF,CPU可以通過接口進行訪問。其中低地址的16個字節(jié)是SL811HS定義的寄存器,其余的240字節(jié)則是存儲緩存區(qū)。寄存器分布如表1所示。


  USB-A Host與USB-B Host是兩套完全并行的寄存器,即其功能和結(jié)構(gòu)完全相同。例如,EP0XferLen的功能與EP1XferLen的功能和使用方法完全一樣。之所以這樣安排是為了實現(xiàn)“乒乓”的數(shù)據(jù)處理機制。這種機制下,兩套寄存器完全可以交替操作,即其中一套正在被配置時,另一套可以進行數(shù)據(jù)傳輸,從而提高系統(tǒng)處理數(shù)據(jù)的效率。
2.2 讀寫程序的實現(xiàn)
  SL811HS的外接總線地址與數(shù)據(jù)信號是復(fù)用的,通過A0信號來區(qū)分地址和信號。由上面的硬件電路設(shè)計可知,A0接ARM的A0地址線,其基地址為0x02000000。另外SL811HS采用自動地址增加模式。下面給出讀寫緩存區(qū)的程序。
  #define USB_SL811ADDR (*(volatile unsigned char*)0x02000000)
  #define USB_SL811DATA (*(volatile unsigned char*)0x02000001)
  void SL811Write(U8 address,U8 value)
  {
  USB_SL811ADDR=address;
  USB_SL811DATA=value;
  }
  U8 SL811Read(U8 address)
  {
  USB_SL811ADDR=address;
  return USB_SL811DATA;
  }
  void SL811BufRead(U8 addr,U8*s,U8 c)
  {
  U8 i;i=c;
  USB_SL811ADDR=addr;
  while (i--)
  *s++=USB_SL811DATA;
  }
  void SL811BufWrite(U8 addr,U8*s,U8 c)
  {
  USB_SL811ADDR=addr;
  while (c--)
  USB_SL811DATA=*s++;
  }
  本文給出了在S3C44BOX處理器上外擴USBHost的具體設(shè)計,并詳細介紹了SL811HS的功能及其工作原理。在此基礎(chǔ)上,可以開發(fā)讀取U盤、攝像頭等USB設(shè)備的嵌入式" title="的嵌入式">的嵌入式系統(tǒng)。此設(shè)計將會廣泛地應(yīng)用到數(shù)據(jù)采集系統(tǒng)、工控、遠程監(jiān)控等領(lǐng)域。
參考文獻
1 馬偉.計算機USB系統(tǒng)原理及其主/從機設(shè)計.北京:北京航空航天大學(xué)出版社,2004
2 吳明暉.基于ARM的嵌入式系統(tǒng)開發(fā)與應(yīng)用.北京:人民郵電出版社,2004
3 SL811 Embeded USB Host/Slave Controller Data Sheet.Cypress Semiconductor Corporation,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。