




已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于USB接口的溫度傳感器設計方案第1章 緒論1.1 設計理念與背景 基于USB接口的溫度傳感器,就是利用USB接口實現單片機技術的溫度傳感器與PC機之間通信的溫度采集系統(tǒng),以提高溫度采集的準確度于精度。實現低成本、高可靠性、告訴的溫度數據采集和傳輸。在工業(yè)生產、科研及醫(yī)療等需要嚴格進行溫度控制的行業(yè)中,常常利用PC機對溫度進行監(jiān)控和處理,這就需要一種精度和自動化水平高、應用范圍廣的溫度采集手段,這就為基于單片機技術的溫度采集系統(tǒng)得到了普遍應用。這種溫度采集系統(tǒng)可以根據主機命令通過傳感器采集溫度信號,并通過放大轉換后經通訊接口上傳至主機,以進一步的顯示、分析和處理。溫度采集系統(tǒng)由溫度采集模塊和主機系統(tǒng)組成,之間通過總線接口進行通信。溫度采集模塊是以單片機及溫度傳感器為核心構成的智能系統(tǒng),具有完整的 信號采集、放大、A/D轉換、變換數據格式標準及執(zhí)行上位機命令等功能。主機系統(tǒng)用來實現對溫度采集模塊的控制,進行溫度數據的讀取,同時提供人機交互界面,實現對溫度數據的顯示、分析和處理等功能。而要實現主機系統(tǒng)的功能,則需要通過總線接口將對溫度采集模塊所采集到的溫度數據發(fā)送到主機系統(tǒng)來完成。隨著現代工業(yè)生產和科學研究對溫度數據采集的要求日益提高,傳輸速度、糾錯能力和操作安裝的簡易性是人們在使用溫度采集系統(tǒng)的過程中關注的目標,而數據通信技術則成為其中的關鍵技術。任何一種數據通訊技術都離不開接口,溫度采集系統(tǒng)采用何種接口進行通信是影響系統(tǒng)整體效率的重要因素之一。1.2 目前常用的總線接口(1)PCI PCI總線是Intel公司為Pentium處理器設計的一種新型標準總線,這種總線技術允許快速的內存,磁盤和視頻訪問。PCI總線結構的高傳輸速度限制了PCI接口的數量,一般只能有兩到三個(通常用于圖形和硬盤控制器)。最大傳輸速度為264Mbps(只能在基于Pentium處理器的系統(tǒng)中使用64位軟件才能達到)。1.3 USB2 遼寧科技大學信息技術學院本科畢業(yè)生畢業(yè)設計(論文) 第4頁 遼寧科技大學信息技術學院本科畢業(yè)生畢業(yè)設計(論文) 第31頁USB,Universal Serial Bus(通用串行總線),是一種新規(guī)格的快速、靈活的總線,是PC機和MAC記都支持的總線標準。在傳統(tǒng)的個人電腦領域中,外圍設備存在著許多問題,不管是ISA總線還是PCI總線,I/O地址沖突十分常見,都不能可靠地支持共享式中斷。同時,這些大多數都是不可以隨意插拔的,必須在開機前裝好才能正常使用。事實上,這種接口使設備的連接毫無靈活性可言。USB正是作為克服這些困難的一種解決方案而出現的。USB的主要特點如下:(1)速度快。USB有全速和低速兩種方式,主模式為全速模式,速率為12Mbps,還提供低速方式,速率為1.5Mbps。新推出的USB2.0協(xié)議提供最高達480Mbps的數據傳輸速率,可以適應各種不同類型的外設。(2)支持熱插拔和即插即用。所有的USB設備可以隨時的插入和拔離系統(tǒng),USB主機能夠動態(tài)的識別設備的狀態(tài),并自動給接入的設備分配地址和配置參數,添加、刪除設備完全不用關閉計算機,不必像過去那樣需要手動跳線和撥碼開關來設置新的外設。(3)易于擴展。如圖1所示。USB使用的是一種易于擴展的級聯星形拓撲結構,通過使用USB Hub(USB集成器)擴展可連接多達127個外設。標準USB電纜長度為3米(低速為5米)。通過Hub或中繼器可以使外設距離達到30米,可以使用多種連接方式進行擴展。復合設備主機根HUB設備設備HUBHUB設備設備設備設備圖2.1 USB總線物理拓撲結構(4)使用靈活。USB共有4種傳輸模式:控制傳輸(control)、同步傳輸(synchronization)、中斷傳輸(interrupt)、批量傳輸(bulk),適應不同設備的需要。在本系統(tǒng)中采用了控制傳輸和批量傳輸兩種方式。(5)能夠采用總線供電。普通使用串口、并口的設備都需要單獨的供電系統(tǒng),而USB設備則不需要,因為USB接口提供了內置電源。USB電源能向低壓設備提供最大5V,500mA的電源,從而降低了這些設備的成本并提高了性價比。(6)實現成本低。USB對系統(tǒng)與PC的集成進行了優(yōu)化,適合于開發(fā)低成本的外設。1.4 國內外發(fā)展現狀傳統(tǒng)上,數據的采集系統(tǒng)與獨立的機箱設備通過串口或 GPIB 接口與計算機連接組成。隨著基于計算機的測量技術的出現,數據采集設備可以通過PCI、ISA 或 PXI 連接到 PC 的數據總線。在 USB1.1 推出之前,支持 USB的功能模塊并不多,原因除了因為傳統(tǒng)的通信接口,如RS232, IEEE488等,一時難以退出應用領域外, 一些早期USB應用者因為平臺的實用性不強而步履艱難。 隨著 Windows98 對 USB驅動軟件(USBD)完善, 使其可提供對 USB的強有力的支持,對 USB 技術的發(fā)展起到重要推進作用。自此,市場上涌現出大批的 USB產品。在 1999 年初,在Intel開發(fā)者論壇大會上,與會者介紹了USB2.0規(guī)范,該規(guī)范的支持者除原有的成員外,又增加HP, Lucent 和PHILIPS 三個新成員。USB2.0 對 USB1.1 所規(guī)定的性能有所擴展,又向下兼容,數據的傳輸率將達到480Mbps?,F在,越來越多的測量系統(tǒng)包含有通過USB總線連接的測量設備。2004 年 5 月,NI 公司發(fā)起了一波“傳感器即插即用”(Sensors Plug&Play)行動,在針對靈巧的 TEDS (Transducer Electronic Data Sheet,傳感器電子數據表) 傳感器的IEEE 1451.4標準的基礎上推出了一系列數據采集產品。通過采用傳感器即插即用技術和新的USB數據采集設備, 工程師和科學家們可以創(chuàng)建一個從傳感器到軟件的完整的即插即用數據采集系統(tǒng)?,F在有許多廠商提供經過預先測試可以無縫地與傳感器即插即用硬件共同工作的傳感器,開發(fā)人員可以使用NI LabVIEW、Microsoft Visual Basic和C來開發(fā)軟件應用,以迅速、方便地進行測量。隨著 USB 數據采集設備繼續(xù)減小體積和降低功耗, 它們也變得更加便攜和經濟。通過兼容傳感器即插即用特性和多種擴展技術,NI 公司 USB 數據采集設備的功能更超越了它們自己本身。2006 年 VDC 公司一份關于數據采集發(fā)展趨勢的研究表明,幾乎半數受訪者計劃購買一件 USB數據采集設備。隨著USB On-The-Go 和無線 USB等新技術的出現, 未來 USB在測量和自動化領域的應用必定無可限量。1.5 課題的目標及意義 基于 USB 接口的溫度采集系統(tǒng),不僅僅是將 USB 接口用來傳輸數據,它需要依據 USB協(xié)議進行數據格式的轉換; 底層硬件設備與操作系統(tǒng)之間需要以驅動程序為橋梁;驅動程序要實現與 Windows 系統(tǒng)底層核心機制相交互的功能。因此,研究 USB 接口技術的內核原理,掌握系統(tǒng)設備端 USB 接口設計和固件編程方法,及主機端設備驅動程序和應用程序的開發(fā)技術就成其關鍵。 本課題以研究基于 USB接口溫度采集系統(tǒng)的開發(fā)和應用為主要目的, 在深入分析研究 USB 協(xié)議和設備構架的基礎上,對基于 USB 接口的溫度采集系統(tǒng)進行硬件設計和軟件編程。使溫度采集模塊采集來的數據通過 USB 接口傳送到主機系統(tǒng),使客戶應用程序通過驅動程序得到數據,并根據需要對數據進行處理。意義在于深入研究USB接口技術的內核,掌握溫度采集系統(tǒng)的硬件設計、固件程序、驅動程序及應用程序的開發(fā)等關鍵技術,積累設備開發(fā)經驗,為今后溫度采集系統(tǒng)更好地應用奠定基礎。第2章 硬件設計2.1 基于USB接口的溫度傳感器的工作原理2.1.1 工作原理圖圖2.2 基于USB接口的溫度傳感器2.1.2 工作原理首先由DS18B20單總線溫度傳感器采集溫度,通過單片機,經單片機驅動程序將溫度信號送入PDIUSBD12芯片及外圍設備,再由USB接口與PC機進行通信,并在PC機上顯示溫度。系統(tǒng)總體框架由4 部分構成:溫度采集器、USB接口、上位機驅動程序和上位機應用程序。溫度采集器是一個智能單片機系統(tǒng),它負責采集溫度數據,并把從上位機發(fā)送的數據傳輸命令從USB接口接收后解析執(zhí)行,再把數據值打包后通過 USB 接口發(fā)送到上位機等;USB接口負責把數據轉換成 USB 協(xié)議要求的格式來傳輸;驅動程序負責在上位機應用程序和溫度采集器專用代碼之間的轉換,把應用程序的數據通過USB接口發(fā)送到溫度采集器,并把溫度采集器傳來的數據發(fā)送給應用程序;應用程序負責把用戶的操作命令通知給驅動程序,并把溫度采集器送來的溫度數據通過驅動程序的轉換顯示給用戶。我將在下面幾節(jié)中介紹各硬件部分的功能。2.2 溫度采集部分DS18B20數字溫度計是DALLAS公司生產的1Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計,十分方便。 2.2.1 DS18B20數字溫度傳感器的外形及引腳說明SOIC封裝的DS18B20的引腳排列見圖3,其引腳功能描述見表1。圖2.3 TO-92封裝和SOIC封裝的DS18B20的引腳排列DS18B20采用3腳TO-92封裝或8腳SOIC封裝。圖3是其采用3腳TO-92封裝的底視圖及8腳SOIC封裝的引腳排列圖。其中GND接地;VDD為電源端;DQ是數據輸入/輸出端;其余為空腳。 序號名稱引腳功能描述123GNDDQ數據輸入/輸出引腳VDD地信號開漏單總線接口引腳。當被用在寄生電源下,也可以向器件提供電源。可選擇的VDD引腳。當工作于寄生電源時此引腳必須接地。2.2.2.DS18B20的性能及特點由DALLAS半導體公司生產的DS18B20型單線智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器,可廣泛用于工業(yè)、民用、軍事等領域的溫度測量 及控制儀器、測控系統(tǒng)和大型設備中。它具有體積小,接口方便,傳輸距離遠等特點,而且兼具如下幾個性能:適應電壓范圍3.05.5 V,在寄生電源方式下可由數據線供電。獨特的單線接口方式,DS8B20在與微處理器連接時,僅需要一根口線即可實現微處理器與DS18B20的雙向通信。DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫。DS8B20在使用中,不需要任何外圍元件,全部傳感原件及轉換電路集成在形如一只晶體管的集成電路內。測溫范圍:-55125,在-10+85時精度為0.5??删幊痰姆直媛蕿?12位,對應的可分辨溫度分別為0.50.250.125和0.0625,可實現高精度測溫。在9位分辨率時,最多在93.75ms內把溫度轉換為數字;12位分辨率時,最多在750ms內把溫度值轉換為數字,速度更快。測量結果直接輸出數字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。負壓特性,電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作2.2.3 DS18B20工作過程及時序數器1提供一頻率穩(wěn)定的計數脈沖。高溫度系數振蕩器是一個振蕩頻率對溫度很敏感的振蕩器,為計數器2提供一個頻率隨溫度變化的計數脈沖。初始時,溫度寄存器被預置成-55,每當計數器1從預置數開始減計數到0時,溫度寄存器中寄存的溫度值就增加1,這個過程重復進行,直到計數器2計數到0時便停止。初始時,計數器1預置的是與-55相對應的一個預置值。以后計數器1每一個循環(huán)的預置數都由斜率累加器提供。為了補償振蕩器溫度特性的非線性性,斜率累加器提供的預置數也隨溫度相應變化。計數器1的預置數也就是在給定溫度處使溫度寄存器寄存值增加1計數器所需要的計數個數。DS18B20內部的比較器以四舍五入的量化方式確定溫度寄存器的最低有效位。在計數器2停止計數后,比較器將計數器1中的計數剩余值轉換為溫度值后與0.25進行比較,若低于0.25,溫度寄存器的最低位就置0;若高于0.25,最低位就置1;若高于0.75時,溫度寄存器的最低位就進位然后置0。這樣,經過比較后所得的溫度寄存器的值就是最終讀取的溫度值了,其最后位代表0.5,四舍五入最大量化誤差為1/2LSB,即0.25。溫度寄存器中的溫度值以9位數據格式表示,最高位為符號位,其余8位以二進制補碼形式表示溫度值。測溫結束時,這9位數據轉存到暫存存儲器的前兩個字節(jié)中,符號位占用第一字節(jié),8位溫度數據占據第二字節(jié)。1 初始化單總線上的所有處理均從初始化序列開始。初始化序列包括總線主機發(fā)出一復位脈沖,接著由從屬器件送出存在脈沖。存在脈沖讓總線控制器知道DS1820 在總線上且已準備好操作。2ROM操作命令一旦總線主機檢測到從屬器件的存在,它便可以發(fā)出器件ROM操作命令之一。所有ROM操作命令均為8位長。這些命令列表如下:Read ROM(讀ROM)33h此命令允許總線主機讀DS18B20的8位產品系列編碼,唯一的48位序列號,以及8位的CRC。此命令只能在總線上僅有一個DS18B20的情況下可以使用。如果總線上存在多于一個的從屬器件,那么當所有從片企圖同時發(fā)送時將發(fā)生數據沖突的現象(漏極開路會產生線與的結果)。3存儲器操作命令 Write Scratchpad(寫暫存存儲器)4Eh這個命令向DS18B20的暫存器中寫入數據,開始位置在地址2。接下來寫入的兩個字節(jié)將被存到暫存器中的地址位置2和3。可以在任何時刻發(fā)出復位命令來中止寫入。Read Scratchpad(讀暫存存儲器)BEh這個命令讀取暫存器的內容。讀取將從字節(jié)0開始,一直進行下去,直到第9(字節(jié)8,CRC)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時間發(fā)出復位命令來中止讀取。4處理數據高速暫存存儲器(RAM)由9個字節(jié)組成,包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的是溫度信息,第一個字節(jié)的內容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三個和第四個字節(jié)是溫度高限TH、溫度低限TL暫存區(qū),第五個字節(jié)是配置寄存器暫存區(qū),第6、7、8字節(jié)是系統(tǒng)保留所用,就相當于DS18B20的運算內存,第九個字節(jié)是冗余檢驗字節(jié)。其分配如表2所示。寄存器內容字節(jié)地址溫度值低位(LS Byte)溫度值高位(MS Byte)高溫限值(TH)低溫限值(TL)配置寄存器保留保留保留CRC校驗值0123456782.3 USB接口芯片部分要實現 USB 設備與計算機接口,通常的做法有兩種:一是使用 USB 接口芯片通過微處理器,或是使用帶微處理器的USB接口芯片實現與 PC機的接口。二是將 USB core 做進FPGA芯片中實現與PC的接口。 目前,市場上供應的 USB 控制器主要有兩種:一種是帶 USB接口的單片機,如 CYPRESS 的 EZ-USB 系列;另一種就是純粹的USB接口芯片,僅處理 USB 通信,如PHILIPS的 PDIUSBD12,National Semiconductor 的 USB N9604等。選擇帶USB接口的單片機的最大好處在于開發(fā)者對系統(tǒng)結構和指令集非常熟悉,開發(fā)工具簡單,缺點是靈活性不夠高,開發(fā)工具與原來的單片機開發(fā)工具不兼容,開發(fā)成本較大。對于簡單或低成本系統(tǒng),其價格也是在實際選擇過程中需要考慮的因素。純粹的 USB 接口芯片僅處理 USB 通信,必須有一個外部微處理器來進行協(xié)議處理和數據交換。典型產品有 Philips 公司的 PDIUSBD12(并行接口) 、ISP1581(USB2.0), NS 公司的 USBN9603/ 9604(并行接口), NetChip公司的 NET2888等。這種USB接口芯片的主要特點是價格便宜、接口方便、可靠性高,系統(tǒng)組成靈活,可根據不同的系統(tǒng)需求,搭配不同的 MCU,具有較高的性能價格比。尤其適合于產品的改型設計(硬件上僅需對并行總線和中斷進行改動, 軟件則需要增加微處理器的USB中斷處理和數據交換程序、PC 機的 USB 接口通信程序,無需對原有產品系統(tǒng)結構作很大的改動) 。但因為 USB 控制器是通過串行口或并行口與 MCU 連接,在傳輸速度方面不如集成了 MCU 的控制芯片。 2.3.1 PDIUSBD12 USB芯片簡單介PDIUSBD12 是一款性價比很高的USB器件。它通常用作微控制器系統(tǒng)中實現與微控制器進行通信的高速通用并行接口。它還支持本地的DMA傳輸。這種實現USB接口的標準組件使得設計者可以在各種不同類型為控制其中選擇出最合適的微控制器,這種靈活性減小了開發(fā)時間、風險以及費用(通過使用已有的結構和減少固件上的投資),從而用最快捷的方法實現最經濟的USB外設的解決方案。PDIUSBD12完全符合USB1.1版的規(guī)范。它還符合大多數器件的分類規(guī)格:成像類、海量存儲器件、通信器件、打印設備以及人機接口設備。同樣地,PDIUSBD12理想地適用于許多外設,例如:打印機、掃描儀、外部的存儲設備(Zip驅動器)和數碼相機等等。它使得當前使用SCSI的系統(tǒng)可以立即降低成本。PDIUSBD12所具有的低掛起功耗連同LazyClock輸出可以滿足使用ACPI、OnNOW和USB電源管理的要求。低的操作功耗可以應用于使用總線供電的外設。2.3.2 PDIUSBD12的引腳分布及其功能1PDIUSBD12的引腳分布圖2.4 PDSIUBD12引腳分布圖2PDIUSBD12的引腳功能表4PDSIUBD12引腳功能管腳符號類型功能描述1 DATAIO2 雙向數據位02 DATA IO2 雙向數據位13 DATA IO2 雙向數據位24 DATA IO2 雙向數據位35 GND P 地6 DATA IO2 雙向數據位47 DATA IO2 雙向數據位58 DATA IO2 雙向數據位69 DATA I02 雙向數據位710 ALE I地址鎖存功能。在多路地址/數據總線中,下降沿關閉地址信息鎖存。將其固定為低電平用于單地址/數據總線配置。11 CS_N I 片選(低有效)12 SUSPEND I,OD4 器件處于掛起狀態(tài)13 CLKOUT O2 可編程時鐘輸出14 INT_N OD4 中斷(低有效)15 RD_N I 讀選通(低有效)16 WR_N I 寫選通(低有效)17 DMREQ O4 DMA請求18 DMACK_N I DMA應答(低有效)19 EOT_N IDMA傳輸結束(低有效),僅當腳18和腳15或腳16一起激活時才有效。20 RESET_N I復位(低有效且不同步)片內上電復位電路,可固定接VCC21GL_N OD8GoodLinkLED指示器(低有效)22XTAL1 I 晶振連接端1(6MHZ)23XTAL2 O晶振連接端2(6MHZ),如果采用外部時鐘信號取代晶振,可連接XTAL1,XTAL2應當懸空。24VCC P電源電壓(4.0-5.5V),要使器件都工作在3.3v,對VCC和Vout3.3都提供3.3V電壓25D- A USBD-數據線26D+ A USBD+數據線27VOUT3.3 P 3.3V調整輸出28 A0 I地址位。A0=1選擇命令指令,A0=0選擇數據。該位在多路地址/數據總線配置時可忽略,應將其接高電平。注: O2:2mA驅動輸出 OD4:4mA驅動開漏輸出 OD8:8mA驅動開漏輸出 IO2:4mA輸出2.3.3PDIUSBD12外圍電路及其與AT89C52之間的連線圖1PDSIUBD12外圍電路圖2.5PDSIUBD12外圍電路2PDIUSBD12與AT89C52的連線圖圖2.6PDIUSBD12與AT89C52的連線圖PDIUSBD12采用SO28或TSSOP28封裝,在本設計中D12采用的是SO28封裝。第3章 上位機軟件編程 在設備硬件和單片機固件調試通過之后,主機就能夠正確識別設備了,但主機與USB設備的信息交互是通過軟件來實現的。主機軟件開發(fā)在本系統(tǒng)中是設計的難點。USB主機系統(tǒng)軟件開發(fā)分為兩部分:主機操作系統(tǒng)上的客戶驅動程序以及主機應用程序。設備驅動程序是提供連接到計算機的硬件的軟件接口,它是操作系統(tǒng)的一個信任部分,通過在應用層和固件專用代碼之間的轉換來完成它的任務。用戶應用程序一般通過使用一套操作系統(tǒng)支持的函數的方式訪問硬件,而不必考慮如何控制硬完整的上位機程序代碼見附錄1。以下將介紹各部分程序的實現:3.1使用VisualStudio2005實現溫度數據的顯示3.1.1用VisualStudio2005創(chuàng)建溫度顯示窗體VisualStudio2005是一個程序開發(fā)平臺,先在電腦中新建一個文件夾,命名為“溫度顯示”,在打開VisualStudio2005,選擇創(chuàng)建項目,選擇的項目類型為Windows應用程序,將名稱改為“TextTemperature”并將其存放在之前建立的文件夾內,方便查找。然后進入界面設計,即設計溫度顯示窗體Form1。將Form1窗體拉伸至合適的大小,在界面的左側“工具箱”中選擇所需控件單擊就可將其放在Form1窗體的合適位置,右鍵單擊窗體中的控件可對其屬性進行更改。在本設計中使用的控件有3個Label和兩個Button。其屬性設置如下表所示:表5各控件屬性表控件TextFontSizeLabel1溫度:宋體初號192,56Label20宋體初號192,56Label3宋體初號192,56Button1開始宋體9pt75,23Button2停止宋體9pt75,23在窗體設計界面中雙擊個控件可對其進行編程,從而實現對溫度采集的控制及顯示。窗體設計程序代碼見附錄A。3.1.2軟件編程思路本設計主要是應用VisualStudio2005這個程序開發(fā)平臺編輯程序實現對下位機采集到的溫度進行顯示。如圖7所示的溫度顯示窗體,本設計所要實現的就是在此程序運行過程中,單擊窗體的“開始”按鈕,開始采集并在Label2控件上顯示變化的溫度值,而單擊“停止”按鈕后,溫度值又歸零。因為在整個程序運行過程中只要求用“開始”和“停止”按鈕來控制Label2控件所顯示的溫度值,所以我們只需對這三個控件進行編程以實現本設計所要完成的任務。3.2驅動程序設備驅動程序是一個包含了許多操作系統(tǒng)可調用例程的軟件容器,是保證用戶應用程序軟件訪問設備硬件的程序軟件,它的任務是在應用層和硬件控制代碼之間進行轉換操作。在windows中,驅動程序就是一個文件(*.Sys),它可以打開設備的一個句柄,然后應用程序可以在設備句柄最后關閉之前向驅動程序發(fā)出讀寫請求。微軟極力推崇WDM(windowsDriverModel)作為驅動程序的開發(fā)模型,而且在win2000及其以后的系統(tǒng)中,不再支持其它類型的驅動程序。因此本溫度采集系統(tǒng)的驅動程序部分采用WDM模型開發(fā)。3.2.1WDM驅動程序WDM驅動程序是Windows2000操作系統(tǒng)重要的組成部分,它的正常工作需要有Windows2000其它內核組件的支持,同時大部分的內核組件也必須同WDM驅動程序交互來完成它們的功能。由于WDM驅動程序的標準應用平臺是Windows2000,是內核的重要組件之一并與其它內核組件有相當多的關聯。3.2.2驅動程序開發(fā)工具目前,市場上存在多種開發(fā)WDM設備驅動程序的工具。常用的有Microsoft提供的WindowsDDK,NuMega公司的DriverStudio和Jungo公司的WinDriver等。其中: (1)DDK是最基本的,也是最原始的驅動開發(fā)工具。對應不同的操作系統(tǒng)有DDK98和DDK2000兩種,分別用來開發(fā)Windows98和Windows2000下的驅動程序。使用DDK開發(fā)過程靈活,開發(fā)出的驅動程序的代碼效率高,與操作系統(tǒng)結合好43。但是用DDK開發(fā),要對整個體系結構有很好的理解和把握,要求開發(fā)者閱讀大量的DDK文檔,深入了解操作系統(tǒng)的內核工作方式,而且開發(fā)過程大部分場合都直接使用匯編語言編程,一般來說難度太大,因此它只適于專業(yè)的驅動程序開發(fā)人員,對于一般硬件開發(fā)人員將要很長的周期。 (2)DriverStudio是一套用來簡化微軟WINDOWS平臺下設備驅動程序的開發(fā)包。它的Driverworks用來開發(fā)WDM設備驅動程序。它還包含有一個功能強大內核模式調試器SoftICE。這類工具一般以源代碼和庫函數調用的形式提供給開發(fā)者許多現成的設備底層驅動支持,開發(fā)者只需要調用工具中的預定義類和底層驅動接口就可以方便地生成符合用戶要求的完整驅動程序。使用這類工具大大減小開發(fā)者的工作量和難度,縮短了開發(fā)周期,但驅動程序不如使用DDK靈活,而且由于封裝的問題,可能會帶來一些bug,有可能導致項目的失敗。 (3)winDriver從開發(fā)驅動的角度講,幾乎沒有難度。但是只能開發(fā)硬件相關的驅動,事實上我們只是定制和調用它提供的通用程序而己,工作效率不是很高。但開發(fā)花費的時間很少,是上面的幾乃至幾十分之一。為了對Windows底層機制有更好的了解,同時也為了使溫度采集系統(tǒng)的驅動程序有更高的效率,我們選擇了采用VC+DDK的方法來開發(fā)驅動程序。3.2.3驅動程序的功能模塊一個WDM驅動程序的功能模塊大體上可以分為以下幾個組成部分 (1)初始化。 (2)創(chuàng)建和刪除設備。 (3)處理Win32程序打開和關閉文件句柄的要求。 (4)處理Win32的輸入/輸出(I/O)請求。 (5)實現對設備的串行化訪問。 (6)訪問硬件。 (7)取消I/O請求。 (8)超時I/O請求。 (9)調用其它驅動程序。 (10)處理電源管理請求。 (11)處理Windows管理診斷(WMI)向系統(tǒng)管理員報告。(12)處理一個可熱插拔的設備被加入或刪除的情況。WDM驅動程序有兩個主要的初始化入口點:DrvierEntry和AddDevice例程。DrvierEntry注冊其它回調例程的。在運行過程中,內核會調用不同的回調例程來完成不同的任務。下面將著重介紹幾個基本的組成部分。3.3驅動程序的實現3.3.1驅動程序入口點和回調程序WDM驅動程序有一個主要的初始化入口點,即一個必須稱為DriverEntry的例程。它有一個標準的函數原型。當WDM驅動程序被裝入時,內核調用DriverEntry例程。 驅動程序的DriverEntry例程必須設置一系列的回調例程來處理IRP。每一個回調例程都有一個標準的函數原型。內核會在合適的環(huán)境下調用這個例程。程序代碼見附錄C。3.3.2即插即用的實現即插即用(PNP)是WDM驅動程序所支持的一種新的特性。USB正是由于即插即用的性能,才使他使用起來異常方便。完全地支持即插即用是每一個WDM驅動程序的目標。對于一般的驅動程序來說,所謂的即插即用完全是由AddDevice例程和一個IRP_MJ_PNP的主功能代碼來實現的。 當一個新的即插即用設備被添加到系統(tǒng)時,內核PNP管理器沿設備棧向上依次調用每個驅動程序的AddDevice函數,在本設計的USB功能驅動中,由PnpAddDevice實現。 PnpAddDevice例程的工作是創(chuàng)建和初始化一個設備對象供當前驅動程序使用。同時PnpAddDevice例程通過調用IoRegisterDeviceInterface為驅動程序建立一個設備接口,并通過調用IoAttachDeviceToDeviceStack例程把該對象連接到設備棧。PnpAddDevice例程被調用后,PNP管理器使用PnPIRP發(fā)送消息,例程D12_Pnp實現了IRP_MJ_PNP消息的處理過程,其通過判別常用次功能代碼來執(zhí)行不同的PnP操作。 PnpAddDevice的實現及被調用后的消息處理過程的具體實現代碼見附錄D。第4章 硬件部分程序代碼4.1驅動程序的安裝及INF文件 當windows發(fā)現新的設備時(在系統(tǒng)啟動時、在安裝熱插拔設備時、或者在從控制面板安裝新設備時),就調用windows的“添加新設備向導”執(zhí)行。這個向導就掃描所有可用的INF文件,試圖找到合適的驅動程序。至于如何找到想要的INF文件,這就需要前面敘述的硬件ID號,即廠商號VID和產品號PID,VID和PID都是要寫入固件程序中的。這里使用的VID是0471(PHILIPS公司的設備ID)、PID是0222。 選擇一個設備的規(guī)則是相當復雜的,Windows首先選擇硬件ID匹配的設備的驅動程序,否則它選擇其兼容ID與設備的兼容功最佳匹配的驅動程序,或者提示用戶選擇驅動程序INF文件。如果不能發(fā)現合適的驅動程序,就提示用戶插入驅程序盤。下面就來介紹一下INF的相關內容。 INF是DeviceINFormationFile的英文縮寫,是Microsoft公司為硬件設備制造商發(fā)布其驅動程序推出的一種文件格式,INF文件中包含硬件設備的信息或腳本以控制硬件操作。在INF文件中指明了硬件驅動該如何安裝到系統(tǒng)中,源文件在哪里、安裝到哪一個文件夾中、怎樣在注冊表中加入自身相關信息等等。它由節(jié)組成,每一節(jié)從方括號中的節(jié)名稱開始,后面是節(jié)內容。節(jié)的順序可以是任意的。具體內容如表5所示。 表5INF文件常用的節(jié)節(jié) 項 值描述Signature $Windowsnt$ 、 $Windows95$、$Chicago$ Provider INF文件創(chuàng)建者 Version Class 系統(tǒng)定義的一個類名字(詳見DDK), 或者是用戶指定的新的類名字 ClassGuid 匹配的類 GUID DriverVer Mm/dd/yyyy,a.b.c.dStrings %string%=值 指定的一個字符串SourceDisksNames 對于每個發(fā)行軟盤或 CD-ROM,指定它的描述和可能的打文件和目錄 SourceDisksFiles 指定文件名、源磁盤 ID 和可選的子目錄和文件大小。如果所有文件都在根目錄中,這個節(jié)可以是空的 Manufacturer %manufacturer_name 指定廠商名和對應的models節(jié)的% = modelModels 指定產品名稱、對應的 install 節(jié)的名稱、硬件 ID 和 0 個或更多個兼容 ID Copyfiles=filename|filelist 指定要復制的文件、或列出這些文件的 f ilelist 節(jié)的名稱install AddReg=addreg 指定 addreg節(jié)的名稱 ProfileItems 列出指定要添加到“開始”菜單的項 allreg 添加新的鍵和值節(jié)項 值描述VersionStringsSourceDisksNamesSourceDisksFilesManufacturerModelsInstallallregSignatureProviderClassClassguidDriverVer%string%=值對于每個發(fā)行軟盤或 CD-ROM%manufacturer_name% = modelAddReg=addregProfileItems添加新的鍵和值$Windowsnt$ 、 $Windows95$、$Chicago$INF文件創(chuàng)建者系統(tǒng)定義的一個類名字(詳見DDK), 或者是用戶指定的新的類名匹配的類 GUID字Mm/dd/yyyy,a.b.c.d指定的一個字符串指定它的描述和可能的打文件和目錄指定文件名、源磁盤 ID 和可選的子目錄和文件大小。如果所有文件都在根目錄中,這個節(jié)可以是空的指定廠商名和對應的models節(jié)的名稱指定產品名稱、對應的 install 節(jié)的名稱、硬件 ID 和 0 個或更多個兼容 IDCopyfiles=filename|filelist 指定要復制的文件、或列出這些文件的 filelist 節(jié)的名稱指定 addreg節(jié)的名稱ProfileItems 列出指定要添加到“開始”菜單的項 4.2應用程序 用戶應用程序是系統(tǒng)與用戶的接口,它通過通用驅動程序完成對USB設備的控制和通信。在開發(fā)應用程序時,首先要建立與USB設備的連接,然后才能實施數據的傳輸。用戶程序首先必須查找設備,打開設備的句柄,然后進行讀寫和控制操作,最后是關閉設備句柄。 我們已經知道,Windows2000是分態(tài)的操作系統(tǒng),用戶應用程序運行在用戶態(tài)下,其行為受到操作系統(tǒng)嚴格限制,防止其對其它應用和系統(tǒng)代碼的破壞。因此,應用程序能調用Win32子系統(tǒng)提供的API(Win32子系統(tǒng)模塊中的服務代碼)來實現與設備通訊。當應用程序需要讀取設備數據時,它就調用Win32API函數,Win32子系統(tǒng)模塊通過調用平臺相關的系統(tǒng)服務接口實現該API,而平臺相關的系統(tǒng)服務將調用內核模式支持例程。 在WIN32系統(tǒng)中,把每一個程序都抽象為文件,此時的應用程序只需要通過幾條簡單的文件操作API函數,既可以實現與驅動程序中某個設備通信,一個驅動程序可以驅動多個設備。并且此驅動程序可能為WINDOWS系統(tǒng)中己有的,也可能為用戶安裝的。在Windows中,應用程序實現與WDM通信的過程是:應用程序先用CreateFile函數打開設備;然后用DeviceIoControl與WDM進行通信,通信方式包括從WDM中讀數據和寫數據給WDM兩種情況,即用ReadFile函數從WDM中讀取數據或用WriteFile函數將數據寫入WDM;要退出應用程序時,用CloseHandle函數關閉設備。這將產生對應于此設備對象的相應IRP。這種關系如表6所示。表6WIN32函數對應的IRP主功能代碼WIN32函數IR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范本:保密協(xié)議(通-用版)
- 高級氧化技術降解喹諾酮類抗生素及降解中間產物生物毒性的研究
- 格力電器數據資產價值評估研究
- 投球中獎活動方案
- 指導制定活動方案
- 教師解壓活動方案
- 招工服務活動方案
- 教師節(jié)手工活動方案
- 打牌游戲活動方案
- 抽獎紅包活動方案
- 小米公司4P營銷策略分析與優(yōu)化
- 疑難病例討論課件
- AA-6880原子吸收操作規(guī)程
- NB-T25036-2014發(fā)電廠離相封閉母線技術要求
- MBTI完美版測試題
- 2024年安徽普通高中學業(yè)水平選擇性考試化學試題及答案
- 江蘇省淮安市淮安中學2025屆數學高一下期末教學質量檢測試題含解析2
- 《取水許可核驗報告編制導則(試行)(征求意見稿)》
- 水質檢測員年終總結
- 老年消防知識講座
- Filemaker數據庫使用指南知識分享
評論
0/150
提交評論