1 引言
在現(xiàn)代社會,嵌入式系統(tǒng)逐漸深入到人們生活的方方面面,各類嵌入式系統(tǒng)產(chǎn)品之間往往通過某種接口進(jìn)行交互或數(shù)據(jù)傳遞。而現(xiàn)在,USB已經(jīng)成為嵌入式數(shù)據(jù)交換的最主要的方式,可是各種USB接口的設(shè)備都是基于PC機(jī)系統(tǒng)的,所以,基于嵌入式系統(tǒng)的USB接口的研究具有實(shí)用的價(jià)值和意義,特別是起Master作用的HOST端接口的研究。
解決這一問題的根本辦法就是在需要使用USB設(shè)備的嵌入式系統(tǒng)中擴(kuò)展USB Host功能模塊,使之具有與USB設(shè)備進(jìn)行數(shù)據(jù)傳輸的能力。
USB協(xié)議按功能分為2部分,USB HOST(USB主協(xié)議)和USB SLAVE(USB從協(xié)議)分別應(yīng)用于USB HOST CONTROLLER(USB主控制器)和USB DEVICE(USB設(shè)備)。一般,USB HOST要比USB SLAVE復(fù)雜,對于廣大的非PC用戶來說,尤其是嵌入式系統(tǒng)用戶來說,由于USB協(xié)議的不對稱性,使得實(shí)現(xiàn)USB HOST比USB SLAVE要困難地多,Philips公司的ISP1161A1芯片很好地解決了這種問題,他封裝了復(fù)雜的USB協(xié)議,使得在嵌入式系統(tǒng)中實(shí)現(xiàn)USB HOST和USB SLAVE變得簡單方便。
2 USB HOST技術(shù)簡介
USB的通信可以用圖1表示,圖1中,左半部分為USB主機(jī)端,可以看出,USB主機(jī)端由2部分構(gòu)成,即軟件體和硬件體,實(shí)際上是3個(gè)軟件組件組成了USB HOST解決方案,即USB客戶驅(qū)動(dòng)程序,USB驅(qū)動(dòng)程序和USB主機(jī)控制器驅(qū)動(dòng)程序,應(yīng)用程序的事務(wù)處理是由USB客戶驅(qū)動(dòng)程序(設(shè)備驅(qū)動(dòng)程序)啟動(dòng)的,客戶驅(qū)動(dòng)程序把USB設(shè)備當(dāng)做一個(gè)可以被訪問的端點(diǎn)集合,他可以被控制并與他的功能單元進(jìn)行通信,USB系統(tǒng)軟件包括USB驅(qū)動(dòng)程序和USB主控制器驅(qū)動(dòng)程序,USB驅(qū)動(dòng)程序負(fù)責(zé)配置管理、用戶管理、總線管理和數(shù)據(jù)傳輸,USB主控制器驅(qū)動(dòng)程序負(fù)責(zé)調(diào)度管理,隊(duì)列管理和控制器管理,以及數(shù)據(jù)的位編碼、封包、循環(huán)校驗(yàn)、發(fā)送、錯(cuò)誤處理等。
如圖2所示,USB HOST的軟件結(jié)構(gòu)分為3大部分,即USB總線驅(qū)動(dòng)(USBD),USB HOST控制器驅(qū)動(dòng)(HCD)、客戶軟件、其中客戶軟件處理和設(shè)備有關(guān)的信息,USBD處理和硬件無關(guān)的協(xié)議,而HCD則處理與硬件相關(guān)的協(xié)議,USBD和HCD都包含了一系列管理各種狀態(tài)的寄存器。
3 SP1161體系結(jié)構(gòu)
要實(shí)現(xiàn)USB協(xié)議,必須要通過一系列寄存器來完成,這些寄存器要能實(shí)現(xiàn)USB軟件結(jié)構(gòu)中的USBD和HCD,即要完成USB協(xié)議狀態(tài)的控制,還要有一定的緩沖區(qū)來存放進(jìn)出的數(shù)據(jù),ISP1161專門針對USB協(xié)議設(shè)計(jì)的特殊硬件結(jié)構(gòu)可方便地實(shí)現(xiàn)USB HOST和USB SLAVE。ISP1161的硬件結(jié)構(gòu)主要是3類不同的寄存器,用戶通過操作這3種寄存器來達(dá)到實(shí)現(xiàn)USB傳輸?shù)哪康?這3類寄存器是:
(1)HC control and status registers:USB主控制器控制和狀態(tài)寄存器,主要用于傳輸過程中控制命令的存放和狀態(tài)的讀取,可讀可寫的寄存器有2個(gè)地址,只讀或只寫的寄存器只有1個(gè)地址。
(2)Isochronous Transfer List (ITL):同步傳輸列表緩沖區(qū)。
(3)Acknowledged Transfer List(ATL):接收傳輸列表緩沖區(qū)。
根據(jù)USB協(xié)議,數(shù)據(jù)傳輸分為4種模式,Control(控制),Bulk(整批),Interrupt(中斷)和Isochronous(同步)。其中ITL是為了實(shí)現(xiàn)同步傳輸,ATL則實(shí)現(xiàn)其他3種模式的傳輸。
4 ISP1161x主控制器編程實(shí)現(xiàn)
設(shè)計(jì)ISP1161x主控制驅(qū)動(dòng)程序主要涉及以下2個(gè)重要內(nèi)容,下面詳細(xì)介紹:
4.1 讀/寫ATL和ITL緩沖區(qū)