ASR M08-B設(shè)置軟件 V3.2 arduino 2560+ASRM08-B測(cè)試程序 arduino UNO+ASRM08-B測(cè)試程序語(yǔ)音控制臺(tái)燈電路圖及C51源碼(不帶校驗(yàn)碼) 繼電器模塊設(shè)置。 ASR M08-B是一款語(yǔ)音識(shí)別模塊。首先對(duì)模塊添加一些關(guān)鍵字,對(duì)著該模塊說(shuō)出關(guān)鍵字,串口會(huì)返回三位的數(shù),如果是返回特定的三位數(shù)字,還會(huì)引起ASR M08-B的相關(guān)引腳電平的變化。【測(cè)試】①打開(kāi)“ASR M08-B設(shè)置軟件 V3.2.exe”。②選擇“串口號(hào)”、“打開(kāi)串口”、點(diǎn)選“十六進(jìn)制顯示”。③將USB轉(zhuǎn)串口模塊連接到語(yǔ)音識(shí)別模塊上。接線(xiàn)方法如下:語(yǔ)音模塊TXD --> USB模塊RXD語(yǔ)音模塊RXD --> USB模塊TXD語(yǔ)音模塊GND --> USB模塊GND語(yǔ)音模塊3V3 --> USB模塊3V3(此端為3.3V電源供電端。)④將模塊的開(kāi)關(guān)撥到“A”端,最好再按一次上面的大按鈕(按一次即可,為了確保模塊工作在正確的模式)。⑤對(duì)著模塊說(shuō)“開(kāi)燈”、“關(guān)燈”模塊會(huì)返回“0B”、“0A”,表示正常(注意:0B對(duì)應(yīng)返回值010,0B對(duì)應(yīng)返回值010,返回是16進(jìn)制顯示的嘛,設(shè)置的時(shí)候是10進(jìn)制設(shè)置的)。
標(biāo)簽: ASR M08-B
上傳時(shí)間: 2022-07-06
上傳用戶(hù):aben
心音信號(hào)是人體最重要的生理信號(hào)之一,包含心臟各個(gè)部分如心房、心室、大血管、心血管及各個(gè)瓣膜功能狀態(tài)的大量生理病理信息。心音信號(hào)分析與識(shí)別是了解心臟和血管狀態(tài)的一種不可缺少的手段。本文針對(duì)目前該研究領(lǐng)域中存在的分析方法問(wèn)題和分類(lèi)識(shí)別技術(shù)難點(diǎn)展開(kāi)了深入的研究,內(nèi)容涉及心音構(gòu)成的分析、心音信號(hào)特征向量的提取、正常心音信號(hào)(NM)和房顫(AF)、主動(dòng)脈回流(AR)、主動(dòng)脈狹窄(AS)、二尖瓣回流(MR)4種心臟雜音信號(hào)的分類(lèi)識(shí)別。本文的工作內(nèi)容包括以下5個(gè)方面: a)心音信號(hào)采集與預(yù)處理。本文采用自行研制的帶有錄音機(jī)功能的聽(tīng)診器實(shí)現(xiàn)對(duì)心音信號(hào)的采集。通過(guò)對(duì)心音信號(hào)噪聲分析,選用小波降噪作為心音信號(hào)的濾波方法。根據(jù)實(shí)驗(yàn)分析,選擇Donoho閾值函數(shù)結(jié)合多級(jí)閾值的方法作為心音信號(hào)預(yù)處理方案。 b)心音信號(hào)時(shí)頻分析方法。文中采用5種時(shí)頻分析方法分別對(duì)心音信號(hào)進(jìn)行了時(shí)頻譜特性分析,結(jié)果表明:不同的時(shí)頻分析方法與待分析心音信號(hào)的特性有密切關(guān)系,即需要在小的交叉項(xiàng)干擾與高的時(shí)頻分辨率之間作綜合的考慮。鑒于此,本文提出了一種自適應(yīng)錐形核時(shí)頻(ATF)分析方法,通過(guò)實(shí)驗(yàn)驗(yàn)證該分布能較好地反映心音信號(hào)的時(shí)頻結(jié)構(gòu),其性能優(yōu)于一般錐形核分布(CKD)以及Choi-Williams分布(CWD)、譜圖(SPEC)等固定核時(shí)頻分析方法,從而選擇自應(yīng)錐形核時(shí)頻分析方法進(jìn)行心音信號(hào)分析。 c)心音信號(hào)特征向量提取。根據(jù)對(duì)3M Littmann() Stethoscopes[31]數(shù)據(jù)庫(kù)中標(biāo)準(zhǔn)心音信號(hào)的時(shí)頻分析結(jié)果,提取8組特征數(shù)據(jù),通過(guò)Fihser降維處理方法提取出了實(shí)現(xiàn)分類(lèi)可視化,且最易于分類(lèi)的心音信號(hào)的2維特征向量,作為心音信號(hào)分類(lèi)的特征向量。 d)心音信號(hào)分類(lèi)方法。根據(jù)心音信號(hào)特征向量組成的散點(diǎn)圖,研究了支持向量機(jī)核函數(shù)、多分類(lèi)支持向量機(jī)的選取方法,同時(shí),基于分類(lèi)的目的 性和可信性,本文提出以分類(lèi)精度最大為判斷準(zhǔn)則的核函數(shù)參數(shù)與松弛變量的優(yōu)化方法,建立了心音信號(hào)分類(lèi)的支持向量機(jī)模型,選取標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)中NM、AF、AR、AS、MR每類(lèi)心音信號(hào)的80組2維特征向量中每類(lèi)60組數(shù)據(jù)作為支持向量機(jī)的學(xué)習(xí)樣本,對(duì)余下的每類(lèi)20組數(shù)據(jù)進(jìn)行測(cè)試,得到每類(lèi)的分類(lèi)精度(Ar)均為100%,同時(shí)對(duì)臨床上采集的與上述4種同類(lèi)心臟雜音信號(hào)和正常心音信號(hào)中每類(lèi)24個(gè)心動(dòng)周期進(jìn)行分類(lèi)實(shí)測(cè),分類(lèi)精度分別為:NM、AF、MR的分類(lèi)精度均為100%,而AR、AS均為95.83%,驗(yàn)證了該方法的分類(lèi)有效性。 e)心音信號(hào)分析與識(shí)別的軟件系統(tǒng)。本文以MATLAB語(yǔ)言的可視化功能實(shí)現(xiàn)了心音信號(hào)分析與識(shí)別的軟件運(yùn)行平臺(tái)構(gòu)建,可完成對(duì)心音信號(hào)的讀取、預(yù)處理,繪制時(shí)-頻、能量特性的三維圖及兩維等高線(xiàn)圖;同時(shí),利用MATLAB與EXCEL的動(dòng)態(tài)鏈接,實(shí)現(xiàn)對(duì)心音信號(hào)分析數(shù)據(jù)的存儲(chǔ)以及統(tǒng)計(jì)功能;最后,通過(guò)對(duì)心音信號(hào)2維特征向量的分析,實(shí)現(xiàn)心音信號(hào)的自動(dòng)識(shí)別功能。 本文的研究特色主要體現(xiàn)在心音信號(hào)特征向量提取的方法以及多分類(lèi)支持向量機(jī)模型的建立兩方面。 綜上所述,本文從理論與實(shí)踐兩方面對(duì)心音信號(hào)進(jìn)行了深入的研究,主要是采用自適應(yīng)錐形核時(shí)頻分析方法提取心音信號(hào)特征向量,根據(jù)心音信號(hào)特征向量組成的散點(diǎn)圖,建立心音信號(hào)分類(lèi)的支持向量機(jī)模型,并對(duì)正常心音信號(hào)和4種心臟雜音信號(hào)進(jìn)行了分類(lèi)研究,取得了較為滿(mǎn)意的分類(lèi)結(jié)果,但由于用于分類(lèi)的心臟雜音信號(hào)種類(lèi)及數(shù)據(jù)量尚不足,因此,今后的工作重點(diǎn)是采集更多種類(lèi)的心臟雜音信號(hào),進(jìn)一步提高心音信號(hào)分類(lèi)精度,使本文研究成果能最終應(yīng)用于臨床心臟量化聽(tīng)診。 關(guān)鍵詞:心音信號(hào),小波降噪,非平穩(wěn)信號(hào),心臟雜音,信號(hào)處理,時(shí)頻分析,自適應(yīng),支持向量機(jī)
上傳時(shí)間: 2013-04-24
上傳用戶(hù):weixiao99
本文分析了永磁同步直線(xiàn)電動(dòng)機(jī)的運(yùn)行機(jī)理與運(yùn)行特性,并通過(guò)坐標(biāo)變換,分別得出了電機(jī)在a—b—c,α—β、d—q坐標(biāo)系下的數(shù)學(xué)模型。針對(duì)永磁同步直線(xiàn)電機(jī)模型的非線(xiàn)性與耦合特性,采用了次級(jí)磁場(chǎng)定向的矢量控制,并使id=0,不但解決了上述問(wèn)題,還實(shí)現(xiàn)了最大推力電流比控制。為了獲得平穩(wěn)的推力,采用了SVPWM控制,并對(duì)它算法實(shí)現(xiàn)進(jìn)行了研究。 針對(duì)速度環(huán)采用傳統(tǒng)PID控制難以滿(mǎn)足高性能矢量控制系統(tǒng),通過(guò)對(duì)傳統(tǒng)PID控制和模糊控制理論的研究,將兩者相結(jié)合,設(shè)計(jì)出能夠在線(xiàn)自整定的模糊PID控制器。將該控制器代替?zhèn)鹘y(tǒng)的PID控制器應(yīng)用于速度環(huán),以提高系統(tǒng)的動(dòng)靜態(tài)性能。 在以上分析的基礎(chǔ)上,設(shè)計(jì)了永磁同步直線(xiàn)電機(jī)矢量控制系統(tǒng)的軟、硬件。其中電流檢測(cè)采用了新穎的電流傳感器芯片IR2175,以解決溫漂問(wèn)題;速度檢測(cè)采用了增量式光柵尺,設(shè)計(jì)了與DSP的接口電路,通過(guò)M/T法實(shí)現(xiàn)對(duì)電機(jī)的測(cè)速。最后在Matlab/Simlink下建立了電機(jī)及其矢量控制系統(tǒng)的仿真模型,并對(duì)分別采用傳統(tǒng)PID速度控制器和模糊PID速度控制器的系統(tǒng)進(jìn)行仿真,結(jié)果表明采用模糊PID控制具有更好的動(dòng)態(tài)響應(yīng)性能,能有效的抑制暫態(tài)和穩(wěn)態(tài)下的推力脈動(dòng),對(duì)于負(fù)載擾動(dòng)具有較強(qiáng)的魯棒性。
標(biāo)簽: 永磁同步 直線(xiàn)電機(jī) 矢量控制
上傳時(shí)間: 2013-07-04
上傳用戶(hù):13681659100
在現(xiàn)代交流伺服系統(tǒng)中,矢量控制原理以及空間電壓矢量脈寬調(diào)制(SVPWM)技術(shù)使得交流電機(jī)能夠獲得和直流電機(jī)相媲美的性能。永磁同步電機(jī)(PMSM)是一個(gè)復(fù)雜耦合的非線(xiàn)性系統(tǒng)。本文在Matlab/Simulink環(huán)境下,通過(guò)對(duì)PMSM本體、d/q坐標(biāo)系向a/b/c坐標(biāo)系轉(zhuǎn)換等模塊的建立與組合,構(gòu)建了永磁同步電機(jī)控制系統(tǒng)仿真模型。仿真結(jié)果證明了該系統(tǒng)模型的有效性。
標(biāo)簽: MatlabSimulink PMSM 永磁同步電機(jī)
上傳時(shí)間: 2013-04-24
上傳用戶(hù):liansi
M AT L A B是一個(gè)可視化的計(jì)算程序,被廣泛地使用于從個(gè)人計(jì)算機(jī)到超級(jí)計(jì)算機(jī)范圍內(nèi) 的各種計(jì)算機(jī)上。 M AT L A B包括命令控制、可編程,有上百個(gè)預(yù)先定義好的命令和函數(shù)。這些函數(shù)能通過(guò) 用戶(hù)自定義函數(shù)進(jìn)一步擴(kuò)展。 M AT L A B有許多強(qiáng)有力的命令。例如, M AT L A B能夠用一個(gè)單一的命令求解線(xiàn)性系統(tǒng), 能完成大量的高級(jí)矩陣處理。 M AT L A B有強(qiáng)有力的二維、三維圖形工具。 M AT L A B能與其他程序一起使用。例如, M AT L A B的圖形功能,可以在一個(gè) F O RT R A N 程序中完成可視化計(jì)
上傳時(shí)間: 2013-04-24
上傳用戶(hù):xinshou123456
一直以來(lái), 電子電路斷路器( E C B ) 都是由一個(gè)MOSFET、一個(gè) MOSFET 控制器和一個(gè)電流檢測(cè)電阻器所組成的。
上傳時(shí)間: 2013-10-18
上傳用戶(hù):qwerasdf
本書(shū)針對(duì)Atmel公司的AVR系列單片機(jī)和ImageCraft公司的ICC AVR開(kāi)發(fā)環(huán)境,詳細(xì)地介紹了AT90LS8535的C語(yǔ)言程序設(shè)計(jì)。全書(shū)共有13章,其內(nèi)容既涉及到了單片機(jī)的結(jié)構(gòu)原理、指令系統(tǒng)、內(nèi)容資源和外部功能擴(kuò)展,又包含了單片機(jī)的編程工具——ICC AVR C編程器的數(shù)據(jù)類(lèi)型、控制流、函數(shù)和指針等。本書(shū)的特點(diǎn)是:深入淺出,從最基本的概念開(kāi)始,循序漸進(jìn)地講解單片機(jī)的應(yīng)用開(kāi)發(fā);列舉了大量實(shí)例,使讀者能從實(shí)際應(yīng)用中掌握單片機(jī)的開(kāi)發(fā)與應(yīng)用技術(shù)。本書(shū)適合作為從事單片機(jī)開(kāi)發(fā)人員的參考用書(shū)。書(shū)中先后講解了C語(yǔ)言基礎(chǔ)、AVR單片機(jī)基礎(chǔ),并舉了一些簡(jiǎn)單的實(shí)例。本書(shū)非常適合初學(xué)者。 【目錄信息】 第1章 單片機(jī)系統(tǒng)概述 1. 1 AVR系列單片機(jī)的特點(diǎn) 1. 2 AT90系列單片機(jī)簡(jiǎn)介 第2章 AT90LS8535單片機(jī)的基礎(chǔ)知識(shí) 2. 1 AT90LS8535單片機(jī)的總體結(jié)構(gòu) 2. 1. 1 AT90LS8535單片機(jī)的中央處理器 2. 1. 2 AT90LS8535單片機(jī)的存儲(chǔ)器組織 2. 1. 3 AT90LS8535單片機(jī)的I/O接口 2. 1. 4 AT90LS8535單片機(jī)的內(nèi)部資源 2. 1. 5 AT90LS8535單片機(jī)的時(shí)鐘電路 2. 1. 6 AT90LS8535單片機(jī)的系統(tǒng)復(fù)位 2. 1. 7 AT90LS8535單片機(jī)的節(jié)電方式 2. 1. 8 AT90LS8535單片機(jī)的芯片引腳 2. 2 AT90LS8535單片機(jī)的指令系統(tǒng) 2. 2. 1 匯編指令格式 2. 2. 2 尋址方式 2. 2. 3 偽指令 2. 2. 4 指令類(lèi)型及數(shù)據(jù)操作方式 2. 3 應(yīng)用程序設(shè)計(jì) 2. 3. 1 程序設(shè)計(jì)方法 2. 3. 2 應(yīng)用程序舉例 第3章 AT90LS8535單片機(jī)的C編程 3. 1 支持高級(jí)語(yǔ)言編程的AVR系列單片機(jī) 3. 2 AVR的C編譯器 3. 3 ICCAVR介紹 3. 3. 1 安裝ICCAVR 3. 3. 2 設(shè)置ICCAVR 3. 4 用ICCAVR編寫(xiě)應(yīng)用程序 3. 5 下載程序文件 第4章 數(shù)據(jù)類(lèi)型. 運(yùn)算符和表達(dá)式 4. 1 ICCAVR支持的數(shù)據(jù)類(lèi)型 4. 2 常量與變量 4. 2. 1 常量 4. 2. 2 變量 4. 3 AT90LS8535的存儲(chǔ)空間 4. 4 算術(shù)和賦值運(yùn)算 4. 4. 1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 4. 4. 2 賦值運(yùn)算符和賦值表達(dá)式 4. 5 邏輯運(yùn)算 4. 6 關(guān)系運(yùn)算 4. 7 位操作 4. 7. 1 位邏輯運(yùn)算 4. 7. 2 移位運(yùn)算 4. 8 逗號(hào)運(yùn)算 第5章 控制流 5. 1 C語(yǔ)言的結(jié)構(gòu)化程序設(shè)計(jì) 5. 1. 1 順序結(jié)構(gòu) 5. 1. 2 選擇結(jié)構(gòu) 5. 1. 3 循環(huán)結(jié)構(gòu) 5. 2 選擇語(yǔ)句 5. 2. 1 if語(yǔ)句 5. 2. 2 switch分支 5. 2. 3 選擇語(yǔ)句的嵌套 5. 3 循環(huán)語(yǔ)句 5. 3. 1 while語(yǔ)句 5. 3. 2 do…while語(yǔ)句 5. 3. 3 for語(yǔ)句 5. 3. 4 循環(huán)語(yǔ)句嵌套 5. 3. 5 break語(yǔ)句和continue語(yǔ)句 第6章 函數(shù) 6. 1 函數(shù)的定義 6. 1. 1 函數(shù)的定義的一般形式 6. 1. 2 函數(shù)的參數(shù) 6. 1. 3 函數(shù)的值 6. 2 函數(shù)的調(diào)用 6. 2. 1 函數(shù)的一般調(diào)用 6. 2. 2 函數(shù)的遞歸調(diào)用 6. 2. 3 函數(shù)的嵌套調(diào)用 6. 3 變量的類(lèi)型及其存儲(chǔ)方式 6. 3. 1 局部變量 6. 3. 2 局部變量的存儲(chǔ)方式 6. 3. 3 全局變量 6. 3. 4 全局變量的存儲(chǔ)方式 6. 4 內(nèi)部函數(shù)和外部函數(shù) 6. 4. 1 內(nèi)部函數(shù) 6. 4. 2 外部函數(shù) 第7章 指針 7. 1 指針和指針變量 7. 2 指針變量的定義和引用 7. 2. 1 指針變量的定義 7. 2. 2 指針變量的引用 7. 2. 3 指針變量作為函數(shù)參數(shù) 7. 3 數(shù)組與指針 7. 3. 1 指向數(shù)組元素的指針變量 7. 3. 2 數(shù)組元素的引用 通過(guò)指針 7. 3. 3 數(shù)組名作為函數(shù)參數(shù) 7. 3. 4 指向多維數(shù)組的元素的指針變量 7. 4 字符串與指針 7. 4. 1 字符串的表示形式 7. 4. 2 字符串指針變量與字符數(shù)組的區(qū)別 7. 5 函數(shù)與指針 7. 5. 1 函數(shù)指針變量 7. 5. 2 指針型函數(shù) 7. 6 指向指針的指針 7. 7 有關(guān)指針數(shù)據(jù)類(lèi)型和運(yùn)算小結(jié) 7. 7. 1 有關(guān)指針的數(shù)據(jù)類(lèi)型的小結(jié) 7. 7. 2 指針運(yùn)算的小結(jié) 第8章 結(jié)構(gòu)體和共用體 8. 1 結(jié)構(gòu)體的定義和引用 8. 1. 1 結(jié)構(gòu)體類(lèi)型變量的定義 8. 1. 2 結(jié)構(gòu)體類(lèi)型變量的引用 8. 2 結(jié)構(gòu)類(lèi)型的說(shuō)明 8. 3 結(jié)構(gòu)體變量的初始化和賦值 8. 3. 1 結(jié)構(gòu)體變量的初始化 8. 3. 2 結(jié)構(gòu)體變量的賦值 8. 4 結(jié)構(gòu)體數(shù)組 8. 4. 1 結(jié)構(gòu)體數(shù)組的定義 8. 4. 2 結(jié)構(gòu)體數(shù)組的初始化 8. 5 指向結(jié)構(gòu)體類(lèi)型變量的指針 8. 5. 1 指向結(jié)構(gòu)體變量的指針 8. 5. 2 指向結(jié)構(gòu)體數(shù)組的指針 8. 5. 3 指向結(jié)構(gòu)體變量的指針做函數(shù)參數(shù) 8. 6 共用體 8. 6. 1 共用體的定義 8. 6. 2 共用體變量的引用 第9章 A190LS8535的內(nèi)部資源 9. 1 I/O 口 9. 1. 1 端口A 9. 1. 2 端口B 9. 1. 3 端口C 9. 1. 4 端口D 9. 1. 5 I/O口的編程 9. 2 中斷 9. 2. 1 單片機(jī)的中斷功能 9. 2. 2 AT90LS8535單片機(jī)的中斷系統(tǒng) 9. 2. 3 1CCAVRC編譯器的中斷操作 9. 2. 4 中斷的編程 9. 3 串行數(shù)據(jù)通信 9. 3. 1 數(shù)據(jù)通信基礎(chǔ) 9. 3. 2 AT90LS8535的同步串行接口 9. 3. 3 AT90LS8535的異步串行接口 9. 4 定時(shí)/計(jì)數(shù)器 9. 4. 1 定時(shí)/計(jì)數(shù)器的分頻器 9. 4. 2 8位定時(shí)/計(jì)數(shù)器0 9. 4. 3 16位定時(shí)/計(jì)數(shù)器1 9. 4. 4 8位定時(shí)/計(jì)數(shù)器2 9. 5 EEPROM 9. 5. 1 與EEPROM有關(guān)的寄存器 9. 5. 2 EEPROM讀/寫(xiě)操作 9. 5. 3 EEPROM的應(yīng)用舉例 9. 6 模擬量輸入接口 9. 6. 1 模數(shù)轉(zhuǎn)換器的結(jié)構(gòu) 9. 6. 2 ADC的使用 9. 6. 3 與模數(shù)轉(zhuǎn)換器有關(guān)的寄存器 9. 6. 4 ADC的噪聲消除 9. 6. 5 ADC的應(yīng)用舉例 9. 7 模擬比較器 9. 7. 1 模擬比較器的結(jié)構(gòu) 9. 7. 2 與模擬比較器有關(guān)的寄存器 9. 7. 3 模擬比較器的應(yīng)用舉例 第10章 AT90LS8535的人機(jī)接口編程 10. 1 鍵盤(pán)接口 10. 1. 1 非矩陣式鍵盤(pán) 10. 1. 2 矩陣式鍵盤(pán) 10. 2 LED顯示輸出 10. 2. 1 LED的靜態(tài)顯示 10. 2. 2 LED的動(dòng)態(tài)掃描顯示 10. 2. 3 動(dòng)態(tài)掃描顯示專(zhuān)用芯片MC14489 10. 3 LCD顯示輸出 10. 3. 1 字符型LCD 10. 3. 2 點(diǎn)陣型LCD 10. 4 ISD2500系列語(yǔ)音芯片的編程 10. 4. 1 ISD2500的片內(nèi)結(jié)構(gòu)和引腳 10. 4. 2 ISD2500的操作 10. 4. 3 ISD2500和單片機(jī)的接口及編程 10. 5 TP-uP微型打印機(jī) 10. 5. 1 TP-uP打印機(jī)的接口和邏輯時(shí)序 10. 5. 2 P-uP打印機(jī)的打印命令和字符代碼 10. 5. 3 AT90LS8535與TP-uP系列打印機(jī)的接口及編程 10. 6 IC卡 10. 6. 1 IC卡讀寫(xiě)裝置 10. 6. 2 IC卡軟件 第11章 AT90LS8535的外圍擴(kuò)展 11. 1 簡(jiǎn)單I/O擴(kuò)展芯片 11. 1. 1 用74LS377擴(kuò)展數(shù)據(jù)輸出接口 11. 1. 2 數(shù)據(jù)輸入接口 11. 2 模擬量輸出 11. 2. 1 D/A轉(zhuǎn)換器簡(jiǎn)介 11. 2. 2 8位數(shù)模轉(zhuǎn)換器DAC0832 11. 2. 3 8位數(shù)模轉(zhuǎn)換器與單片機(jī)的接口及編程 11. 2. 4 12位數(shù)模轉(zhuǎn)換器DACl230 11. 2. 5 12位數(shù)模轉(zhuǎn)換器與單片機(jī)的接口及編程 11. 3 可編程I/O擴(kuò)展芯片8255A 11. 3. 1 8255A的引腳和內(nèi)部結(jié)構(gòu) 11. 3. 2 8255A的工作方式 11. 3. 3 8255A的控制字 11. 3. 4 AT90LS8535和8255A的接口 11. 4 帶片內(nèi)RAM的I/O擴(kuò)展芯片8155 11. 4. 1 8155的引腳和內(nèi)部結(jié)構(gòu). 11. 4. 2 8155的I/O口工作方式 11. 4. 3 8155的定時(shí)/計(jì)數(shù)器 11. 4. 4 8155的命令和狀態(tài)字 11. 4. 5 AT90LS8535與8155的接口及編程 11. 5 定時(shí)/計(jì)數(shù)器芯片8253 11. 5. 1 8253的信號(hào)引腳和邏輯結(jié)構(gòu) 11. 5. 2 8253的工作方式 11. 5. 3 8253的控制字 11. 5. 4 AT90LS8535與8253的接口及編程 11. 6 實(shí)時(shí)時(shí)鐘芯片DS1302 11. 6. 1 DS1302的引腳和內(nèi)部結(jié)構(gòu) 11. 6. 2 DS1302的控制方式 11. 6. 3 AT90LS8535與DS1302的接口與編程 11. 7 數(shù)字溫度傳感器DS18B20 11. 7. 1 DSl8B20的引腳和內(nèi)部結(jié)構(gòu) 11. 7. 2 DS18B20的溫度測(cè)量 11. 7. 3 AT90LS8535與DS18B20的接口與編程 第12章 AT90LS8535的通信編程 12. 1 串口通信 12. 1. 1 異步串口UART通信 12. 1. 2 同步串口SPI通信 12. 2 I2C總線(xiàn) 12. 2. 1 I2C總線(xiàn)協(xié)議 12. 2. 2 采用AT90LS8535的并行I/O口模擬I2C總線(xiàn) 12. 3 CAN總線(xiàn) 12. 3. 1 CAN總線(xiàn)的特點(diǎn) 12. 3. 2 CAN協(xié)議的信息格式 12. 3. 3 CAN控制器SJA1000 12. 3. 4 AT90LS8535與SJA1000的接口及編程 12. 4 AT90LS8535單片機(jī)與PC的串行通信 12. 4. 1 基于VC 6. 0的PC串口通信 12. 4. 2 應(yīng)用實(shí)例 第13章 系統(tǒng)設(shè)計(jì)中的程序處理方法 13. 1 數(shù)字濾波處理 13. 1. 1 平滑濾波 13. 1. 2 中值濾波 13. 1. 3 程序判斷濾波 13. 2 非線(xiàn)性處理 13. 2. 1 查表法 13. 2. 2 線(xiàn)性插值法
標(biāo)簽: AVR 單片機(jī) C語(yǔ)言編程 應(yīng)用實(shí)例
上傳時(shí)間: 2013-11-04
上傳用戶(hù):元宵漢堡包
EZ-USB FX系列單片機(jī)USB外圍設(shè)備設(shè)計(jì)與應(yīng)用:PART 1 USB的基本概念第1章 USB的基本特性1.1 USB簡(jiǎn)介21.2 USB的發(fā)展歷程31.2.1 USB 1.131.2.2 USB 2.041.2.3 USB與IEEE 1394的比較41.3 USB基本架構(gòu)與總線(xiàn)架構(gòu)61.4 USB的總線(xiàn)結(jié)構(gòu)81.5 USB數(shù)據(jù)流的模式與管線(xiàn)的概念91.6 USB硬件規(guī)范101.6.1 USB的硬件特性111.6.2 USB接口的電氣特性121.6.3USB的電源管理141.7 USB的編碼方式141.8 結(jié)論161.9 問(wèn)題與討論16第2章 USB通信協(xié)議2.1 USB通信協(xié)議172.2 USB封包中的數(shù)據(jù)域類(lèi)型182.2.1 數(shù)據(jù)域位的格式182.3 封包格式192.4 USB傳輸?shù)念?lèi)型232.4.1 控制傳輸242.4.2 中斷傳輸292.4.3 批量傳輸292.4.4 等時(shí)傳輸292.5 USB數(shù)據(jù)交換格式302.6 USB描述符342.7 USB設(shè)備請(qǐng)求422.8 USB設(shè)備群組442.9 結(jié)論462.10 問(wèn)題與討論46第3章 設(shè)備列舉3.1注冊(cè)表編輯器473.2設(shè)備列舉的步驟493.3設(shè)備列舉步驟的實(shí)現(xiàn)--使用CATC分析工具513.4結(jié)論613.5問(wèn)題與討論61第4章 USB芯片與EZUSB4.1USB芯片的簡(jiǎn)介624.2USB接口芯片644.2.1Philips接口芯片644.2.2National Semiconductor接口芯片664.3內(nèi)含USB單元的微處理器684.3.1Motorola694.3.2Microchip694.3.3SIEMENS704.3.4Cypress714.4USB芯片總攬介紹734.5USB芯片的選擇與評(píng)估744.6問(wèn)題與討論80第5章 設(shè)備與驅(qū)動(dòng)程序5.1階層式的驅(qū)動(dòng)程序815.2主機(jī)的驅(qū)動(dòng)程序835.3驅(qū)動(dòng)程序的選擇865.4結(jié)論865.5問(wèn)題與討論87第6章 HID群組6.1HID簡(jiǎn)介886.2HID群組的傳輸速率886.3HID描述符906.3.1報(bào)告描述符936.3.2主要 main 項(xiàng)目類(lèi)型966.3.3整體 global 項(xiàng)目卷標(biāo)976.3.4區(qū)域 local 項(xiàng)目卷標(biāo)986.3.5簡(jiǎn)易的報(bào)告描述符996.3.6Descriptor Tool 描述符工具 1006.3.7兼容測(cè)試程序1016.4HID設(shè)備的基本請(qǐng)求1026.5Windows通信程序1036.6問(wèn)題與討論106PART 2 硬件技術(shù)篇第7章 EZUSB FX簡(jiǎn)介7.1簡(jiǎn)介1097.2EZUSB FX硬件框圖1097.3封包與PID碼1117.4主機(jī)是個(gè)主控者1137.4.1從主機(jī)接收數(shù)據(jù)1137.4.2傳送數(shù)據(jù)至主機(jī)1137.5USB方向1137.6幀1147.7EZUSB FX傳輸類(lèi)型1147.7.1批量傳輸1147.7.2中斷傳輸1147.7.3等時(shí)傳輸1157.7.4控制傳輸1157.8設(shè)備列舉1167.9USB核心1167.10EZUSB FX單片機(jī)1177.11重新設(shè)備列舉1177.12EZUSB FX端點(diǎn)1187.12.1EZUSB FX批量端點(diǎn)1187.12.2EZUSB FX控制端點(diǎn)01187.12.3EZUSB FX中斷端點(diǎn)1197.12.4EZUSB FX等時(shí)端點(diǎn)1197.13快速傳送模式1197.14中斷1207.15重置與電源管理1207.16EZUSB 2100系列1207.17FX系列--從FIFO1227.18FX系列--GPIF 通用型可程序化的接口 1227.19AN2122/26各種特性的摘要1227.20修訂ID1237.21引腳描述123第8章 EZUSB FX CPU8.1簡(jiǎn)介1308.28051增強(qiáng)模式1308.3EZUSB FX所增強(qiáng)的部分1318.4EZUSB FX寄存器接口1318.5EZUSB FX內(nèi)部RAM1318.6I/O端口1328.7中斷1328.8電源控制1338.9特殊功能寄存器 SFR 1348.10內(nèi)部總線(xiàn)1358.11重置136第9章 EZUSB FX內(nèi)存9.1簡(jiǎn)介1379.28051內(nèi)存1389.3擴(kuò)充的EZUSB FX內(nèi)存1399.4CS#與OE#信號(hào)1409.5EZUSB FX ROM版本141第10章 EZUSB FX輸入/輸出端口10.1簡(jiǎn)介14310.2I/O端口14310.3EZUSB輸入/輸出端口寄存器14610.3.1端口配置寄存器14710.3.2I/O端口寄存器14710.4EZUSB FX輸入/輸出端口寄存器14910.5EZUSB FX端口配置表15110.6I2C控制器15610.78051 I2C控制器15610.8控制位15810.8.1START位15810.8.2STOP位15810.8.3LASTRD位15810.9狀態(tài)位15910.9.1DONE位15910.9.2ACK位15910.9.3BERR位15910.9.4ID1, ID015910.10送出 WRITE I2C數(shù)據(jù)16010.11接收 READ I2C數(shù)據(jù)16010.12I2C激活加載器16010.13SFR尋址 FX 16210.14端口A~E的SFR控制165第11章 EZUSB FX設(shè)備列舉與重新設(shè)備列舉11.1簡(jiǎn)介16711.2預(yù)設(shè)的USB設(shè)備16911.3USB核心對(duì)于EP0設(shè)備請(qǐng)求的響應(yīng)17011.4固件下載17111.5設(shè)備列舉模式17211.6沒(méi)有存在EEPROM17311.7存在著EEPROM, 第一個(gè)字節(jié)是0xB0 0xB4, FX系列11.8存在著EEPROM, 第一個(gè)字節(jié)是0xB2 0xB6, FX系列11.9配置字節(jié)0,FX系列17711.10重新設(shè)備列舉 ReNumerationTM 17811.11多重重新設(shè)備列舉 ReNumerationTM 17911.12預(yù)設(shè)描述符179第12章 EZUSB FX批量傳輸12.1簡(jiǎn)介18812.2批量輸入傳輸18912.3中斷傳輸19112.4EZUSB FX批量IN的例子19112.5批量OUT傳輸19212.6端點(diǎn)對(duì)19412.7IN端點(diǎn)對(duì)的狀態(tài)19412.8OUT端點(diǎn)對(duì)的狀態(tài)19512.9使用批量緩沖區(qū)內(nèi)存19512.10Data Toggle控制19612.11輪詢(xún)的批量傳輸?shù)姆独?9712.12設(shè)備列舉說(shuō)明19912.13批量端點(diǎn)中斷19912.14中斷批量傳輸?shù)姆独?0112.15設(shè)備列舉說(shuō)明20512.16自動(dòng)指針器205第13章 EZUSB控制端點(diǎn)013.1簡(jiǎn)介20913.2控制端點(diǎn)EP021013.3USB請(qǐng)求21213.3.1取得狀態(tài) Get_Status 21413.3.2設(shè)置特性(Set_Feature)21713.3.3清除特性(Clear_Feature)21813.3.4取得描述符(Get_Descriptor)21913.3.5設(shè)置描述符(Set Descriptor)22313.3.6設(shè)置配置(Set_Configuration)22513.3.7取得配置(Get_Configuration)22513.3.8設(shè)置接口(Set_Interface)22513.3.9取得接口(Get_Interface)22613.3.10設(shè)置地址(Set_Address)22713.3.11同步幀22713.3.12固件加載228第14章 EZUSB FX等時(shí)傳輸14.1簡(jiǎn)介22914.2等時(shí)IN傳輸23014.2.1初始化設(shè)置23014.2.2IN數(shù)據(jù)傳輸23014.3等時(shí)OUT傳輸23114.3.1初始化設(shè)置23114.3.2數(shù)據(jù)傳輸23214.4設(shè)置等時(shí)FIFO的大小23214.5等時(shí)傳輸速度23414.5.1EZUSB 2100系列23414.5.2EZUSB FX系列23514.6快速傳輸 僅存于2100系列 23614.6.1快速寫(xiě)入23614.6.2快速讀取23714.7快速傳輸?shù)臅r(shí)序 僅存于2100系列 23714.7.1快速寫(xiě)入波形23814.7.2快速讀取波形23914.8快速傳輸速度(僅存于2100系列)23914.9其余的等時(shí)寄存器24014.9.1除能等時(shí)寄存器24014.9.20字節(jié)計(jì)數(shù)位24114.10以無(wú)數(shù)據(jù)來(lái)響應(yīng)等時(shí)IN令牌24214.11使用等時(shí)FIFO242第15章 EZUSB FX中斷15.1簡(jiǎn)介24315.2USB核心中斷24415.3喚醒中斷24415.4USB中斷信號(hào)源24515.5SUTOK與SUDAV中斷24815.6SOF中斷24915.7中止 suspend 中斷24915.8USB重置中斷24915.9批量端點(diǎn)中斷25015.10USB自動(dòng)向量25015.11USB自動(dòng)向量譯碼25115.12I2C中斷25215.13IN批量NAK中斷 僅存于AN2122/26與FX系列 25315.14I2C STOP反相中斷 僅存于AN2122/26與FX系列 25415.15從FIFO中斷 INT4 255第16章 EZUSB FX重置16.1簡(jiǎn)介25716.2EZUSB FX打開(kāi)電源重置 POR 25716.38051重置的釋放25916.3.1RAM的下載26016.3.2下載EEPROM26016.3.3外部ROM26016.48051重置所產(chǎn)生的影響26016.5USB總線(xiàn)重置26116.6EZUSB脫離26216.7各種重置狀態(tài)的總結(jié)263第17章 EZUSB FX電源管理17.1簡(jiǎn)介26517.2中止 suspend 26617.3回復(fù) resume 26717.4遠(yuǎn)程喚醒 remote wakeup 269第18章 EZUSB FX系統(tǒng)18.1簡(jiǎn)介27118.2DMA寄存器描述27218.2.1來(lái)源. 目的. 傳輸長(zhǎng)度地址寄存器27218.2.2DMA起始與狀態(tài)寄存器27518.2.3DMA同步突發(fā)使能寄存器27518.2.4虛擬寄存器27818.3RD/FRD與WR/FWR DMA閃控的選擇27818.4DMA閃控波形與延伸位的交互影響27918.4.1DMA外部寫(xiě)入27918.4.2DMA外部讀取280第19章 EZUSB FX寄存器19.1簡(jiǎn)介28219.2批量數(shù)據(jù)緩沖區(qū)寄存器28319.3等時(shí)數(shù)據(jù)FIFO寄存器28419.4等時(shí)字節(jié)計(jì)數(shù)寄存器28519.5CPU寄存器28719.6I/O端口配置寄存器28819.7I/O端口A~C輸入/輸出寄存器28919.8230 Kbaud UART操作--AN2122/26寄存器29119.9等時(shí)控制/狀態(tài)寄存器29119.10I2C寄存器29219.11中斷29419.12端點(diǎn)0控制與狀態(tài)寄存器29919.13端點(diǎn)1~7的控制與狀態(tài)寄存器30019.14整體USB寄存器30519.15快速傳輸30919.16SETUP數(shù)據(jù)31119.17等時(shí)FIFO的容量大小31119.18通用I/F中斷使能31219.19通用中斷請(qǐng)求31219.20輸入/輸出端口寄存器D與E31319.20.1端口D輸出31319.20.2輸入端口D腳位31319.20.3端口D輸出使能31319.20.4端口E輸出31319.20.5輸入端口E腳位31419.20.6端口E輸出使能31419.21端口設(shè)置31419.22接口配置31419.23端口A與端口C切換配置31619.23.1端口A切換配置#231619.23.2端口C切換配置#231719.24DMA寄存器31919.24.1來(lái)源. 目的. 傳輸長(zhǎng)度地址寄存器31919.24.2DMA起始與狀態(tài)寄存器32019.24.3DMA同步突發(fā)使能寄存器32019.24.4選擇8051 A/D總線(xiàn)作為外部FIFO321PART 3 固件技術(shù)篇第20章 EZUSB FX固件架構(gòu)與函數(shù)庫(kù)20.1固件架構(gòu)總覽32320.2固件架構(gòu)的建立32520.3固件架構(gòu)的副函數(shù)鉤子32520.3.1工作分配器32620.3.2設(shè)備請(qǐng)求 device request 32620.3.3USB中斷服務(wù)例程32920.4固件架構(gòu)整體變量33220.5描述符表33320.5.1設(shè)備描述符33320.5.2配置描述符33420.5.3接口描述符33420.5.4端點(diǎn)描述符33520.5.5字符串描述符33520.5.6群組描述符33520.6EZUSB FX固件的函數(shù)庫(kù)33620.6.1包含文件 *.H 33620.6.2子程序33620.6.3整體變量33820.7固件架構(gòu)的原始程序代碼338第21章 EZUSB FX固件范例程序21.1范例程序的簡(jiǎn)介34621.2外圍I/O測(cè)試程序34721.3端點(diǎn)對(duì), EP_PAIR范例35221.4批量測(cè)試, BulkTest范例36221.5等時(shí)傳輸, ISOstrm范例36821.6問(wèn)題與討論373PART 4 實(shí)驗(yàn)篇第22章 EZUSB FX仿真器22?1簡(jiǎn)介37522?2所需的工具37622?3EZUSB FX框圖37722.4EZUSB最終版本的系統(tǒng)框圖37822?5第一次下載程序37822.6EZUSB FX開(kāi)發(fā)系統(tǒng)框圖37922.7設(shè)置開(kāi)發(fā)環(huán)境38022.8EZUSB FX開(kāi)發(fā)工具組的內(nèi)容38122.9EZUSB FX開(kāi)發(fā)工具組軟件38222.9.1初步安裝程序38222.9.2確認(rèn)主機(jī) 個(gè)人計(jì)算機(jī) 是否支持USB38222.10安裝EZUSB控制平臺(tái). 驅(qū)動(dòng)程序以及文件38322.11EZUSB FX開(kāi)發(fā)電路板38522.11.1簡(jiǎn)介38522.11.2開(kāi)發(fā)電路板的瀏覽38522.11.3所使用的8051資源38622.11.4詳細(xì)電路38622.11.5LED的顯示38722.11.6Jumper38722.11.7連接器39122.11.8內(nèi)存映象圖39222.11.9PLD信號(hào)39422.11.10PLD源文件文件39522.11.11雛形板的擴(kuò)充連接器P1~P639722.11.12Philips PCF8574 I/O擴(kuò)充IC40022.12DMA USB FX I/O LAB開(kāi)發(fā)工具介紹40122.12.1USBFX簡(jiǎn)介40122.12.2USBFX及外圍整體環(huán)境介紹40322?12?3USBFX與PC連接軟件介紹40422.12.4USBFX硬件功能介紹404第23章 LED顯示器輸出實(shí)驗(yàn)23.1硬件設(shè)計(jì)與基本概念40923.2固件設(shè)計(jì)41023.3.1固件架構(gòu)文件FW.C41123.3.2描述符文件DESCR.A5141223.3.3外圍接口文件PERIPH.C41723.4固件程序代碼的編譯與鏈接42123.5Windows程序, VB設(shè)計(jì)42323.6INF文件的編寫(xiě)設(shè)計(jì)42423.7結(jié)論42623.8問(wèn)題與討論427第24章 七段顯示器與鍵盤(pán)的輸入/輸出實(shí)驗(yàn)24.1硬件設(shè)計(jì)與基本概念42824.2固件設(shè)計(jì)43124.2.1七段顯示器43124.2.24×4鍵盤(pán)掃描43324.3固件程序代碼的編譯與鏈接43424.4Windows程序, VB設(shè)計(jì)43624.5問(wèn)題與討論437第25章 LCD文字型液晶顯示器輸出實(shí)驗(yàn)25.1硬件設(shè)計(jì)與基本概念43825.1.1液晶顯示器LCD43825.2固件設(shè)計(jì)45225.3固件程序代碼的編譯與鏈接45625.4Windows程序, VB設(shè)計(jì)45725.5問(wèn)題與討論458第26章 LED點(diǎn)陣輸出實(shí)驗(yàn)26.1硬件設(shè)計(jì)與基本概念45926.2固件設(shè)計(jì)46326.3固件程序代碼的編譯與鏈接46326.4Windows程序, VB設(shè)計(jì)46526.5問(wèn)題與討論465第27章 步進(jìn)電機(jī)輸出實(shí)驗(yàn)27.1硬件設(shè)計(jì)與基本概念46627.1.11相激磁46727.1.22相激磁46727.1.31-2相激磁46827?1?4PMM8713介紹46927.2固件設(shè)計(jì)47327.3固件程序代碼的編譯與鏈接47427.4Windows程序, VB設(shè)計(jì)47627.5問(wèn)題與討論477第28章 I2C接口輸入/輸出實(shí)驗(yàn)28.1硬件設(shè)計(jì)與基本概念47828.2固件設(shè)計(jì)48128.3固件程序代碼的編譯與鏈接48328.4Windows程序, VB設(shè)計(jì)48428.5問(wèn)題與討論485第29章 A/D轉(zhuǎn)換器與D/A轉(zhuǎn)換器的輸入/輸出實(shí)驗(yàn)29.1硬件設(shè)計(jì)與基本概念48629.1.1A/D轉(zhuǎn)換器48629.1.2D/A轉(zhuǎn)換器49029.2固件設(shè)計(jì)49329.2.1A/D轉(zhuǎn)換器的固件設(shè)計(jì)49329.2.2D/A轉(zhuǎn)換器的固件設(shè)計(jì)49629.3固件程序代碼的編譯與鏈接49729.4Windows程序, VB設(shè)計(jì)49829.5問(wèn)題與討論499第30章 LCG繪圖型液晶顯示器輸出實(shí)驗(yàn)30.1硬件設(shè)計(jì)與基本概念50030.1.1繪圖型LCD50030.1.2繪圖型LCD控制指令集50330.1.3繪圖型LCD讀取與寫(xiě)入時(shí)序圖50530.2固件設(shè)計(jì)50630.2.1LCG驅(qū)動(dòng)程序50630.2.2USB固件碼51330.3固件程序代碼的編譯與鏈接51630.4Windows程序, VB設(shè)計(jì)51730.5問(wèn)題與討論518附錄A Cypress控制平臺(tái)的操作A.1EZUSB控制平臺(tái)總覽519A.2主畫(huà)面520A.3熱插拔新的USB設(shè)備521A.4各種工具欄的使用524A.5故障排除526A.6控制平臺(tái)的進(jìn)階操作527A.7測(cè)試Unary Op工具欄上的按鈕功能528A.8測(cè)試制造商請(qǐng)求的工具欄 2100 系列的開(kāi)發(fā)電路板 529A.9測(cè)試等時(shí)傳輸工具欄532A.10測(cè)試批量傳輸工具欄533A.11測(cè)試重置管線(xiàn)工具欄535A.12測(cè)試設(shè)置接口工具欄537A.13測(cè)試制造商請(qǐng)求工具欄 FX系列開(kāi)發(fā)電路板A.14執(zhí)行Get Device Descriptor 操作來(lái)驗(yàn)證開(kāi)發(fā)板的功能是否正確539A.15從EZUSB控制平臺(tái)中, 加載dev_io的范例并且加以執(zhí)行540A.16從Keil偵錯(cuò)應(yīng)用程序中, 加載dev_io范例程序代碼, 然后再加以執(zhí)行542A.17將dev_io 目標(biāo)文件移開(kāi), 且使用Keil IDE 集成開(kāi)發(fā)環(huán)境 來(lái)重建545A.18在偵錯(cuò)器下執(zhí)行dev_io目標(biāo)文件, 并且使用具有偵錯(cuò)能力的IDE547A.19在EZUSB控制平臺(tái)下, 執(zhí)行ep_pair目標(biāo)文件A.20如何修改fw范例, 并在開(kāi)發(fā)電路板上產(chǎn)生等時(shí)傳輸550附錄BEZUSB 2100系列及EZUSB FX系列引腳表B.1EZUSB 2100系列引腳表555B?2EZUSB FX系列引腳圖表561附錄C EZUSB FX寄存器總覽附錄D EEPROM燒錄方式
標(biāo)簽: EZ-USB USB 單片機(jī) 外圍設(shè)備
上傳時(shí)間: 2013-11-21
上傳用戶(hù):努力努力再努力
有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過(guò)為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過(guò)輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語(yǔ)言的訪(fǎng)問(wèn)設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來(lái)調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪(fǎng)問(wèn)的第一步就是打開(kāi)一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開(kāi)一個(gè)設(shè)備的句柄為了打開(kāi)一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開(kāi)句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開(kāi)一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開(kāi)它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類(lèi)KunitizedName來(lái)構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱(chēng)的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開(kāi)句柄用這種方式打開(kāi)一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫(kù)提供兩個(gè)助手類(lèi)來(lái)使獲得對(duì)該接口的訪(fǎng)問(wèn)容易一些,這兩個(gè)類(lèi)是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類(lèi)封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類(lèi)中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類(lèi)的一個(gè)實(shí)例來(lái)獲得一個(gè)或更多的CdeviceInterface類(lèi)的實(shí)例。CdeviceInterface類(lèi)是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來(lái)打開(kāi)設(shè)備。下面用一個(gè)小例子來(lái)顯示這些類(lèi)最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來(lái)產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設(shè)備類(lèi)成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶(hù)級(jí)句柄被撤銷(xiāo)后,I/O管理器調(diào)用CleanUp。當(dāng)沒(méi)有任何用戶(hù)級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪(fǎng)問(wèn)的時(shí)候,I/O管理器調(diào)用Close。如果被打開(kāi)的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無(wú)效功能)。以前為Windows95編寫(xiě)的VxD的應(yīng)用程序代碼中可能會(huì)在打開(kāi)設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒(méi)有特權(quán)的用戶(hù)企圖打開(kāi)這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴(lài)于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過(guò)調(diào)用Kirp::Mdl來(lái)存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過(guò)KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來(lái)對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒(méi)有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來(lái)存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴(lài)于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來(lái)構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來(lái)作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過(guò)調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過(guò)調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪(fǎng)問(wèn)通過(guò)調(diào)用KIrp::Mdl來(lái)實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫(xiě)訪(fǎng)問(wèn)權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來(lái)配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來(lái)定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執(zhí)行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來(lái)如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口
上傳時(shí)間: 2013-10-17
上傳用戶(hù):gai928943
load initial_track s; % y:initial data,s:data with noiseT=0.1; % yp denotes the sample value of position% yv denotes the sample value of velocity% Y=[yp(n);yv(n)];% error deviation caused by the random acceleration % known dataY=zeros(2,200);Y0=[0;1];Y(:,1)=Y0;A=[1 T 0 1]; B=[1/2*(T)^2 T]';H=[1 0]; C0=[0 0 0 1];C=[C0 zeros(2,2*199)];Q=(0.25)^2; R=(0.25)^2;
上傳時(shí)間: 2014-12-28
上傳用戶(hù):asaqq
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1