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

正文內(nèi)容

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

2025-07-13 09:04本頁(yè)面
  

【正文】 的Data和Clk在主機(jī)不干預(yù)的情況下會(huì)直接浮為高電平;而鍵盤則不是OC輸出,主機(jī)的鍵盤接口一側(cè)也沒(méi)有上拉電阻。 Flash存儲(chǔ)器的擴(kuò)展設(shè)計(jì)為實(shí)現(xiàn)Flash移動(dòng)存儲(chǔ)器的功能,擴(kuò)展了一塊容量為16M8字節(jié)的FlashE2PROM芯片Samsung K9F2808。該芯片允許一百萬(wàn)次以上的編程和擦除,并能保持?jǐn)?shù)據(jù)、達(dá)10年以上。由于考慮到單片機(jī)編程方便和USB總線供電等因素,系統(tǒng)電路板的主要部件都使用了5V電源,~ V電源供電。1117是一個(gè)低壓差電壓調(diào)節(jié)器,。另外還有5個(gè)固定電壓輸出(、 和 5V)的型號(hào)。調(diào)節(jié)端通過(guò)一個(gè)旁路電容,可防止輸出電壓放大倍數(shù)的增加。2808除了16M8字節(jié)的存儲(chǔ)空間外,還集成了512K8字節(jié)的備用空間,可以用作存放數(shù)據(jù)校驗(yàn)等冗余信息,以保證數(shù)據(jù)存放的可靠性。對(duì)于一般的51系列單片機(jī),它的地址總線只有16位,也就是說(shuō)最多只能尋址到64KB空間。,nCE、CLE、ALE以及附加的74245三態(tài)緩沖器的nE和DIR分別受到來(lái)自地址總線的A0、AAA4的控制。 Flash存儲(chǔ)器模塊電路原理圖 LPT并行接口的擴(kuò)展設(shè)計(jì)電路也擴(kuò)展了LPT并行接口,其引腳定義按照LPT打印機(jī)的接口定義預(yù)先連接了地線,其它引腳D0,D7,nStrobe,nACK,Busy,Pe,Sel,nAutoFd,nError,nInit和nSelIn分別連接在單片機(jī)的P0口,P2口。同時(shí),由P0向LPT接口的D0~D7讀/寫數(shù)據(jù)時(shí),由于同在系統(tǒng)總線上的D12和2808并不會(huì)受到影響。 LPT并行接口的連接[6]注:系統(tǒng)整體電路圖見(jiàn)附錄1所示3 系統(tǒng)軟件設(shè)計(jì)硬件開(kāi)發(fā)完了之后,如果沒(méi)有軟件的支持,USB設(shè)備不能實(shí)現(xiàn)任何功能,本章介紹系統(tǒng)的軟件設(shè)計(jì)。主機(jī)應(yīng)用軟件通過(guò)客戶驅(qū)動(dòng)程序與設(shè)備進(jìn)行通信,由設(shè)備產(chǎn)生USB數(shù)據(jù)的傳輸動(dòng)作;固件則響應(yīng)各種來(lái)自設(shè)備的USB標(biāo)準(zhǔn)請(qǐng)求,完成各種數(shù)據(jù)的交換工作和事件處理。 固件程序的設(shè)計(jì)與實(shí)現(xiàn)固件是FireWare的中文意思,它實(shí)際上足單片機(jī)的程序文件,可以采用C語(yǔ)言或是匯編語(yǔ)言編寫。在本系統(tǒng)中,當(dāng)PDIUSBD12從USB接受到一個(gè)數(shù)據(jù)包,就對(duì)CPU產(chǎn)生一個(gè)中斷請(qǐng)求,CPU立即響應(yīng)中斷。固件程序放入AT89S52的Flash Memory中,當(dāng)把設(shè)備連接到主機(jī)上時(shí),上位機(jī)可以發(fā)現(xiàn)新設(shè)備,然后建立連接。 描述符USB的描述符定義了關(guān)于設(shè)備的各種信息,描述符是一種預(yù)定義的數(shù)據(jù)結(jié)構(gòu),每一個(gè)描述符的第1個(gè)字節(jié)都是該描述符的總字節(jié)數(shù)長(zhǎng)度,第2個(gè)字節(jié)則為該描述符自身類型的標(biāo)識(shí)。在系統(tǒng)固件文件中,定義了系統(tǒng)所使用的各種USB描述符,它們的定義和作用如下:1) 設(shè)備描述符設(shè)備描述符是設(shè)備接入主機(jī)之后向設(shè)備要求的第一個(gè)描述符。2) 配置描述符配置描述符向主機(jī)報(bào)告設(shè)備的配置信息,包括設(shè)備供電方式、最大電流等屬性,并指定了一個(gè)配置包含的接口數(shù)。3) 接口描述符接口描述符用來(lái)描述設(shè)備的接口,指明接口的類型和遵循的傳輸協(xié)議等屬性。4) 端點(diǎn)描述符號(hào)端點(diǎn)描述符用來(lái)描述端點(diǎn)的屬性以及各個(gè)端點(diǎn)的位置,包含此端點(diǎn)的傳輸方向、傳輸類型以及傳輸率等信息。5) 類(HID)描述符類描述符的作用是告訴主機(jī)設(shè)備的類相關(guān)特性,它根據(jù)具體設(shè)備類的不同而不同。報(bào)告描述符定義了設(shè)備傳送給主機(jī)和主機(jī)發(fā)送給設(shè)備的數(shù)據(jù)格式,并且告知主機(jī)該如何處理數(shù)據(jù)。7) 字符串描述符字符串描述符的結(jié)構(gòu)非常簡(jiǎn)單,它以文字形式存放了設(shè)備的一些說(shuō)明信息。 固件程序的結(jié)構(gòu)1) 固件結(jié)構(gòu)概述本系統(tǒng)的核心為AT89S52單片機(jī),從單片機(jī)的角度看,固件程序的結(jié)構(gòu)包括兩部分,即主程序和中斷子程序。中斷子程序只包括由D12觸發(fā)的INT0外部中斷,電平方式觸發(fā),單片機(jī)的其它中斷都是被禁止的。初始化完成之后,主循環(huán)實(shí)際上不再參與USB通信,而只是做無(wú)用的死循環(huán)或設(shè)備的其他功能操作。中斷處理子程序要做的工作就是首先D12讀取中斷信息,查看D12收到了什么樣的封包,然后根據(jù)主機(jī)的不同要求做出響應(yīng)。源文件實(shí)現(xiàn)4個(gè)函數(shù):d12m()、d12read()、d12write()和d12delay()。D12芯片的命令端口地址在本系統(tǒng)中為0x11,定義為unsigned pdata D12_COMM_at_0x11。d12read( )函數(shù)的原型為 char d12read(void),實(shí)現(xiàn)的功能是從D12接口芯片的數(shù)據(jù)口讀一個(gè)字節(jié)的數(shù)據(jù)字。d12write( )函數(shù)的原型為void d12write(unsigned char dat),實(shí)現(xiàn)的功能是向D12接口芯片的數(shù)據(jù)口寫一個(gè)字節(jié)的數(shù)據(jù)字。D12芯片要求在寫命令端口的操作與讀數(shù)據(jù)端口或?qū)懚丝诘牟僮髦g至少600ns以上的延時(shí),否則芯片工作結(jié)果不正確。3) 主程序主程序()完成的任務(wù)有設(shè)備上電后的初始化工作和主循環(huán)。D12一共有4條初始化的指令:設(shè)置地址/使能(set address/enable)、設(shè)置端點(diǎn)/使能(set endpoint/enable)、設(shè)置模式(set mode)以及設(shè)置DMA(set DMA)。所以,本系統(tǒng)上電時(shí)唯一需要用到的初始化指令是設(shè)置模式(set mode)。d12write(0x16)。d12m(0xf3)表示向D12的命令端口寫字節(jié)0xf3(即 set mode的命令字),接著通過(guò)d12write()函數(shù)向D12的數(shù)據(jù)端口寫2個(gè)字節(jié)的數(shù)據(jù)0x16和0x43,分別表示使SoftConnect狀態(tài)變?yōu)檫B接以及更改D12對(duì)單片機(jī)的時(shí)鐘輸出為12MHz。程序在進(jìn)入中斷處理函數(shù)入口后,先要讀D12的中斷狀態(tài)寄存器(指令F4),從讀出的第1個(gè)狀態(tài)字來(lái)判斷引發(fā)這一次中斷的是哪一個(gè)端點(diǎn)的哪一類傳輸()。SOF包和總線重置的處理程序都是自定義的部分,是為了更好地配合設(shè)備工作而添加的代碼,與設(shè)備的實(shí)質(zhì)沒(méi)有太大關(guān)系;而掛起狀態(tài)改變引起的中斷在這里不需要做處理;由于USB的數(shù)據(jù)傳輸都是由D12自動(dòng)完成,端點(diǎn)1和2的輸出/輸入中斷處理就沒(méi)有什么實(shí)質(zhì)內(nèi)容。通過(guò)這條指令清除相應(yīng)端點(diǎn)的中斷狀態(tài),表示已讀此端點(diǎn),只有這樣D12向單片機(jī)的中斷請(qǐng)求才會(huì)撤除,否則單片機(jī)將不得不持續(xù)中斷狀態(tài)(中斷方式為電平出發(fā))。簡(jiǎn)言之,中斷處理程序的功能就是協(xié)調(diào)在USB電氣接口與USB通信協(xié)議之間的數(shù)據(jù)傳輸。響應(yīng)函數(shù)對(duì)設(shè)備要求bmRequest域和Request域的譯碼,確定設(shè)備要求的類別;然后在存放存儲(chǔ)區(qū)的所有描述符中找到合適的描述符;再把這個(gè)描述符返回給主機(jī)[8]。 驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)在設(shè)備硬件和單片機(jī)固件都開(kāi)發(fā)調(diào)試通過(guò)之后,主機(jī)就能夠正確識(shí)別設(shè)備了,但主機(jī)與USB設(shè)備的信息交互是通過(guò)軟件來(lái)實(shí)現(xiàn)的。USB主機(jī)系統(tǒng)軟件開(kāi)發(fā)分為兩部分:主機(jī)操作系統(tǒng)上的客戶驅(qū)動(dòng)程序以及主機(jī)應(yīng)用程序。 驅(qū)動(dòng)程序概述設(shè)備驅(qū)動(dòng)程序是保證用戶應(yīng)用程序軟件訪問(wèn)設(shè)備硬件的程序軟件。應(yīng)用層的代碼為操作系統(tǒng)提供函數(shù),硬件代碼則包括了訪問(wèn)外部設(shè)備的必要協(xié)議。在訪問(wèn)內(nèi)存和其它系統(tǒng)資源時(shí),允許代碼有不同的優(yōu)先級(jí)。驅(qū)動(dòng)程序一般運(yùn)行在內(nèi)核模式下。每個(gè)應(yīng)用程序和驅(qū)動(dòng)與操作系統(tǒng)通信。Windows定義了一套驅(qū)動(dòng)可以使用的IRP。USB設(shè)備的設(shè)備驅(qū)動(dòng)使用IRP傳遞總線通信,處理USB通信。Windows的USB設(shè)備驅(qū)動(dòng)程序必須按照Win32模式開(kāi)發(fā),這些驅(qū)動(dòng)以WDM驅(qū)動(dòng)為主,[15]。2) 創(chuàng)建和刪除設(shè)備。4) 處理Win32的輸入/輸出(I/O)請(qǐng)求。6) 訪問(wèn)硬件。8) 超時(shí)I/O請(qǐng)求。10) 處理電源管理請(qǐng)求。12) 處理一個(gè)可熱插拔的設(shè)備被加入或刪除的情況。 驅(qū)動(dòng)程序開(kāi)發(fā)的工具軟件Windows設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)工具應(yīng)用比較廣泛的有:一種是DDK。但是用DDK開(kāi)發(fā),需要系統(tǒng)程序員對(duì)計(jì)算機(jī)計(jì)算機(jī)硬件和Windows操作系統(tǒng)相當(dāng)熟悉,而且開(kāi)發(fā)過(guò)程大部分場(chǎng)合都直接使用匯編語(yǔ)言編程,一般來(lái)說(shuō)難度太大,這里不采用這種開(kāi)發(fā)工具。這類工具一般以源代碼和庫(kù)函數(shù)調(diào)用的形式提供給開(kāi)發(fā)者許多現(xiàn)成的設(shè)備底層驅(qū)動(dòng)支持,開(kāi)發(fā)者只需要調(diào)用工具中的預(yù)定義類和底層驅(qū)動(dòng)接口就可以方便地生成符合用戶要求的完整驅(qū)動(dòng)程序。Win Driver工具軟件就是這樣的一種開(kāi)發(fā)工具,但它與VtoolsD、Driver Works等開(kāi)發(fā)工具又不同。 用Win Driver開(kāi)發(fā)驅(qū)動(dòng)程序在USB設(shè)備已經(jīng)有主機(jī)列舉成功后,就可以使用Win Driver開(kāi)發(fā)調(diào)試USB驅(qū)動(dòng)程序了。單擊Generate .INF file按鈕,就可以生成設(shè)備的一個(gè)硬件配置信息文件,Windows操作系統(tǒng)就可以按照這個(gè)文件中的內(nèi)容來(lái)為設(shè)備配置驅(qū)動(dòng)程序,實(shí)際的驅(qū)動(dòng)程序一直存放在Win Driver的安裝目錄下。 Card Information窗口,再到Windows的設(shè)備管理器窗口中為設(shè)備更換驅(qū)動(dòng)程序,操作系統(tǒng)就會(huì)把設(shè)備的驅(qū)動(dòng)程序安裝為新的驅(qū)動(dòng)程序。這表明驅(qū)動(dòng)程序的安裝已經(jīng)完成,之后就可以基于這個(gè)驅(qū)動(dòng)程序來(lái)編寫應(yīng)用程序,來(lái)控制與設(shè)備的數(shù)據(jù)交換了。應(yīng)用程序是處在應(yīng)用層的上層軟件,它提供了用戶界面,通過(guò)應(yīng)用程序可以對(duì)設(shè)備實(shí)行控制。 利用Win Driver實(shí)現(xiàn)應(yīng)用程序在安裝好Win Driver提供的驅(qū)動(dòng)程序之后,從新打開(kāi)Driver Wizard,建立一個(gè)新工程;在Card Information對(duì)話框中選擇要控制的USB設(shè)備,然后單擊確定;這時(shí)就可以彈出的Resource窗口中看到設(shè)備支持的所有管線,并通過(guò)右側(cè)的幾個(gè)按鈕來(lái)讀/寫指定管線,觀察主機(jī)與設(shè)備的數(shù)據(jù)交換過(guò)程。Win Driver工具軟件生成的驅(qū)動(dòng)程序提供了一些間接控制設(shè)備硬件的接口函數(shù),可以完成USB通信的大部分功能,現(xiàn)將Win 。開(kāi)啟設(shè)備之后,就可以顯示設(shè)備和管線信息等USB設(shè)備的固有屬性。 Win Driver庫(kù)函數(shù)函數(shù)名功 能USB_RegisterWin DriverWin Driver注冊(cè),所有程序必須調(diào)用USB_Open打開(kāi)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)試。USB基本功能電路調(diào)試通過(guò)以后,再加入擴(kuò)展功能模塊來(lái)實(shí)現(xiàn)完整的系統(tǒng)。 系統(tǒng)硬件測(cè)試系統(tǒng)硬件搭建完畢以后,需要對(duì)硬件調(diào)試。首先用眼睛看電路板是否有虛焊、脫焊,有問(wèn)題的地方重新焊接;然后對(duì)照電路原理圖,分模塊以系統(tǒng)的核心器件為中心,發(fā)散到外圍器件,利用萬(wàn)用表,認(rèn)真檢查每一條線走的是否正確,保證線路的連接沒(méi)有問(wèn)題;電路線路沒(méi)有問(wèn)題后,將電路板上電,然后根據(jù)系統(tǒng)電路的特點(diǎn),利用萬(wàn)用表測(cè)試,看每一點(diǎn)輸出的電壓是否正常。對(duì)于本系統(tǒng),主要看單片機(jī)系統(tǒng)是否工作。經(jīng)過(guò)檢測(cè)驗(yàn)證,發(fā)現(xiàn)單片機(jī)正常工作。而對(duì)于D12芯片的檢測(cè),需要等到軟件程序設(shè)計(jì)完畢以后,在系統(tǒng)的整體調(diào)試中才能進(jìn)行。一開(kāi)始由于將電源線和地線搞混淆了,電路板上電后,發(fā)現(xiàn)芯片溫度非常高,經(jīng)過(guò)仔細(xì)檢查很快排除了這個(gè)錯(cuò)誤。通過(guò)系統(tǒng)硬件檢測(cè),排除了硬件電路上的問(wèn)題,為系統(tǒng)的調(diào)試打好基礎(chǔ)。本系統(tǒng)軟件程序包括三塊:固件程序、驅(qū)動(dòng)程序以及應(yīng)用程序。以上軟件程序的調(diào)試都是在硬件電路的基礎(chǔ)上進(jìn)行的,所以本系統(tǒng)的軟件調(diào)試也可以成為系統(tǒng)測(cè)試。設(shè)備固件程序的功能側(cè)重于設(shè)備的列舉和簡(jiǎn)單的中斷方式數(shù)據(jù)傳輸。為方便測(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ī)查詢來(lái)時(shí),設(shè)備就把這個(gè)數(shù)據(jù)傳送給主機(jī)。這個(gè)計(jì)數(shù)值隨時(shí)通過(guò)系統(tǒng)板上的8位LED顯示出來(lái)。當(dāng)系統(tǒng)的固件完成后,就可以用設(shè)備配合自己開(kāi)發(fā)的軟件工具來(lái)做一些簡(jiǎn)單的USB接口實(shí)驗(yàn),觀察設(shè)備與主機(jī)之間的數(shù)據(jù)交換過(guò)程。在Win Driver的界面下,可以直接對(duì)USB設(shè)備的管線進(jìn)行讀/寫控制,控制并觀察USB總線上的數(shù)據(jù)傳輸,起到調(diào)試的作用。其中,Log顯示主機(jī)與通信的詳細(xì)信息,Resource中可以實(shí)現(xiàn)與設(shè)備通信的功能。選中Pipe81時(shí),單擊Listen to Pipe按鈕監(jiān)聽(tīng)這個(gè)管線,就可以在Log窗口中看到設(shè)備的計(jì)數(shù)值不停發(fā)生變化,相應(yīng)地設(shè)備電路板上的LED也開(kāi)始顯示計(jì)數(shù)顯示;再點(diǎn)擊Stop Listen,則停止監(jiān)聽(tīng)。這里可以設(shè)置向設(shè)備發(fā)送一個(gè)Setup包,以讀取或?qū)懭肴舾蓴?shù)據(jù)。本系統(tǒng)在生成驅(qū)動(dòng)程序的過(guò)程中,檢測(cè)不到D12芯片的ID號(hào),無(wú)法生成驅(qū)動(dòng),PC機(jī)只能檢測(cè)到USB設(shè)備,不能正常地和PC機(jī)進(jìn)行數(shù)據(jù)傳輸。系統(tǒng)設(shè)計(jì)過(guò)程中涉及到的技術(shù)如下:1) USB技術(shù)2) 單片機(jī)的C語(yǔ)言程序編寫3) 底層驅(qū)動(dòng)開(kāi)發(fā)技術(shù)在該系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)過(guò)程中,本人做了以下的工作:第一階段:收集、閱讀和分析資料,通過(guò)不斷的分析比較,尋求一種比較完善的設(shè)計(jì)方法,從理論上找出了本系統(tǒng)設(shè)計(jì)的依據(jù)。包括由51單片機(jī)與PDIUSBD12組成的基本功能模塊的設(shè)計(jì)和調(diào)試,系統(tǒng)擴(kuò)展功能模塊的設(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)。這個(gè)階段的工作難度和強(qiáng)度較大,是本系統(tǒng)設(shè)計(jì)的關(guān)鍵。第五階段:論文的撰寫。自己系統(tǒng)電路設(shè)計(jì)能力得到了提高,從USB協(xié)議的了解,到單片機(jī)的熟練運(yùn)用;從方案的分析設(shè)計(jì),到系統(tǒng)的具體設(shè)計(jì)實(shí)現(xiàn);從運(yùn)用Protel的電路圖繪制,到實(shí)際電路的焊接;從軟件編程語(yǔ)言的運(yùn)用,到系統(tǒng)電路的檢測(cè)調(diào)試。還需要進(jìn)一步加強(qiáng)完善通訊的各種測(cè)試方法手段,從而建立與PC機(jī)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1