基于A(yíng)VR單片機的USB 0TG主從機系統設計
(1)系統硬件初始化,包括ATmega32和ISP1362的初始化。AVR微處理器是Atmel公司的8位嵌入式RISC處理器,它具有功耗低、速度快、輸出高、開(kāi)發(fā)工具開(kāi)放、性?xún)r(jià)比高等優(yōu)點(diǎn),它的程序存儲器和數據存儲器是可以獨立訪(fǎng)問(wèn)的哈佛結構,因此代碼執行效率非常高。ATmega系列單片機的內部模塊還很豐富,可用的資源也很多,本文對ATmega32的初始化,就是要對它的I/O口、定時(shí)器、時(shí)鐘、看門(mén)狗等進(jìn)行相應的設置,使之開(kāi)始工作。而ISP1362的初始化,就是當ISP1362上電后,主機控制器驅動(dòng)程序(HCD)必須通過(guò)一系列的硬件初始化步驟來(lái)配置主機控制器,從而進(jìn)入可操作狀態(tài)。首先檢測主機控制器是否存在,此步由MCU(單片機)實(shí)現,本文通過(guò)MCL響HcScratch寄存器內寫(xiě)入某個(gè)值,再從該寄存器中讀取,將讀出值與寫(xiě)入數值進(jìn)行比較,若相等,則可說(shuō)明主機控制器存在;反之則出錯,無(wú)主機控制器存在。
(2)構建PTD描述符。PTD(Phi l ips Transfer Descriptor)為ISP1362主機控制器與外圍設備的通信提供了一個(gè)傳輸渠道,要在主機與外設之間進(jìn)行通訊,首先需要構建一個(gè)PTD。PTD具有3種傳輸類(lèi)型:控制和批量傳輸(非周期傳輸)PTD、中斷傳輸PTD和同步傳輸PTD。
(3)主機分配地址給設備,獲取設備描述符和設備的功能信息。主機通過(guò)不斷地向外設發(fā)送設備請求來(lái)獲取設備、端點(diǎn)的功能信息。獲取USB設備描述符的過(guò)程分為三個(gè)步驟:a.主機通過(guò)設備的默認端點(diǎn)獲取設備描述符,為設備分配一個(gè)惟一的地址;b.主機讀取配置描述符信息、接口描述符信息和端點(diǎn)描述符信息;c.根據設備的相關(guān)信息調用相應的事務(wù)處理程序。
(4)設備枚舉成功之后,主機就可以根據已編寫(xiě)的進(jìn)程與外設進(jìn)行USB通信,等待、查詢(xún)數據的發(fā)送和接收。
(5)數據發(fā)送或接收完畢之后,根據QueryBus函數查詢(xún)總線(xiàn)的活動(dòng)情況,判斷設備是否需要掛起。
2.3 設備驅動(dòng)程序
要實(shí)現主機對從機的讀寫(xiě),USB主機必須具有相應的驅動(dòng),對各種讀寫(xiě)指令進(jìn)行封裝、解釋和執行。開(kāi)發(fā)驅動(dòng)有很多種方法,本文采用直接在USB主機接口驅動(dòng)上層封裝一個(gè)USB傳輸API 函數-USBXfer,應用于實(shí)現各種USB傳輸。
3 結束語(yǔ)
本文設計的USB 0TG主從機系統性能穩定,數據傳輸效率高。測試表明,此設計能夠正確地實(shí)現USB 0TG主從機間的數據交換,性能可以滿(mǎn)足設備間的數據傳輸要求,同時(shí)又能很好地控制成本,具有一定的實(shí)用價(jià)值。
評論