摘 要: 以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