基于Linux下USB主機(jī)接口設(shè)計(jì)
2.3 USB主機(jī)端口設(shè)計(jì)
AT91SAM7X256的USB主機(jī)端口原理圖,如圖3所示。SL811HS/T選用48引腳的TQFP封裝形式,SL811HS/T既能用作Host模式又能用作Slave模式。將SL811HS/T的M/S引腳接地,即設(shè)為低電平信號(hào)(M/S=0),選擇作為主機(jī)端口。
SL811HS/T的D0~D7端口為雙向數(shù)據(jù)I/O端口,與控制器的PAl0~PAl7端口相連,實(shí)現(xiàn)數(shù)據(jù)通信。SL811HS/T的nRD引腳與AT91SAM7X256的PA9相連,nWR引腳與AT9lSAM7X256的PA8相連,SL811HS/T的nCS引腳與AT91SAM7X256的PA7相連,AO引腳與AT91SAM7X256的PA6相連,控制SL811HS/T的讀寫狀態(tài),如圖4所示。
訪問(wèn)存儲(chǔ)器和控制寄存器的空間時(shí),先設(shè)A0=0后寫地址,接下來(lái)設(shè)A0=1,再進(jìn)行寄存器/存儲(chǔ)器讀/寫周期。當(dāng)nWR或nCS處于無(wú)效時(shí),SL811HS寫或讀操作終止。對(duì)于連接到SL81lHS的設(shè)備,在write nWR信號(hào)之前取消片選nCS,數(shù)據(jù)將一直保持并與指定的值相同。SL811HS/T的nRST引腳與AT91SAM7X256的PAl8相連,實(shí)現(xiàn)軟件低電平復(fù)位功能。SL811HS/T的引腳7、8與USB接口的DATA+,DATA-相連實(shí)現(xiàn)數(shù)據(jù)通信。S-L811HS/T的Clk/X1引腳和X2引腳與外接12 MHz晶振相連。
3 系統(tǒng)軟件實(shí)現(xiàn)
USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)包括主機(jī)端設(shè)備驅(qū)動(dòng)程序、主機(jī)控制器驅(qū)動(dòng)程序和設(shè)備端驅(qū)動(dòng)程序3部分組成。主機(jī)端設(shè)備驅(qū)動(dòng)程序就是設(shè)備驅(qū)動(dòng)程序,它是主機(jī)環(huán)境中為用戶應(yīng)用程序提供一個(gè)訪問(wèn)USB外設(shè)的接口。Linux為這部分驅(qū)動(dòng)程序提供編程接口,設(shè)計(jì)者只要按照需求編寫驅(qū)動(dòng)程序框架,通過(guò)調(diào)用操作系統(tǒng)提供的APl接口函數(shù)可以完成對(duì)USB外設(shè)的特定訪問(wèn)。
3.1 USB設(shè)備驅(qū)動(dòng)程序框架
圖5所示Linux中USB驅(qū)動(dòng)的體系結(jié)構(gòu)。Linux USB主機(jī)驅(qū)動(dòng)由3部分組成:USB主機(jī)控制器驅(qū)動(dòng),USB驅(qū)動(dòng)和不同的USB設(shè)備類驅(qū)動(dòng)。USB驅(qū)動(dòng)程序首先要向Linux內(nèi)核進(jìn)行注冊(cè)自己,并告之系統(tǒng)該驅(qū)動(dòng)程序所支持的設(shè)備類型及其所支持的操作。這些信息通過(guò)usb_driver結(jié)構(gòu)傳遞。
評(píng)論