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

正文內容

基于usb數據采集系統(tǒng)設計-資料下載頁

2025-11-28 09:44本頁面

【導讀】要求也越來越高。傳統(tǒng)的通信方式由于傳輸速度慢、抗干擾能力弱、安裝麻煩等原因。上問題,因此串行總線技術在計算機系統(tǒng)及通信設備中迅速得到了廣泛的應用??蚣芎透鱾€分芯片的選擇。整個系統(tǒng)包括硬件設計和軟件設計兩部分,實現(xiàn)數據高速。轉換和采集、數據顯示、數據保存以及數據打印等功能。接口將數據傳送給PC機。硬件設計部分主要包括主控制器外圍。電路設計與模數轉換器AD0809的連接、電源設計部分等。系統(tǒng)軟件部分包括USB固件程序、設備的驅動程序和用戶界面程序。好,能達到設計的預期效果。

  

【正文】 Whlle(TRUE) //主循環(huán) { if(GotSUD) //等待 SUDAV { SetupCommand()。 //指向 setup 指令 GotSUD=FALSE。 //清除 SUDAV 標志位 } } ?????? (2)用戶定義功能程序 分析 下面分別介紹主程序中的兩個函數 :TD_Init()函數和 TD_Poll()函數 l)TD_Init()函數 TD_Init()是 C8051F320 的初始化程序,它是在重新枚舉和開始任務分配前調用的。其初始化工作主要完成以下內容 : ①設置的 CPU 的時鐘頻率和 slaveFIFO 接口時鐘頻率,均為 48MHz ②設置傳輸方式為 BULK 方式,并設置相關的端點的傳輸方向其程序代碼如下 : Void TD_Init(void) //開始時調用 { //設置 CPU 的時鐘為 48MHz CPUCS=((CPUCSamp。~bmCLKSPD)/bmCLKSPDI)。 //設置 slaveFIFO 接口時鐘為 48MHz IFCONFIG}=0x40。 EP1OUTeFG=oxAo。 //EP1 為 bulk 傳輸方式,方向 :輸出 EPImCFG=OxE2。 //EP1 為 bulk 傳輸方式,方向 :輸入 SYNCDELAY。 EPZCFG=oxE2。 //EP2 為 bulk 傳輸方式,方向 :輸入,雙緩沖 SYNCDELAY。 EP4CFG=0x20。 //EP4 未使用 SYNCDELAY。 EP6cFG=0xA2。 //EP6 為 bulk 傳輸方式,方向 :輸出,雙緩沖 SYNCDELAY。 天津職業(yè)技術師范大學 2021屆本科生畢業(yè)設計 21 EPSCFG=0x20。 //EP8 未使用 SYNCDELAY。 EPZBCL=0x80。 SYNCDELAY。 EPZBCL=0x80。 SYNCDELAY。 AUTOPTRSETUP=0x01。 //使能雙緩沖自動指針 Rwnen=TRUE。 //使能遠程喚醒 } 2)TDPoll()函數 TDPoll()函數是用戶自己要實現(xiàn)功能函數,在這個函數中,系統(tǒng)實現(xiàn)了將數據寫入輸出端點緩沖區(qū)內,等待 PC 機的讀取。在 USB 循環(huán)調用的過程中不斷執(zhí)行用戶程序,不斷進行數據的傳輸。其程序代碼如下 : Void TD_Poll(void) //當設備閑置 時重復調用 { Int i。 BYTExdata*addr。 Addr=MEMORY。 Read_data(void)。 if(!(EP2468TATamp。bmEP2FULL)) { //檢查 EPZ 數據是否滿 AUTOPTRHI“ MSB(amp。EP2FIFOBUF): AUTOPTRLI=LSB(amp。EP2FIFOBUF)。 //通過自動指針將 EPZIN 緩沖區(qū)的數據傳送給 EP6OUT for(i=Ox0000:i512。i++) {addr[i]=IN2BUF[i]。 OUT6BUF[11=addr[i]。 } EP2BCH=MSB(512)。 SYNCDELAY。 EP2BCL=LSB(512)。 //重新配置 EP2 } 天津職業(yè)技術師范大學 2021屆本科生畢業(yè)設計 22 在 TD_poll()函數中執(zhí)行讀取數據傳輸程序,首先判斷緩沖區(qū)是否滿標志,如果不滿,則開始讀取 8 位數據,也就是刀 D 的數據,并把緩沖區(qū)的地址指針加 1,保證數據不會被后來的數據覆蓋,并保存在下一個地址中。讀完 512 個數據后,緩沖區(qū)滿,這時,可以開始傳送數據,由于 USB 總線上是以字節(jié)為單位傳輸數據,而數據是按照字來記數,因此,把讀取的數據記數器放 大兩倍,然后把字節(jié)數變量的高字節(jié)和低字節(jié)分別賦給端點 2 的傳輸字節(jié)計數器 EPZBCH 和EPZBCL,完成該過程之后,程序根據主機單位請求,開始自動傳送數據。 3)數據讀取函數 在硬件電路中采用 USB 控制的方式讀數據,即用 C8051F320 的 PA3 引腳來控制 C8051F320 的 OE 引腳, OE 引腳為低電平時 AD0809 將轉換結果鎖存,C8051F320 則可讀取轉換結果 。OE 引腳為高電平時無效。數據讀取函數名Read_data(void),主要完成 C8051F320 將 AD0809 轉換好的數據讀進來,其程序為 : Read_data(void) //讀 AD 的轉換結果 . { PA3=0。 //將 PA3 引腳置為低電平 Int i。 BYTExdata*addr。 Add=MEMORY。 if(flag!=512) { //檢查 EPZ 數據是否沒滿 AUTOPTRHI=MSB(amp。EP2FIFOBUF)。 AUTOPTRLI=LSB(amp。EP2FIFOBUF)。 addr[flag]=PB。 IN2BUF[flagl=addr[flag]*2 一 5。 //將 數據乘以 2 減 5 Flag=flag+2: } else { flag=O。 //標志設為 0 EP2BCH=MSB(512)。 SYNCDELAY。 EP2BCL=LSB(512)。 //重新配置 EPZ } PA3=1。 天津職業(yè)技術師范大學 2021屆本科生畢業(yè)設計 23 flaga=0。 } 驅動程序設計 主機與外設通過 USB 接口的通信是通過驅動程序來實現(xiàn)的。在 Windows 環(huán)境中,定義了 Windows 設備驅動程序模型,其中設立了兩種模式,即用戶模式和內核模式。應用程序只能工作在用戶模式下,而驅動程序大多運行在內核模式下。驅動程序采用了分層結構。 USB 總線設備驅動程序必須遵循由 Microsoft 為 Windows98 及其以后版本所定義的 Win32 驅動程序模型。這些驅動程序就是 WDM(Windows Driver Model), 其擴展名一般為 .sys。由于它是內核態(tài)程序,采用了分層處理的方式,因此,不需要自接和硬件打交道。與其他的底層驅動程序一樣, WDM 驅動程序負責在一個特權層實現(xiàn)應用程序和操作系統(tǒng)的通信。一個 WDM 驅動程序可以允許或否定一個應用程序對一個設備提出的訪問。例如,一個游戲桿的驅動程序可以允許任一個應用程序來 使用一個游戲桿,或者它可以為某個應用程序而保留以供其獨占使用。 Windows 為其他底層設備驅動程序和 WDM 驅動程序所保留的能力還包括對硬件中斷的響應和 DMA 傳輸。 Windows 系統(tǒng)提供了 PCI、 PnPISA、 USB 和 IEEE1394 總線驅動程序。 PCI總線驅動程序枚舉和配置 PCI 總線上的設備。 PnPISA 總線驅動程序對可以使用即插即用配置的 ISA 設備進行枚舉和配置。 USB 總線驅動程序則用于枚舉和控制 USB 總線。主控制器驅動程序是訪問兩種類型的 USB 總線設備的標準。 USB總線客戶驅動程序可以通過使用 IOCTL,由 USB 類驅動程序來訪問 USB 總線設備。 IEEE1394 總線驅動程序用于枚舉和控制 IEEE1394 高速總線。 USB 總線設備驅動程序使用標準 Windows 系統(tǒng) USB 類驅動程序訪 USBDI(USB 驅動程序接口 )。 文件就是 Windows 系統(tǒng)中的 USB 類驅動程序,它使用 來訪問通用的主控制器接口設備,或者使用 訪問開放式主控制器接口設備。 是根集線器和外部集線器的 USB 總線驅動程序。在 PCI枚舉器發(fā)現(xiàn)了 USB 總線主控制器之后,它會自動裝入相關的 驅動程序。這也就是本章第一節(jié)中所要說明的,只要啟動了主板 CMOS 中的 USB 總線功能,就會在設備管理器中見到“通用串行總線”的標記和字樣。 WDM 和 USB 驅動程序的介紹 WDM(Windows Driver Model)是微軟提出的視窗操作系統(tǒng)的驅動模型,支持分層管理和面向對象。圖 是 WDM 分層結構的示意圖。 天津職業(yè)技術師范大學 2021屆本科生畢業(yè)設計 24 圖 WDM 分層結構示意圖 在示意圖中,處于最底層的是總線驅動程序??偩€驅動程序由硬件廠商提供,管理總線上設備的識別和操作,如 PIC 總線。設備驅動程序中可以有下層過濾 器驅動層,也可以有上層過濾器驅動程序,他們是可選的,可以實現(xiàn)特定的操作如防火墻就是一種過濾器驅動程序,它可以對外部系統(tǒng)的訪問進行限制。功能驅動程序就是通常意義上所說的設備驅動程序。驅動程序間的訪問是通過IRP(I/O Request Packet)來傳遞的。 I/O 管理器給最上一層驅動程序發(fā)送 IRP,該驅動程序若能處理就直接返回,否則將其傳給下一層,以次類推,最后到達總線驅動程序。 Windows2021 是基于對象管理,每一個驅動對應于一個設備對象。有設備堆棧,設備堆棧指導著如何一層一層向下傳遞 IRP。 WDM 驅 動程序的入口例程是 DriverEntry,這是需要實現(xiàn)的第一個例程。在驅動程序加載后就會馬上執(zhí)行例程 DriverEntry。 DriverEntry 例程需要提供 IRP 處理例程指針表。開發(fā)人員可以在 DriverEniry 里加入自己的初始化代碼。 WDM 驅動程序的另一個重要的例程是 AddDevice 例程。 AddDeviee 例程負責生成功能設備對象,上層驅動程序可以通過訪問該功能設備對象來實現(xiàn)對驅動功能的調用。在 AddDevice 例程里還應有設備鏈接名或接口 (GUID)。通過設備鏈接名或接口,應用軟件可以訪問設備。 USB 驅動程序完全遵從 WDM 模型。與其它設備驅動程序一樣, USB 設備驅動程序直接通過 USB 總線驅動程序來訪問硬件。 USB 總線驅動程序名是。設備驅動程序僅依靠創(chuàng)建 URB(USB 請求塊 ),并把 URB 提交到總線驅動程序來完成硬件操作??梢园? 看作是接收 URB 的實體,對USBD 的調用被轉化為帶有主功能代碼為 :IRPesMJeeINTERNALDEvICEcoNTRoL 的 I 妙。然后 USBD 再調度總線時間,發(fā)出 URB 中的指定操作。 USB 總線驅動程序自動檢測新插入的 USB 設備。然后它讀 取設備內的設備描述符以查明插入的是何種設備,描述符中的廠商和產品FiDOFiDOFD OFD OIRP上層過濾驅動程序功能驅動程序下層過濾驅動程序總線驅動程序天津職業(yè)技術師范大學 2021屆本科生畢業(yè)設計 25 標識以及其它的描述符一同決定具體安裝哪一個驅動程序。配置管理器調用驅動程序的 AddDevice 函數。 AddDeviee 創(chuàng)建設備對象,把設備對象連接到驅動程序堆棧上,最后,配置管理器向驅動程序發(fā)送一個即插即用請求 :IRP_MN_START_DEVICE。 驅動程序的源代碼分析 Windows 驅動程序的開發(fā)軟件很多,但都離不開 DDK(Driver Develop Kit)。本文講述的 USB 驅動程序是用 DriverWorks 開發(fā)的。 DriverWorks 自己不能編譯開發(fā)驅動程序代碼,它只是對 DDK 例程函數調用的 C++封裝,這樣就減少了編程人員的重復編碼。 DriverWorks 在對 DDK 例程函數進行封裝的同時也盡可能做到執(zhí)行代碼的高效率。用 DriverWorks 開發(fā)驅動程序還需要安裝 DDK 和VisualC++,在 VisualC++ 的開發(fā)環(huán)境中進行驅動的編寫和編譯。DriverWorks 是包含在 Driverstudio 軟件中, Driverstudio 還提供了強大的驅動程序調試工具。 DriverWorks 對驅動程序的例程調用等進行了 C++類封裝。 類 Kdriver主要對 DriverEntry 例程進行了封裝。類 Kdriver 是一個虛基類,開發(fā)人員必須從類 Kdriver 中產生一個派生類來建立驅動程序框架。類 KDeviee 則是對 AddDevice例程和 IRP 處理例程進行了封裝。類 KPnPDevice 是類 Kdevice 的子類,用來支持 WDM 環(huán)境中驅動程序的即插即用,它也是一個虛基類,必須派生。開發(fā)人員可以重載類 KPnPDevice 的成員函數。 本系統(tǒng)中需要編寫 USB 驅動程序在 USB 驅動過程中, USB 只需要實現(xiàn)數據的采集和讀取而不需要具體的復雜操作,因此,按照 Driverworks 的程序向導一步步生產源文件,最后編譯生成 .SYS 文件即可。 驅動程序采用接口方式來實現(xiàn)對設備的訪問, GUID 設為 {0xl220dd4,0xl480, 0x4172, {0x8b, 0
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1