嵌入式系統(tǒng)實踐實驗報告-USB接口_第1頁
嵌入式系統(tǒng)實踐實驗報告-USB接口_第2頁
嵌入式系統(tǒng)實踐實驗報告-USB接口_第3頁
嵌入式系統(tǒng)實踐實驗報告-USB接口_第4頁
嵌入式系統(tǒng)實踐實驗報告-USB接口_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第?次實驗實驗名稱 學號姓名第1頁共17頁計算機科學技術系上機實踐報告課程名稱:嵌入式系統(tǒng)實踐年級:上機實踐成績:指導教師:姓名:創(chuàng)新實踐成績:上機實踐名稱:USB接口學號:上機實踐日期:上機實踐編號:No.10組號上機實踐時間:實驗目的1、了解USB接口基本原理;2、掌握通過USB接口與PC通訊的編程技術。實驗設備硬件:EmbestEduKit-III實驗平臺,EmbestARM標準/增強型仿真器套件,PC機。軟件:EmbestIDEProARM集成開發(fā)環(huán)境,Windows98/2000/NT/XP。實驗內容編寫USB通信程序,基于已有的USB驅動程序接口,完成與PC端的USB測試程序之間數(shù)據(jù)接收與發(fā)送實驗原理1.USB基礎?定義通用串行總線協(xié)議USB(UniversalSerialBus)是由Intel、Compaq、Microsoft等公司聯(lián)合提出的一種新的串行總線標準,主要用于PC機與外圍設備的互聯(lián)。1994年11月發(fā)布第一個草案,1996年2月發(fā)布第一個規(guī)范版本1.0,2000年4月發(fā)布高速模式版本2.0,對應的設備傳輸速度也從1.5Mb/s的低速和12Mb/s的全速提高到如今的480Mb/s的高速。其主要特點是:支持即插即用。允許外設在主機和其它外設工作時進行連接配置使用及移除。傳輸速度快。USB支持三種設備傳輸速率:低速設備1.5Mb/s、中速設備12Mb/s和高速設備480Mb/s。連接方便。USB可以通過串行連接或者使用集線器Hub連接127個USB設備,從而以一個串行通道取代PC上其他I/O端口如串行口、并行口等,使PC與外設之間的連接更容易。獨立供電。USB接口提供了內置電源。低成本。USB使用一個4針插頭作為標準插頭,通過這個標準插頭,采用菊花鏈形式可以把多達127個的USB外設連接起來,所有的外設通過協(xié)議來共享USB的帶寬。?組成USB規(guī)范中將USB分為五個部分:控制器、控制器驅動程序、USB芯片驅動程序、USB設備以及針對不同USB設備的客戶驅動程序??刂破鳎℉ostController),主要負責執(zhí)行由控制器驅動程序發(fā)出的命令,如位于PC主板的USB控制芯片。控制器驅動程序(HostControllerDriver),在控制器與USB設備之間建立通信信道,一般由操作系統(tǒng)或控制器廠商提供。USB芯片驅動程序(USBDriver),提供對USB芯片的支持,設備上的固件(Firmware)。USB設備(USBDevice),包括與PC相連的USB外圍設備。設備驅動程序(ClientDriverSoftware),驅動USB設備的程序,一般由USB設備制造商提供。?傳輸方式針對設備對系統(tǒng)資源需求的不同,在USB規(guī)范中規(guī)定了四種不同的數(shù)據(jù)傳輸方式:同步傳輸(Isochronous),該方式用來聯(lián)接需要連續(xù)傳輸數(shù)據(jù),且對數(shù)據(jù)的正確性要求不高而對時間極為敏感的外部設備,如麥克風、嗽叭以及電話等。同步傳輸方式以固定的傳輸速率,連續(xù)不斷地在主機與USB設備之間傳輸數(shù)據(jù),在傳送數(shù)據(jù)發(fā)生錯誤時,USB并不處理這些錯誤,而是繼續(xù)傳送新的數(shù)據(jù)。同步傳輸方式的發(fā)送方和接收方都必須保證傳輸速率的匹配,不然會造成數(shù)據(jù)的丟失。中斷傳輸(Interrupt),該方式用來傳送數(shù)據(jù)量較小,但需要及時處理,以達到實時效果的設備,此方式主要用在偶然需要少量數(shù)據(jù)通信,但服務時間受限制的鍵盤、鼠標以及操縱桿等設備上??刂苽鬏敚–ontrol),該方式用來處理主機到USB設備的數(shù)據(jù)傳輸,包括設備控制指令、設備狀態(tài)查詢及確認命令,當USB設備收到這些數(shù)據(jù)和命令后,將依據(jù)先進先出的原則處理到達的數(shù)據(jù)。主要用于主機把命令傳給設備、及設備把狀態(tài)返回給主機。任何一個USB設備都必須支持一個與控制類型相對應的端點0。批量傳輸(Bulk),該方式不能保證傳輸?shù)乃俾?,但可保證數(shù)據(jù)的可靠性,當出現(xiàn)錯誤時,會要求發(fā)送方重發(fā)。通常打印機、掃描儀和數(shù)字相機以這種方式與主機聯(lián)接。?關鍵定義USB主機(Host)USB主機控制總線上所有的USB設備和所有集線器的數(shù)據(jù)通信過程,一個USB系統(tǒng)中只有一個USB主機,USB主機檢測USB設備的連接和斷開、管理主機和設備之間的標準控制管道、管理主機和設備之間的數(shù)據(jù)流、收集設備的狀態(tài)和統(tǒng)計總線的活動、控制和管理主機控制器與設備之間的電氣接口,每一毫秒產生一幀數(shù)據(jù),同時對總線上的錯誤進行管理和恢復。USB設備(Device)通過總線與USB主機相連的稱為USB設備。USB設備接收USB總線上的所有數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的地址域來判斷是否接收;接收后通過響應USB主機的數(shù)據(jù)包與USB主機進行數(shù)據(jù)傳輸。端點(Endpoint)端點是位于USB設備中與USB主機進行通信的基本單元。每個設備允許有多個端點,主機只能通過端點與設備進行通訊,各個端點由設備地址和端點號確定在USB系統(tǒng)中唯一的地址。每個端點都包含一些屬性:傳輸方式、總線訪問頻率、帶寬、端點號、數(shù)據(jù)包的最大容量等。除控制端點0外的其他端點必須在設備配置后才能生效,控制端點0通常用于設備初始化參數(shù)。USB芯片中,每個端點實際上就是一個一定大小的數(shù)據(jù)緩沖區(qū)。管道(Pipe)管道是USB設備和USB主機之間數(shù)據(jù)通信的邏輯通道,一個USB管道對應一個設備端點,各端點通過自己的管道與主機通信。所有設備都支持對應端點0的控制管道,通過控制管道主機可以獲取USB設備的信息,包括:設備類型、電源管理、配置、端點描述等。2.USB設備開發(fā)USB設備開發(fā)包括硬件電路設計和軟件設計二部分內容,其中軟件部分又包括USB芯片驅動程序和應用程序二部分。USB設備在硬件上通過USB芯片實現(xiàn),USB芯片負責:管理和實現(xiàn)USB物理層差分信號;通過配置和管理寄存器初始化設備。提供連接的端點;電源管理;通過寄存器管理端點;USB芯片驅動程序基于以上硬件資源實現(xiàn)USB的功能。USB芯片提供多個標準的端點,每個端點都支持單一的總線傳輸方式。端點0支持控制傳輸,其他端點支持同步傳輸、批量傳輸或中斷傳輸中的任意一種。管理和使用這些端點,實際上就是通過操作相應的控制寄存器、狀態(tài)寄存器、中斷寄存器和數(shù)據(jù)寄存器來實現(xiàn)。其中,控制寄存器用于設置端點的工作模式、啟用端點的功能等;狀態(tài)寄存器用于查詢端點的當前狀態(tài);中斷寄存器則用于設置端點的中斷觸發(fā)和響應功能;數(shù)據(jù)寄存器則是設備與主機交換數(shù)據(jù)用的緩沖區(qū)。?電路設計原理EmbestEduKit-IIIUSB接口模塊采用美國國家半導體公司的USBN9603USB控制器,該控制器是全速USB節(jié)點器件,完全兼容USB1.0,USB1.1通信規(guī)范。USBN9603/4-28M芯片引腳圖如下:USBN9603與MCU的接口模式分為兩種:?8位并行總線模式(ParallelInterface),使用并行總線方式時又可選擇復用(Multiplexed)或非復用(Non-Multiplexed)模式,其中地址/數(shù)據(jù)線的復用方式電路設計稍顯復雜。?微總線模式(MICROWIREinterface)。以上模式的選擇由管腳MODE0,MODE1決定。在使用復用的8位并行總線模式下,USBN9603支持與MCU之間的增強型DMA方式傳輸,使用DMA方式傳輸使MCU和USBN9603之間交換數(shù)據(jù)的速度成倍提高,最終可以顯著提高PC與USB的通訊速度。USBN9603在EmbestEduKit-III評估板與CPU連接圖如下:EduKit-III的電路設計中采用的是非復用的8位并行總線模式,該模式中沒有使用DMA方式,因此DACK接高電平。CPU通過譯碼器生成的片選信號CS1對USB控制器進行選通,USBN9603通過EXINT1對CPU發(fā)出中斷請求。設備驅動程序設計USB讀寫EmbestEduKit-III的USB控制器USBN9603用戶寄存器有兩個,分別為只寫的內部地址寄存器,與可讀寫的數(shù)據(jù)寄存器,內部地址寄存器的地址為0x02000002,數(shù)據(jù)寄存器地址為0x02000000。對USB控制器進行讀操作(包括讀USB內部寄存器及數(shù)據(jù))時,第一步是設置USB6bits寬的內部地址寄存器,指明將要從USB某個內部地址讀一個字節(jié),第二步是從數(shù)據(jù)寄存器讀出8bits寬的數(shù)據(jù)。對USB進行寫操作類似讀操作,第一步同樣是設置USB的內部地址寄存器,指明將要寫一個字節(jié)數(shù)據(jù)到USB內部某個地址中去。USB中斷EmbestEduKit-III的USB控制器中斷請求引腳連接S3C44B0X外部中斷引腳EXINT1,對應的中斷向量為1,初始化USB中斷的步驟是:使EINT1中斷使能。安裝USB中斷服程序入口到中斷向量中去。初始化IO端口G組控制器PCONG,PUPG指明EXINT1是作為中斷輸入引腳使用。設置外部中斷寄存器EXTINT,指明觸發(fā)中斷方式。初始化USB初始化USB需要使用USB讀寫函數(shù)對USB控制器內部的控制寄存器進行設置。需要設置的USB控制寄存器如下:首先,通過設置主控制寄存器MCNTRL軟件復位位(SRST),復位USB控制器。設置主控制寄存器MCNTRL,電壓調整位(VGE),及中斷輸出(INTOC)位,以禁止中斷輸出。寫時鐘寄存器CCONF,設置USB控制器工作頻率。初始化功能地址寄存器FAR(FunctionAddressRegister),及EPC0寄存器(Endpoint0ControlRegister),端點號0為雙向端點,作控制使用。設置中斷掩碼寄存器,有主掩碼寄存器(MAMSK),無應答事件寄存器(NAKMSK),發(fā)送事件寄存器(TXMSK),接收事件寄存器(RXMSK),Alternate事件寄存器(ALTMSK)。最后允許USB控制器中信號輸出,使控制器附加到USB總線上。USB中斷服務例程中斷服務程序處理USB控制器產生的中斷,它將數(shù)據(jù)從USB內部FIFO讀出,并建立正確的事件標志,以通知主循環(huán)程序處理?;静襟E如下:從主事件寄存器(MAEV)讀出產生中斷的事件。根據(jù)主事件寄存器某位狀態(tài)判別事件,接著讀取相應的事件寄存器:接收事件寄存器(RXEV),或發(fā)送事件寄存器(TXEV),或無應答事件寄存器(NAKEV),或Alternate事件寄存器(ALTEV)。進一步判別事件寄存器的某位狀態(tài),根據(jù)具體事件,分別做相應的操作。通道0(端點0)用于控制傳輸,在驅動程序中調用rxevent0(),txevent0()處理端點0的事件。通道1中由Txevent1()處理端點1(單向發(fā)送)的事件,rxevent1()處理端點2(單向接收)的事件。通道2中由Txevent2()處理端點3(單向發(fā)送)的事件,rxevent2()處理端點4(單向接收)的事件。通道3中由Txevent3()處理端點5的事件,rxevent3()處理端點6的事件。實驗步驟1)拷貝光盤CD1\Software\EduKit44b0文件夾到EmbestIDE\Examples\Samsung\目錄下;2)實驗環(huán)境準備。使用USB連接線連接EduKit-III的USB接口和PC主機的USB接口;通過Embest仿真器連接PC主機并行口和目標板JTAG接口。3)編譯、鏈接、運行USB例程。使用EmbestIDE打開USB_Test\USB_Test.pjf工作區(qū),直接編譯鏈接輸出可執(zhí)行文件USB_Test.elf,下載到EduKit-III上運行。4)安裝USB設備驅動程序。運行USB例程后,Windows彈出發(fā)現(xiàn)新硬件的提示對話框,按照安裝向導安裝驅動程序EmbestEduKit-IIIUSBDriver,驅動程序安裝文件位于USB_Test\Driver目錄。5)運行USB數(shù)據(jù)傳送演示軟件。運行位于USB_Test目錄下demo.exe,出現(xiàn)如下窗口:6)發(fā)送和接收數(shù)據(jù)。在傳送數(shù)據(jù)窗口里輸入要發(fā)送的數(shù)據(jù),點發(fā)送按鈕,在接收數(shù)據(jù)窗口里,顯示目標板USB控制器返回的數(shù)據(jù)。7)在PC機上觀察超級終端程序主窗口,可以看到如下界面:六、調試過程、結果和分析使用USB連接線連接USB接口和主機的USB接口,打開實驗例程調試運行,出現(xiàn)安裝USB驅動程序的提示對話框,按照安裝向導安裝,選擇高級選項,再選擇驅動程序安裝文件的路徑即可。之后運行demo.exe,在發(fā)送數(shù)據(jù)窗口編輯發(fā)送內容,發(fā)送,接收數(shù)據(jù)窗口即顯示USB傳輸內容,并與編輯發(fā)送的呢內容相同。七、總結本次實驗無其他習題要求,按照教材例程一步步運行,觀察實驗結果,熟悉步驟,無須對程序進行改動,因此完成得非常順利,也沒有遇到特殊的問題。八、附件/********************************************************************************************name:write_usb*func:writes9603controls/conditions/dataregister*para:addrregisteraddress*datdata*******************************************************************************************/voidwrite_usb(unsignedcharaddr,unsignedchardat){(*(volatileunsignedchar*)0x02000002)=addr;(*(volatileunsignedchar*)0x02000000)=dat;}/********************************************************************************************name:read_usb*func:reads9603controls/conditions/dataregister*para:addrregisteraddress*ret:data*******************************************************************************************/unsignedcharread_usb(unsignedcharaddr){(*(volatileunsignedchar*)0x02000002)=addr;return(*(volatileunsignedchar*)0x02000000);}/********************************************************************************************name:Isr_Init*func:Theseveranceinitialization,installstheUSBseveranceservicefunction*******************************************************************************************/voidIsr_Init(void){rINTMOD&=~BIT_EINT1;//EINT1interruptrINTMSK&=~BIT_GLOBAL;//GLOBALvalidpISR_EINT1=(int)__Eint1Isr;rPCONG=rPCONG|(3<<2);rPUPG=rPUPG&0xFD;rEXTINT=0x00;rINTMSK=rINTMSK|BIT_EINT1;}/********************************************************************************************name:Init_9603*func:theinitializationUSBN9603,initialization9603interiorregisters,attach9063toarriveonUSBHUB********************************************************************************************/voidInit_9603(void){status_GETDESC=0;usb_cfg=0;//giveasoftreset,thensetintstopushpull,activehiorlowrite_usb(MCNTRL,SRST);while(read_usb(MCNTRL)&SRST);write_usb(MCNTRL,VGE+INT_H_P);//initializetheclockgeneratorwrite_usb(CCONF,CODIS+0x0c);//setdefaultaddress,enableEP0onlywrite_usb(FAR,AD_EN+0);//FAR=FUNCTIONADDRESSREGISTERwrite_usb(EPC0,0x00);//setupinterruptmaskswrite_usb(NAKMSK,NAK_O0);//NAKevntswrite_usb(TXMSK,TXFIFO0+TXFIFO1+TXFIFO2+TXFIFO3);//TXeventswrite_usb(RXMSK,RXFIFO0+RXFIFO1+RXFIFO2+RXFIFO3);//RXeventswrite_usb(ALTMSK,SD3+RESET_A);//ALTevntswrite_usb(MAMSK,INTR_E+RX_EV+NAK+TX_EV+ALT);//enablethereceiverandgooperationalFLUSHTX0;//flushTX0anddisablewrite_usb(RXC0,RX_EN);//enablethereceiverwrite_usb(NFSR,OPR_ST);//gooperationalwrite_usb(MCNTRL,VGE+INT_L_P+NAT);//setNODEATTACHdelay(100);}/********************************************************************************************name:Eint0Isr*func:TheUSBinterruptserviceisr,processestheUSBseverance,disposestheequipment,transmitsthedata*******************************************************************************************/voidEint0Isr(void){rINTMSK=rINTMSK|BIT_EINT0;rI_ISPC=BIT_EINT0;evnt=read_usb(MAEV);//checktheeventsif(evnt&RX_EV){evnt=read_usb(RXEV);//checktheRXeventsif(evnt&RXFIFO0)rxevent_0();//endpoint0elseif(evnt&RXFIFO1)rxevent_1();//endpoint2elseif(evnt&RXFIFO2)rxevent_2();//endpoint4elseif(evnt&RXFIFO3)rxevent_3();//endpoint6}elseif(evnt&TX_EV){evnt=read_usb(TXEV);//checktheTXeventsif(evnt&TXFIFO0)txevent_0();//endpoint0elseif(evnt&TXFIFO1)txevent_1();//endpoint1elseif(evnt&TXFIFO2)txevent_2();//endpoint3elseif(evnt&TXFIFO3)txevent_3();//endpoint5}elseif(evnt&ALT)usb_alt();//alternateevent?//NAKscancomesofastandfurious(especiallywithOHCIhosts)//thattheyMUSThavealowerprioritythantheotherevents.If//theydidnot,theothereventscouldgetstarvedout.elseif(evnt&NAK){evnt=read_usb(NAKEV);//checktheNAKeventsif(evnt&NAK_O0)nak0();elseif(evnt&NAK_O1)onak1();elseif(evnt&NAK_O2)onak2();elseif(evnt&NAK_I3)inak3();}rINTMSK=rINTMSK&(~BIT_EINT0);}/********************************************************************************************name:txevent_3*func:ThissubroutinehandlesTXeventsforFIFO3(endpoint6)******************************************************************************************/voidtxevent_3(void){txstat=read_usb(TXS3);//gettransmitterstatusif(txstat&ACK_STAT){//previousdatapacketfromcurrentepwasreceived

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論