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

正文內(nèi)容

基于usb數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)(參考版)

2024-12-11 09:44本頁面
  

【正文】 本系統(tǒng)中需要編寫 USB 驅(qū)動程序在 USB 驅(qū)動過程中, USB 只需要實(shí)現(xiàn)數(shù)據(jù)的采集和讀取而不需要具體的復(fù)雜操作,因此,按照 Driverworks 的程序向?qū)б徊讲缴a(chǎn)源文件,最后編譯生成 .SYS 文件即可。類 KPnPDevice 是類 Kdevice 的子類,用來支持 WDM 環(huán)境中驅(qū)動程序的即插即用,它也是一個(gè)虛基類,必須派生。類 Kdriver 是一個(gè)虛基類,開發(fā)人員必須從類 Kdriver 中產(chǎn)生一個(gè)派生類來建立驅(qū)動程序框架。 DriverWorks 對驅(qū)動程序的例程調(diào)用等進(jìn)行了 C++類封裝。用 DriverWorks 開發(fā)驅(qū)動程序還需要安裝 DDK 和VisualC++,在 VisualC++ 的開發(fā)環(huán)境中進(jìn)行驅(qū)動的編寫和編譯。 DriverWorks 自己不能編譯開發(fā)驅(qū)動程序代碼,它只是對 DDK 例程函數(shù)調(diào)用的 C++封裝,這樣就減少了編程人員的重復(fù)編碼。 驅(qū)動程序的源代碼分析 Windows 驅(qū)動程序的開發(fā)軟件很多,但都離不開 DDK(Driver Develop Kit)。配置管理器調(diào)用驅(qū)動程序的 AddDevice 函數(shù)。 USB 總線驅(qū)動程序自動檢測新插入的 USB 設(shè)備??梢园? 看作是接收 URB 的實(shí)體,對USBD 的調(diào)用被轉(zhuǎn)化為帶有主功能代碼為 :IRPesMJeeINTERNALDEvICEcoNTRoL 的 I 妙。 USB 總線驅(qū)動程序名是。 USB 驅(qū)動程序完全遵從 WDM 模型。在 AddDevice 例程里還應(yīng)有設(shè)備鏈接名或接口 (GUID)。 WDM 驅(qū)動程序的另一個(gè)重要的例程是 AddDevice 例程。 DriverEntry 例程需要提供 IRP 處理例程指針表。 WDM 驅(qū) 動程序的入口例程是 DriverEntry,這是需要實(shí)現(xiàn)的第一個(gè)例程。 Windows2021 是基于對象管理,每一個(gè)驅(qū)動對應(yīng)于一個(gè)設(shè)備對象。驅(qū)動程序間的訪問是通過IRP(I/O Request Packet)來傳遞的。設(shè)備驅(qū)動程序中可以有下層過濾 器驅(qū)動層,也可以有上層過濾器驅(qū)動程序,他們是可選的,可以實(shí)現(xiàn)特定的操作如防火墻就是一種過濾器驅(qū)動程序,它可以對外部系統(tǒng)的訪問進(jìn)行限制。 天津職業(yè)技術(shù)師范大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì) 24 圖 WDM 分層結(jié)構(gòu)示意圖 在示意圖中,處于最底層的是總線驅(qū)動程序。 WDM 和 USB 驅(qū)動程序的介紹 WDM(Windows Driver Model)是微軟提出的視窗操作系統(tǒng)的驅(qū)動模型,支持分層管理和面向?qū)ο?。?PCI枚舉器發(fā)現(xiàn)了 USB 總線主控制器之后,它會自動裝入相關(guān)的 驅(qū)動程序。 文件就是 Windows 系統(tǒng)中的 USB 類驅(qū)動程序,它使用 來訪問通用的主控制器接口設(shè)備,或者使用 訪問開放式主控制器接口設(shè)備。 IEEE1394 總線驅(qū)動程序用于枚舉和控制 IEEE1394 高速總線。主控制器驅(qū)動程序是訪問兩種類型的 USB 總線設(shè)備的標(biāo)準(zhǔn)。 PnPISA 總線驅(qū)動程序?qū)梢允褂眉床寮从门渲玫?ISA 設(shè)備進(jìn)行枚舉和配置。 Windows 系統(tǒng)提供了 PCI、 PnPISA、 USB 和 IEEE1394 總線驅(qū)動程序。例如,一個(gè)游戲桿的驅(qū)動程序可以允許任一個(gè)應(yīng)用程序來 使用一個(gè)游戲桿,或者它可以為某個(gè)應(yīng)用程序而保留以供其獨(dú)占使用。與其他的底層驅(qū)動程序一樣, WDM 驅(qū)動程序負(fù)責(zé)在一個(gè)特權(quán)層實(shí)現(xiàn)應(yīng)用程序和操作系統(tǒng)的通信。這些驅(qū)動程序就是 WDM(Windows Driver Model), 其擴(kuò)展名一般為 .sys。驅(qū)動程序采用了分層結(jié)構(gòu)。在 Windows 環(huán)境中,定義了 Windows 設(shè)備驅(qū)動程序模型,其中設(shè)立了兩種模式,即用戶模式和內(nèi)核模式。 天津職業(yè)技術(shù)師范大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì) 23 flaga=0。 EP2BCL=LSB(512)。 //標(biāo)志設(shè)為 0 EP2BCH=MSB(512)。 IN2BUF[flagl=addr[flag]*2 一 5。EP2FIFOBUF)。EP2FIFOBUF)。 Add=MEMORY。 //將 PA3 引腳置為低電平 Int i。OE 引腳為高電平時(shí)無效。讀完 512 個(gè)數(shù)據(jù)后,緩沖區(qū)滿,這時(shí),可以開始傳送數(shù)據(jù),由于 USB 總線上是以字節(jié)為單位傳輸數(shù)據(jù),而數(shù)據(jù)是按照字來記數(shù),因此,把讀取的數(shù)據(jù)記數(shù)器放 大兩倍,然后把字節(jié)數(shù)變量的高字節(jié)和低字節(jié)分別賦給端點(diǎn) 2 的傳輸字節(jié)計(jì)數(shù)器 EPZBCH 和EPZBCL,完成該過程之后,程序根據(jù)主機(jī)單位請求,開始自動傳送數(shù)據(jù)。 EP2BCL=LSB(512)。 } EP2BCH=MSB(512)。i++) {addr[i]=IN2BUF[i]。EP2FIFOBUF)。bmEP2FULL)) { //檢查 EPZ 數(shù)據(jù)是否滿 AUTOPTRHI“ MSB(amp。 Read_data(void)。 BYTExdata*addr。在 USB 循環(huán)調(diào)用的過程中不斷執(zhí)行用戶程序,不斷進(jìn)行數(shù)據(jù)的傳輸。 //使能雙緩沖自動指針 Rwnen=TRUE。 SYNCDELAY。 SYNCDELAY。 //EP8 未使用 SYNCDELAY。 //EP6 為 bulk 傳輸方式,方向 :輸出,雙緩沖 SYNCDELAY。 //EP4 未使用 SYNCDELAY。 //EP2 為 bulk 傳輸方式,方向 :輸入,雙緩沖 SYNCDELAY。 //EP1 為 bulk 傳輸方式,方向 :輸入 SYNCDELAY。 EP1OUTeFG=oxAo。~bmCLKSPD)/bmCLKSPDI)。 //清除 SUDAV 標(biāo)志位 } } ?????? (2)用戶定義功能程序 分析 下面分別介紹主程序中的兩個(gè)函數(shù) :TD_Init()函數(shù)和 TD_Poll()函數(shù) l)TD_Init()函數(shù) TD_Init()是 C8051F320 的初始化程序,它是在重新枚舉和開始任務(wù)分配前調(diào)用的。如下 : Whlle(TRUE) //主循環(huán) { if(GotSUD) //等待 SUDAV { SetupCommand()。StringDser。FullSPeedConfigDser。HighSPeedConfigDser。DevieeQualDser。DevieeDser。 //清除得到裝載數(shù)據(jù)標(biāo)志位 然后初始化設(shè)備,代碼如下 : //初始化用戶設(shè)備 TD_Init()。 //使遠(yuǎn)程喚醒無效 Selfpwr=FALSE。程序首先是全局變量的初始化,如下 : //初始化全局狀態(tài)變量 Sleep=FALSE。USB 總線規(guī)定對于任一種管道類型,數(shù)據(jù)經(jīng)過總線時(shí)要進(jìn)行分組,但是最終對一個(gè)總線操作的數(shù)據(jù)負(fù)載中傳送的數(shù)據(jù)進(jìn)行分析和解釋工作則要由客戶軟件和使用該管道的功能模塊來完成。 4)數(shù)據(jù)的傳輸 USB 總線通過位于同主機(jī)上的客戶軟件相對應(yīng)的緩存區(qū)和 USB 總線設(shè)備上的端點(diǎn)之間的管道來傳送數(shù)據(jù)。這時(shí),枚舉過程就完成了。然后設(shè)備與主機(jī)進(jìn)行通信,同時(shí)主機(jī)繼續(xù)從設(shè)備描述符、配置描述符及其他的描述符中得知設(shè)備的信息。 圖 開始建立堆棧并使能中斷主循環(huán)設(shè)備接入總線復(fù)位枚舉數(shù)據(jù)接收和傳送端 點(diǎn) 0是 否 收 到 一 個(gè)S E T U P 包根 據(jù) 指 令 執(zhí)行 s e t u p 包返 回天津職業(yè)技術(shù)師范大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì) 19 3)枚舉 主機(jī)發(fā)送一個(gè)后跟創(chuàng)包的 SETUP 包 ,這個(gè)包從地址 O 讀取設(shè)備描述符。 2)總線復(fù)位 當(dāng)有新的 USB 總線設(shè)備接入時(shí),主機(jī)檢測到這個(gè)新 USB 總線設(shè)備并復(fù)它。 (5)固件的執(zhí)行 對于所有的 USB 人機(jī)接口設(shè)備似 ID)來說,它們的應(yīng)用都遵循著同樣的啟動過程,這個(gè)過程如圖 所示。芯片也必須做同樣的工作來接收特 征報(bào)表。當(dāng)新的數(shù)據(jù)到達(dá)時(shí),中斷通常會通知設(shè)備這個(gè)事件,固件的中斷服務(wù)程序做相應(yīng)的處理工作。主機(jī)總是用 Set_Report 控制請求來發(fā)送特征報(bào)表。如果設(shè)備沒有數(shù)據(jù)要發(fā)送,則發(fā)送一個(gè) NAK 來響應(yīng)請求。對中斷做出響應(yīng),設(shè)備固件需要在它的傳輸緩沖區(qū)里放好請求的數(shù)據(jù),然后配置成響應(yīng)中斷水請求。設(shè)備固件代碼必須有補(bǔ)充的代碼來對主機(jī)的請求做出響應(yīng)。主機(jī)使用控制傳輸來發(fā)送和接收包括其他配置數(shù)據(jù)或其他沒有嚴(yán)格時(shí)間要求的數(shù)據(jù)特征報(bào)表。 天津職業(yè)技術(shù)師范大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì) 16 表 HID 描述符 偏移量 字段 大?。?B) 描述 0 bLength 1 描述符表示的長度 1 bDescriptor 1 21h 表示 HID 類 2 bcdHID 2 HID 規(guī)范發(fā)布號 4 bCountyCode 1 識別本地硬件的數(shù)字化表示 5 bNumDescriptor 1 支持的從屬類描述符的數(shù)目 6 bDescriptorType 1 類描述符類型 7 wDescriptorType 2 報(bào)表描述符的長度 9 bDescriptorType 2 識別描述符類型的常數(shù)。但是, 如果設(shè)備沒有中斷 OUT 端點(diǎn),則需要支持 Set_Report 來從主機(jī)接收數(shù)據(jù)。表 列出了些請求。報(bào)表描述符的內(nèi)容和長度隨設(shè)備而不同,可以而簡潔,也可長而復(fù)雜。主機(jī)通過發(fā)送Get_Descriptor 請求來獲取這個(gè)描述符,默認(rèn)的報(bào)表數(shù)值為 00H。 識別 HID 設(shè)備 由表 HID 描述符 表 41 給出了 HID 描述符。輸入報(bào)表發(fā)送數(shù)據(jù)到主機(jī),輸出報(bào)表從主機(jī)接收數(shù)據(jù),特征報(bào)表可以在兩個(gè)方向傳輸數(shù)據(jù)。 HID 設(shè)備可能支持一個(gè)或多個(gè)報(bào)表。要接收數(shù)據(jù),固件必須支持 Set_report 控制傳輸和中斷 OUT 傳輸。另外,固件程序中要包括設(shè)備描述符,它定義了傳送和接收設(shè)備數(shù)據(jù)的格式。 固件程序的設(shè)計(jì) 固件基礎(chǔ) 對于主機(jī)驅(qū)動和人機(jī)接口設(shè)備 (HID)通信,設(shè)備必須使用相應(yīng)的固件程序來滿足一定的要求,通過固件程序的調(diào)度,主機(jī)才可以得到設(shè)備的描述符以及完成端點(diǎn)數(shù)據(jù)的傳輸。為了保證 C8051F320 的芯片中模擬與數(shù)字地分開,在電源的輸入端用 2 歐姆的電阻,來分隔電路的電源部分 為了保證電路中采用外部電源供電,由于電源電壓可以超過 5V,采用短路帽 P1 隔開兩部分電源。C8051F320 芯片的工作的電壓是 +,而系統(tǒng)使用總線供電 ,因此FB4ON/OFF5GND3IN1OUT2U1 LM2576ADJD1IN4007D2IN4007D3IN4007D4IN4007C2C1470UF/50V100KR1S1100uHL1D5IN54081KR210KR3C31000UF/50VC4~12VOUTGND天津職業(yè)技術(shù)師范大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì) 14 就需要電源轉(zhuǎn)換,以滿足系統(tǒng)中各個(gè)部分所需要的電源,下面介紹由 +5V 轉(zhuǎn)換為+ 電源的設(shè)計(jì)。 L 表示數(shù)據(jù)是控制指令; C 固定為 0 第二字節(jié):表示數(shù)據(jù)的高 4 位,格式是 DDDD0000 第三字節(jié):表示數(shù)據(jù)的低 4 位,格式是 0000DDDD 電源模塊 圖 在此系統(tǒng)中,一共需要兩種大小不同的供電電源,一個(gè)是 AD0809 需要 +5V供電電源,在此我們選用效率比較高的 LM2576ADJ 的芯片來設(shè)計(jì)電路電源,電路如圖 。 輸出- 15v 電源給 V0 提供驅(qū)動電源 背光電源 LED 正極 背光電源 LED 負(fù)極 基本 電路圖 與時(shí)序圖 ? 基本連接電路圖如下圖 圖 1234567891011121314151617181920J4SM12864IGNDVCCRSR/WEDB0DB1DB2DB3DB4DB5DB6DB7CS1CS2RSTVEEELENACA1B2TAP3R110K天津職業(yè)技術(shù)師范大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì) 13 ? 串行連接時(shí)序圖 圖 第一字節(jié):作用是控制數(shù)據(jù):其格式是: 11111ABC。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。 LCD 概述 帶中文字庫的 128X64 是一種具有 4 位 /8 位并行、 2 線或 3 線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字 庫的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為 1286
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1