freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

usb接口在單片機(jī)通信中的設(shè)計(jì)應(yīng)用畢業(yè)論文-資料下載頁

2025-06-28 09:04本頁面
  

【正文】 接執(zhí)行內(nèi)存管理指令和訪問I/O端口。每個(gè)應(yīng)用程序和驅(qū)動(dòng)與操作系統(tǒng)通信。,驅(qū)動(dòng)通信使用輸入/輸出請(qǐng)求包(IRP)結(jié)構(gòu)。Windows定義了一套驅(qū)動(dòng)可以使用的IRP。每個(gè)IRP請(qǐng)求或執(zhí)行一個(gè)獨(dú)立的輸入/輸出操作。USB設(shè)備的設(shè)備驅(qū)動(dòng)使用IRP傳遞總線通信,處理USB通信??偩€驅(qū)動(dòng)按順序使用IRP與總線通信,最終總線直接驅(qū)動(dòng)硬件,總線驅(qū)動(dòng)為Windows系統(tǒng)提供不需要用戶編程的代碼。Windows的USB設(shè)備驅(qū)動(dòng)程序必須按照Win32模式開發(fā),這些驅(qū)動(dòng)以WDM驅(qū)動(dòng)為主,[15]。 WDM設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)一個(gè)WDM設(shè)備驅(qū)動(dòng)程序的功能模塊一般包括如下的幾個(gè)部分:1) 初始化。2) 創(chuàng)建和刪除設(shè)備。3) 處理Win32程序打開和關(guān)閉文件句柄的要求。4) 處理Win32的輸入/輸出(I/O)請(qǐng)求。5) 實(shí)現(xiàn)對(duì)設(shè)備的串行化訪問。6) 訪問硬件。7) 取消I/O請(qǐng)求。8) 超時(shí)I/O請(qǐng)求。9) 調(diào)用其它驅(qū)動(dòng)程序。10) 處理電源管理請(qǐng)求。11) 處理Windows管理診斷(WMI)向系統(tǒng)管理員報(bào)告。12) 處理一個(gè)可熱插拔的設(shè)備被加入或刪除的情況。其中“初始化”模塊是一定不能少的,其它模塊可選。 驅(qū)動(dòng)程序開發(fā)的工具軟件Windows設(shè)備驅(qū)動(dòng)程序的開發(fā)工具應(yīng)用比較廣泛的有:一種是DDK。使用DDK開發(fā)過程靈活,開發(fā)出的驅(qū)動(dòng)程序的代碼效率高,與操作系統(tǒng)結(jié)合好。但是用DDK開發(fā),需要系統(tǒng)程序員對(duì)計(jì)算機(jī)計(jì)算機(jī)硬件和Windows操作系統(tǒng)相當(dāng)熟悉,而且開發(fā)過程大部分場(chǎng)合都直接使用匯編語言編程,一般來說難度太大,這里不采用這種開發(fā)工具。另一種具有代表性的有VtoolsD和Driver Works等開發(fā)工具軟件。這類工具一般以源代碼和庫函數(shù)調(diào)用的形式提供給開發(fā)者許多現(xiàn)成的設(shè)備底層驅(qū)動(dòng)支持,開發(fā)者只需要調(diào)用工具中的預(yù)定義類和底層驅(qū)動(dòng)接口就可以方便地生成符合用戶要求的完整驅(qū)動(dòng)程序。使用這類工具開發(fā)驅(qū)動(dòng)程序不如使用DDK靈活,但大大減小開發(fā)者的工作量和難度,縮短了開發(fā)周期。Win Driver工具軟件就是這樣的一種開發(fā)工具,但它與VtoolsD、Driver Works等開發(fā)工具又不同。區(qū)別在于Driver Works等工具可以開發(fā)出獨(dú)立但是完整的驅(qū)動(dòng)程序,而使用Win Driver軟件時(shí)工具只提供一個(gè)設(shè)備安裝信息文件(.inf),真正的驅(qū)動(dòng)程序在安裝Win Driver時(shí)就已經(jīng)加載了。 用Win Driver開發(fā)驅(qū)動(dòng)程序在USB設(shè)備已經(jīng)有主機(jī)列舉成功后,就可以使用Win Driver開發(fā)調(diào)試USB驅(qū)動(dòng)程序了。打開Driver Wizard,建立一個(gè)新的工程,在彈出的Card Information窗口中,就可以看到要生成驅(qū)動(dòng)程序的設(shè)備信息,有接口類型、生產(chǎn)廠商和Product ID 3個(gè)設(shè)備信息。單擊Generate .INF file按鈕,就可以生成設(shè)備的一個(gè)硬件配置信息文件,Windows操作系統(tǒng)就可以按照這個(gè)文件中的內(nèi)容來為設(shè)備配置驅(qū)動(dòng)程序,實(shí)際的驅(qū)動(dòng)程序一直存放在Win Driver的安裝目錄下。當(dāng)設(shè)備初次接入時(shí),將被系統(tǒng)識(shí)別為標(biāo)準(zhǔn)的人機(jī)接口設(shè)備HID,并自動(dòng)為其安裝驅(qū)動(dòng)程序,之后操作系統(tǒng)將對(duì)這個(gè)設(shè)備類似對(duì)鼠標(biāo)鍵盤的方式不停查詢(電路板的Good Link指示LED不停閃爍,而且計(jì)數(shù)器的8位LED輸出也在不停的變化),這時(shí)用戶就無法對(duì)其與主機(jī)的數(shù)據(jù)傳輸進(jìn)行監(jiān)控,所以就必須為其安裝專用的驅(qū)動(dòng)程序。 Card Information窗口,再到Windows的設(shè)備管理器窗口中為設(shè)備更換驅(qū)動(dòng)程序,操作系統(tǒng)就會(huì)把設(shè)備的驅(qū)動(dòng)程序安裝為新的驅(qū)動(dòng)程序。之后就會(huì)發(fā)現(xiàn)設(shè)備的掃描已經(jīng)暫時(shí)停止了(這時(shí)電路板的Good Link指示LED不再閃爍,計(jì)數(shù)器不顯示輸出)。這表明驅(qū)動(dòng)程序的安裝已經(jīng)完成,之后就可以基于這個(gè)驅(qū)動(dòng)程序來編寫應(yīng)用程序,來控制與設(shè)備的數(shù)據(jù)交換了。 系統(tǒng)應(yīng)用程序開發(fā) 應(yīng)用程序的實(shí)現(xiàn)的功能應(yīng)用程序是基于驅(qū)動(dòng)程序提供的接口工作的,所以本系統(tǒng)涉及的應(yīng)用程序必須調(diào)用Win Driver提供的驅(qū)動(dòng)程序接口。應(yīng)用程序是處在應(yīng)用層的上層軟件,它提供了用戶界面,通過應(yīng)用程序可以對(duì)設(shè)備實(shí)行控制。本系統(tǒng)的應(yīng)用程序的開發(fā)是為了更好的實(shí)現(xiàn)數(shù)據(jù)的傳輸,把USB設(shè)備中數(shù)據(jù)的傳輸過程動(dòng)態(tài)地呈現(xiàn)出來,讓使用者能夠直觀地看到主機(jī)對(duì)設(shè)備的控制,即數(shù)據(jù)的接收和發(fā)送。 利用Win Driver實(shí)現(xiàn)應(yīng)用程序在安裝好Win Driver提供的驅(qū)動(dòng)程序之后,從新打開Driver Wizard,建立一個(gè)新工程;在Card Information對(duì)話框中選擇要控制的USB設(shè)備,然后單擊確定;這時(shí)就可以彈出的Resource窗口中看到設(shè)備支持的所有管線,并通過右側(cè)的幾個(gè)按鈕來讀/寫指定管線,觀察主機(jī)與設(shè)備的數(shù)據(jù)交換過程。在Build菜單中選擇Generate Code,Win Driver就會(huì)提示生成一個(gè)應(yīng)用程序的工程源代碼,打開VC對(duì)所建工程編譯連接,就可以對(duì)得到一個(gè)控制臺(tái)的可執(zhí)行程序,這個(gè)程序運(yùn)行同樣可以用來對(duì)設(shè)備的所有管線進(jìn)行讀/寫。Win Driver工具軟件生成的驅(qū)動(dòng)程序提供了一些間接控制設(shè)備硬件的接口函數(shù),可以完成USB通信的大部分功能,現(xiàn)將Win 。當(dāng)設(shè)備接入主機(jī)之后,從應(yīng)用程序中可以開啟和關(guān)閉設(shè)備。開啟設(shè)備之后,就可以顯示設(shè)備和管線信息等USB設(shè)備的固有屬性。單擊“監(jiān)聽管線”后,應(yīng)用程序通過驅(qū)動(dòng)程序?qū)υO(shè)備的中斷端點(diǎn)進(jìn)行掃描,這時(shí)設(shè)備單片機(jī)內(nèi)部的記數(shù)值就會(huì)發(fā)給主機(jī),在應(yīng)用程序的文本框中就會(huì)顯示出來[12]。 Win Driver庫函數(shù)函數(shù)名功 能USB_RegisterWin DriverWin Driver注冊(cè),所有程序必須調(diào)用USB_Open打開USB設(shè)備USB_Close關(guān)閉USB設(shè)備USB_GetDeiverInfo讀取設(shè)備信息USB_ResetDevice設(shè)備復(fù)位BOOL USB_ResetPipe管線復(fù)位USB_ReadWritePipes讀寫管線USB_ReadPipe00讀00管線USB_WritePipe00寫00管線USB_StopTransferPipe0000管線停止傳輸U(kuò)SB_ReadPipe81讀81管線USB_StopTransferPipe8181管線停止傳輸4 系統(tǒng)調(diào)試系統(tǒng)電路設(shè)計(jì)完之后,需要對(duì)系統(tǒng)硬件和軟件進(jìn)行調(diào)試。為方便調(diào)試,硬件部分一開始只搭建了USB基本功能模塊,即由AT89S52和PDIUSBD12以及其外圍器件構(gòu)成的模塊。USB基本功能電路調(diào)試通過以后,再加入擴(kuò)展功能模塊來實(shí)現(xiàn)完整的系統(tǒng)。由于本系統(tǒng)的軟件調(diào)試過程,都是在軟件工具Win Driver的輔助下,在硬件的基礎(chǔ)上進(jìn)行的,所以軟件的調(diào)試基本上可以稱為系統(tǒng)調(diào)試。 系統(tǒng)硬件測(cè)試系統(tǒng)硬件搭建完畢以后,需要對(duì)硬件調(diào)試。對(duì)系統(tǒng)硬件調(diào)試,主要按以下步驟來實(shí)現(xiàn):1) 看板子是否通。首先用眼睛看電路板是否有虛焊、脫焊,有問題的地方重新焊接;然后對(duì)照電路原理圖,分模塊以系統(tǒng)的核心器件為中心,發(fā)散到外圍器件,利用萬用表,認(rèn)真檢查每一條線走的是否正確,保證線路的連接沒有問題;電路線路沒有問題后,將電路板上電,然后根據(jù)系統(tǒng)電路的特點(diǎn),利用萬用表測(cè)試,看每一點(diǎn)輸出的電壓是否正常。2) 看系統(tǒng)各部件是否正常工作。對(duì)于本系統(tǒng),主要看單片機(jī)系統(tǒng)是否工作。由于本系統(tǒng)中單片機(jī)的外部時(shí)鐘輸入是由D12芯片的CLKOUT腳引入,所以在測(cè)試過程中,必須重新為單片機(jī)引入一個(gè)12M的時(shí)鐘脈沖。經(jīng)過檢測(cè)驗(yàn)證,發(fā)現(xiàn)單片機(jī)正常工作。D12芯片需要單片機(jī)程序控制才能正常工作,這里可以檢測(cè)D12芯片外圍的晶振是否工作,只要將時(shí)鐘信號(hào)輸入端接到示波器上,如果看到振動(dòng)現(xiàn)象就說明晶振電路沒有問題。而對(duì)于D12芯片的檢測(cè),需要等到軟件程序設(shè)計(jì)完畢以后,在系統(tǒng)的整體調(diào)試中才能進(jìn)行。調(diào)試調(diào)試過程中我收獲很大。一開始由于將電源線和地線搞混淆了,電路板上電后,發(fā)現(xiàn)芯片溫度非常高,經(jīng)過仔細(xì)檢查很快排除了這個(gè)錯(cuò)誤。后來檢測(cè)單片機(jī)模塊時(shí),發(fā)現(xiàn)其沒有正常工作,經(jīng)檢測(cè)發(fā)現(xiàn)復(fù)位電路有問題,原因是復(fù)位腳上的電容接反了方向,導(dǎo)致不能復(fù)位,單片機(jī)不能工作。通過系統(tǒng)硬件檢測(cè),排除了硬件電路上的問題,為系統(tǒng)的調(diào)試打好基礎(chǔ)。 系統(tǒng)軟件調(diào)試及系統(tǒng)測(cè)試系統(tǒng)軟件程序編寫完畢以后,我們需要對(duì)它進(jìn)行調(diào)試。本系統(tǒng)軟件程序包括三塊:固件程序、驅(qū)動(dòng)程序以及應(yīng)用程序。固件程序的編寫運(yùn)用的是單片機(jī)語言,它的編譯仿真用是在wave6000的輔助下進(jìn)行的;由于驅(qū)動(dòng)程序是在Win Driver下生成的,應(yīng)用程序是基于驅(qū)動(dòng)程序提供的接口上工作的,所以驅(qū)動(dòng)程序和應(yīng)用程序的調(diào)試是在Win Driver軟件輔助下進(jìn)行的。以上軟件程序的調(diào)試都是在硬件電路的基礎(chǔ)上進(jìn)行的,所以本系統(tǒng)的軟件調(diào)試也可以成為系統(tǒng)測(cè)試。系統(tǒng)固件程序在wave6000中編譯通過后,我們就可以對(duì)它進(jìn)行測(cè)試。設(shè)備固件程序的功能側(cè)重于設(shè)備的列舉和簡(jiǎn)單的中斷方式數(shù)據(jù)傳輸。該設(shè)備是一個(gè)人機(jī)接口設(shè)備,以中斷方式傳輸,查詢周期為10ms(接口描述符中定義為10ms),發(fā)送和接收的數(shù)據(jù)都只有1字節(jié)。為方便測(cè)試,設(shè)備內(nèi)部以軟件方式實(shí)現(xiàn)一個(gè)8位計(jì)數(shù)器,當(dāng)1ms的SOF幀引發(fā)中斷時(shí),在中斷處理程序中有相應(yīng)處理,控制每隔125ms時(shí)間,計(jì)數(shù)器的值加1,當(dāng)計(jì)數(shù)器值發(fā)生改變時(shí),就將新值寫入D12的發(fā)送緩沖區(qū),這樣當(dāng)下一次主機(jī)查詢來時(shí),設(shè)備就把這個(gè)數(shù)據(jù)傳送給主機(jī)。主機(jī)也可以為計(jì)數(shù)器設(shè)置新的計(jì)數(shù)值,即主機(jī)向設(shè)備送1字節(jié)的報(bào)文,設(shè)備收到后立即用該值替換計(jì)數(shù)器的計(jì)數(shù)值,計(jì)數(shù)器以這個(gè)新值開始計(jì)數(shù)。這個(gè)計(jì)數(shù)值隨時(shí)通過系統(tǒng)板上的8位LED顯示出來。當(dāng)設(shè)備能實(shí)現(xiàn)此功能時(shí),說明系統(tǒng)固件程序編寫正確。當(dāng)系統(tǒng)的固件完成后,就可以用設(shè)備配合自己開發(fā)的軟件工具來做一些簡(jiǎn)單的USB接口實(shí)驗(yàn),觀察設(shè)備與主機(jī)之間的數(shù)據(jù)交換過程。在這里,利用Win Driver來觀察USB設(shè)備的工作情況。在Win Driver的界面下,可以直接對(duì)USB設(shè)備的管線進(jìn)行讀/寫控制,控制并觀察USB總線上的數(shù)據(jù)傳輸,起到調(diào)試的作用。Win Driver包含2個(gè)子窗口,Log和Resource。其中,Log顯示主機(jī)與通信的詳細(xì)信息,Resource中可以實(shí)現(xiàn)與設(shè)備通信的功能。對(duì)USB設(shè)備來說,將在Resource窗口中看到2個(gè)管線:Pipe00—控制管線,Pipe81—數(shù)據(jù)管線(中斷方式)。選中Pipe81時(shí),單擊Listen to Pipe按鈕監(jiān)聽這個(gè)管線,就可以在Log窗口中看到設(shè)備的計(jì)數(shù)值不停發(fā)生變化,相應(yīng)地設(shè)備電路板上的LED也開始顯示計(jì)數(shù)顯示;再點(diǎn)擊Stop Listen,則停止監(jiān)聽。選中Pipe00時(shí),點(diǎn)擊Read/Write To Pipe,將彈出一個(gè)PipeControl的窗口。這里可以設(shè)置向設(shè)備發(fā)送一個(gè)Setup包,以讀取或?qū)懭肴舾蓴?shù)據(jù)。在這個(gè)過程中要注意:這里的Setup包的Type、Request域?yàn)樽止?jié)數(shù)據(jù),wValue、wIndex、wLength域?yàn)樽謹(jǐn)?shù)據(jù),Setup包傳輸?shù)膶?shí)際內(nèi)容可在輸入框下方的文本框中顯示。本系統(tǒng)在生成驅(qū)動(dòng)程序的過程中,檢測(cè)不到D12芯片的ID號(hào),無法生成驅(qū)動(dòng),PC機(jī)只能檢測(cè)到USB設(shè)備,不能正常地和PC機(jī)進(jìn)行數(shù)據(jù)傳輸。結(jié)論本文從硬件和軟件兩個(gè)方面詳細(xì)地介紹了USB接口在單片機(jī)通信中的設(shè)計(jì)應(yīng)用過程以及相關(guān)技術(shù)要點(diǎn)。系統(tǒng)設(shè)計(jì)過程中涉及到的技術(shù)如下:1) USB技術(shù)2) 單片機(jī)的C語言程序編寫3) 底層驅(qū)動(dòng)開發(fā)技術(shù)在該系統(tǒng)設(shè)計(jì)和開發(fā)過程中,本人做了以下的工作:第一階段:收集、閱讀和分析資料,通過不斷的分析比較,尋求一種比較完善的設(shè)計(jì)方法,從理論上找出了本系統(tǒng)設(shè)計(jì)的依據(jù)。第二階段:系統(tǒng)硬件電路圖的設(shè)計(jì)和電路的測(cè)試。包括由51單片機(jī)與PDIUSBD12組成的基本功能模塊的設(shè)計(jì)和調(diào)試,系統(tǒng)擴(kuò)展功能模塊的設(shè)計(jì)。第三階段:系統(tǒng)軟件模塊的設(shè)計(jì)。包括系統(tǒng)固件的實(shí)現(xiàn),USB芯片底層驅(qū)動(dòng)程序的設(shè)計(jì),運(yùn)用Win Driver工具對(duì)系統(tǒng)驅(qū)動(dòng)程序和應(yīng)用程序的實(shí)現(xiàn)。由于USB協(xié)議和底層驅(qū)動(dòng)相當(dāng)復(fù)雜,自己C語言運(yùn)用能力也有限,在這個(gè)階段中,自己也需要通過不斷的學(xué)習(xí),來完成本階段的工作。這個(gè)階段的工作難度和強(qiáng)度較大,是本系統(tǒng)設(shè)計(jì)的關(guān)鍵。第四階段:與PC機(jī)相連接的系統(tǒng)整機(jī)調(diào)試。第五階段:論文的撰寫。在該系統(tǒng)設(shè)計(jì)與開發(fā)過程中,我將大學(xué)五年學(xué)到的知識(shí)連接起來了,將它們運(yùn)用到實(shí)際中。自己系統(tǒng)電路設(shè)計(jì)能力得到了提高,從USB協(xié)議的了解,到單片機(jī)的熟練運(yùn)用;從方案的分析設(shè)計(jì),到系統(tǒng)的具體設(shè)計(jì)實(shí)現(xiàn);從運(yùn)用Protel的電路圖繪制,到實(shí)際電路的焊接;從軟件編程語言的運(yùn)用,到系統(tǒng)電路的檢測(cè)調(diào)試。限于自己的能力和開發(fā)條件,本系統(tǒng)還有待改進(jìn)和完善的地方。還需要進(jìn)一步加強(qiáng)完善通訊的各種測(cè)試方法手段,從而建立與PC機(jī)的通信。參考文獻(xiàn)[1] [M].北京:北京航空航天大學(xué)出版社,~160.[2] [M].西安: 西安電子科技大學(xué)出版社,~62.[3] 楊代華,葉敦范,[M].武漢:中國(guó)地質(zhì)大學(xué)出版社,~105.[4](美)Jan [M].北京: 中國(guó)電力出版社,~157.[5] [M].北京:國(guó)防工業(yè)出版社,~53.[6] [M]. 北京: 電子工業(yè)出版社,~81.[7] 馬忠梅,馬巖,[M].北京: 北京航空航天大學(xué)出版社,~185.[8] [M].北京: 清華大學(xué)出版社,~128.[9] [M].北京: 北京航空航天大學(xué)大學(xué)出版社,~206.[10] [M].北京: 北京航空航天大學(xué)出版社,~97.[11] [M].北京: 人民郵電出版社,~104.[12] Chris WDM設(shè)備驅(qū)動(dòng)程序開發(fā)指南[M].西安: 西安電子科技大學(xué)出版社,~70.[13] 莫林利,++實(shí)現(xiàn)與USB驅(qū)動(dòng)程序的通信[J].電腦編程技術(shù)與維護(hù),2003,1:1001~1004.[14] [M].西安: 西安電子科技大學(xué)出版社,~56.[15] [M].北京: 北京航空航天大學(xué)出版社,2000. 98~104.[16] TEXAS Circu
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1