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