亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

不銹鋼<b>焊</b>接

  • 8階開關電容濾波器MAX29X系列的應用設計

    MAX29X是美國MAXIM公司生瓣的8階開關電容低通濾波器,由于價格便宜、使用方便、設計簡單,在通訊、信號自理等領域得到了廣泛的應用。本文就其工作原理、電氣參數、設計注意事項等問題作了討論,具有一定的實用參考價值。關鍵詞:開關電容、濾波器、設計 1 引言     開關電容濾波器在近些年得到了迅速的發展,世界上一些知名的半導體廠家相繼推出了自己的開頭電容濾波器集成電路,使形狀電容濾波器的發展上了一個新臺階。     MAXIM公司在模擬器件生產領域頗具影響,它生產MAX291/292/293/294/295/296/297系列8階低通開關電容濾波器由于使用方便(基本上不需外接元件)、設計簡單(頻率響應函數是固定的,只需確定其拐角頻率即截止頻率)、尺寸小(有8-pin    DIP封裝)等優點,在ADC的反混疊濾波、噪聲分析、電源噪聲抑制等領域得到了廣泛的應用。     MAX219/295為巴特活思(型濾波器,在通頻帶內,它的增益最穩定,波動小,主要用于儀表測量等要求整個通頻帶內增益恒定的場合。MAX292/296為貝塞爾(Bessel)濾波器,在通頻帶內它的群時延時恒定的,相位對頻率呈線性關系,因此脈沖信號通過MAX292/296之后尖峰幅度小,穩定速度快。由于脈沖信號通過貝塞爾濾波器之后所有頻率分量的延遲時間是相同的,故可保證波形基本不變。關于巴特活和貝塞爾濾波器的特性可能圖1來說明。圖1的蹤跡A為加到濾波器輸入端的3kHz的脈沖,這里我們把濾波器的截止頻率設為10kHZ。蹤跡B通過MAX292/296后的波形。從圖中可以看出,由于MAX292/296在通帶內具有線性相位特性,輸出波形基本上保持了方波形狀,只是邊沿處變圓了一些。方波通過MAX291/295之后,由于不同頻率的信號產生的時延不同,輸出波形中就出現了尖峰(overshoot)和鈴流(ringing)。     MAX293/294/297為8階圓型(Elliptic)濾波器,它的滾降速度快,從通頻帶到阻帶的過渡帶可以作得很窄。在橢圓型濾波器中,第一個傳輸零點后輸出將隨頻率的變高而增大,直到第二個零點處。這樣幾番重復就使阻事賓頻響呈現波浪形,如圖2所示。阻帶從fS起算起,高于頻率fS處的增益不會超過fS處的增益。在橢圓型濾波中,通頻帶內的增益存在一定范圍的波動。橢圓型濾波器的一個重要參數就是過渡比。過渡比定義為阻帶頻率fS與拐角頻率(有時也等同為截止頻率)由時鐘頻率確定。時鐘既可以是外接的時鐘,也可以是自己的內部時鐘。使用內部時鐘時只需外接一個定時用的電容既可。     在MAX29X系列濾波器集成電路中,除了濾波器電路外還有一個獨立的運算放大器(其反相輸入端已在內部接地)。用這個運算放大器可以組成配合MAX29X系列濾波器使用后的濾波、反混濾波等連續時間低通濾波器。     下面歸納一下它們的特點:     ●全部為8階低通濾波器。MAX291/MAX295為巴特沃思濾波器;MAX292/296為貝塞爾濾波器;MAX293/294/297為橢圓濾波器。     ●通過調整時鐘,截止頻率的調整范圍為:0.1Hz~25kHz(MAX291/292/293*294);0.1Hz~kHz(MAX295/296/297)。     ●既可用外部時鐘也可用內部時鐘作為截止頻率的控制時鐘。     ●時鐘頻率和截止頻率的比率:10∶1(MAX291/292/293/294);50∶1(MAX295/296/297)。     ●既可用單+5V電源供電也可用±5V雙電源供電。     ●有一個獨立的運算放大器可用于其它應用目的。     ●8-pin DIP、8-pin SO和寬SO-16多種封裝。2 管腳排列和主要電氣參數     MAX29X系列開頭電容濾波器的管腳排列如圖3所示。     管腳功能定義如下:     CLK:時鐘輸入。     OP OUT:獨立運放的輸出端。     OP INT:獨立運放的同相輸入端。     OUT:濾波器輸出。     IN:濾波器輸入。     V-:負電源 。雙電源供電時搛-2.375~-5.5V之間的電壓,單電源供電時V--=-V。     V+:正電源。雙電源供電時V+=+2.35~+5.5V,單電源供電時V+=+4.75~+11.0V。     GND:地線。單電源工作時GND端必須用電源電壓的一半作偏置電壓。     NC:空腳,無連線。     MAX29X的極限電氣參數如下:     電源(V+~V-):12V     輸入電壓(任意腳):V--0.3V≤VIN≤V++0.3V     連續工作時的功耗:8腳塑封DIP:727mW;8腳SO:471mW;16腳寬SO:762mW;8腳瓷封DIP:640mW。     工作溫度范圍:MAX29-C-:0℃~+70℃;MAX29-E-:-40℃~+85℃;MAX29-MJA:-55℃~+125℃;保存溫度范圍:-65℃~+160℃;焊接溫度(10秒):+300℃;     大多數的形狀電容濾波器都采用四節級連結構,每一節包含兩個濾波器極點。這種方法的特點就是易于設計。但采用這種方法設計出來的濾波器的特性對所用元件的元件值偏差很敏感。基于以上考慮,MAX29X系列用帶有相加和比例功能的開關電容持了梯形無源濾波器,這種方法保持了梯形無源濾波器的優點,在這種結構中每個元件的影響作用是對于整個頻率響應曲線的,某元件值的誤差將會分散到所有的極點,因此不值像四節級連結構那樣對某一個極點特別明顯的影響。3 MAX29X的頻率特性     MAX29X的頻率特性如圖4所示。圖中的fs都假定為1kHz。4 設計考慮     下面對MAX29X系列形狀電容濾波器的使用做些討論。4.1 時鐘信號     MAX29X系列開頭電容濾波器推薦使用的時鐘信號最高頻率為2.5MHz。根據對應的時鐘頻率和拐角頻率的比值,MAX291/MAX292/MAX293/MAX294的拐角頻率最高為25kHz.MAX295/MAX296/MAX297的拐角頻率最高為50kHz 。     MAX29X系列開關電容濾波器的時鐘信號既可幅外部時鐘直接驅動也可由內部振蕩器產生。使用外部時鐘時,無論是采用單電源供電還是雙電源供電,CLK可直接和采用+5V供電的CMOS時鐘信號發生器的輸出相連。通過調整外部時鐘的頻率,可完成濾波器拐角的實時調整。     當使用內部時鐘時,振蕩器的頻率由接在CLK端上的電容VCOSC決定:     fCOSC (kHz)=105/3COSC (pF) 4.2 供電     MAX29X系列開關電容濾波器既可用單電源工作也可用雙電源工作。雙電源供電時的電源電壓范圍為±2.375~±5.5V。在實際電路中一般要在正負電源和GND之間接一旁路電容。     當采用單電源供電時,V-端接地,而GND端要通過電阻分壓獲得一個電壓參考,該電壓參考的電壓值為1/2的電源電壓,參見圖5。4.3 輸入信號幅度范圍限制     MAX29X允許的輸入信號的最大范圍為V--0.3V~V++0.3V。一般情況下在+5V單電源供電時輸入信號范圍取1V~4V,±5V雙電源供電時,輸入信號幅度范圍取±4V。如果輸入信號超過此范圍,總諧波失真THD和噪聲就大大增加;同樣如果輸入信號幅度過小(VP-P<1V),也會造成THD和噪聲的增加。4.4 獨立運算放大器的用法     MAX29X中都設計有一個獨立的運算放大器,這個放大器和濾波器的實現無直接關系,用這個放大器可組成一個一階和二階濾波器,用于實現MAX29X之前的反混疊濾波功能鄞MAX29X之后的時鐘噪聲抑制功能。這個運算放大器的反相端已在內部和GND相連。     圖6是用該獨立運放組成的2階低通濾波器的電路,它的拐角頻率為10kHz,輸入阻抗為22Ω,可滿足MAX29X形狀電容濾波器的最小負載要求(MAX29X的輸出負載要求不小于20kΩ)可以通過改變R1、R2、R3、C1、C2的元件值改變拐角頻率。具體的元件值和拐角頻率的對應關系參見表1。

    標簽: 29X MAX 29 8階

    上傳時間: 2013-10-18

    上傳用戶:macarco

  • PSHLY-B回路電阻測試儀

    PSHLY-B回路電阻測試儀介紹

    標簽: PSHLY-B 回路 電阻測試儀

    上傳時間: 2013-11-05

    上傳用戶:木子葉1

  • at91rm9200啟動過程教程

    at91rm9200啟動過程教程 系統上電,檢測BMS,選擇系統的啟動方式,如果BMS為高電平,則系統從片內ROM啟動。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩個地址處都可以訪問到ROM。由于9200的ROM中固化了一個BOOTLOAER程序。所以PC從0X0處開始執行這個BOOTLOAER(準確的說應該是一級BOOTLOADER)。這個BOOTLOER依次完成以下步驟: 1、PLL SETUP,設置PLLB產生48M時鐘頻率提供給USB DEVICE。同時DEBUG USART也被初始化為48M的時鐘頻率; 2、相應模式下的堆棧設置; 3、檢測主時鐘源(Main oscillator); 4、中斷控制器(AIC)的設置; 5、C 變量的初始化; 6、跳到主函數。 完成以上步驟后,我們可以認為BOOT過程結束,接下來的就是LOADER的過程,或者也可以認為是裝載二級BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、連接在外部總線上的8位并行FLASH的順序依次來找合法的BOOT程序。所謂合法的指的是在這些存儲設備的開始地址處連續的存放的32個字節,也就是8條指令必須是跳轉指令或者裝載PC的指令,其實這樣規定就是把這8條指令當作是異常向量表來處理。必須注意的是第6條指令要包含將要裝載的映像的大小。關于如何計算和寫這條指令可以參考用戶手冊。一旦合法的映像找到之后,則BOOT程序會把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超過16K-3K的大小。當BOOT程序完成了把合法的映像搬到SRAM的任務以后,接下來就進行存儲器的REMAP,經過REMAP之后,SRAM從映設前的0X200000地址處被映設到了0X0地址并且程序從0X0處開始執行。而ROM這時只能在0X100000這個地址處看到了。至此9200就算完成了一種形式的啟動過程。如果BOOT程序在以上所列的幾種存儲設備中找到合法的映像,則自動初始化DEBUG USART口和USB DEVICE口以準備從外部載入映像。對DEBUG口的初始化包括設置參數115200 8 N 1以及運行XMODEM協議。對USB DEVICE進行初始化以及運行DFU協議。現在用戶可以從外部(假定為PC平臺)載入你的映像了。在PC平臺下,以WIN2000為例,你可以用超級終端來完成這個功能,但是還是要注意你的映像的大小不能超過13K。一旦正確從外部裝載了映像,接下來的過程就是和前面一樣重映設然后執行映像了。我們上面講了BMS為高電平,AT91RM9200選擇從片內的ROM啟動的一個過程。如果BMS為低電平,則AT91RM9200會從片外的FLASH啟動,這時片外的FLASH的起始地址就是0X0了,接下來的過程和片內啟動的過程是一樣的,只不過這時就需要自己寫啟動代碼了,至于怎么寫,大致的內容和ROM的BOOT差不多,不同的硬件設計可能有不一樣的地方,但基本的都是一樣的。由于片外FLASH可以設計的大,所以這里編寫的BOOTLOADER可以一步到位,也就是說不用像片內啟動可能需要BOOT好幾級了,目前AT91RM9200上使用較多的bootloer是u-boot,這是一個開放源代碼的軟件,用戶可以自由下載并根據自己的應用配置。總的說來,筆者以為AT91RM9200的啟動過程比較簡單,ATMEL的服務也不錯,不但提供了片內啟動的功能,還提供了UBOOT可供下載。筆者寫了一個BOOTLODER從片外的FLASHA啟動,效果還可以。 uboot結構與使用uboot是一個龐大的公開源碼的軟件。他支持一些系列的arm體系,包含常見的外設的驅動,是一個功能強大的板極支持包。其代碼可以 http://sourceforge.net/projects/u-boot下載 在9200上,為了啟動uboot,還有兩個boot軟件包,分別是loader和boot。分別完成從sram和flash中的一級boot。其源碼可以從atmel的官方網站下載。 我們知道,當9200系統上電后,如果bms為高電平,則系統從片內rom啟動,這時rom中固化的boot程序初始化了debug口并向其發送'c',這時我們打開超級終端會看到ccccc...。這說明系統已經啟動,同時xmodem協議已經啟動,用戶可以通過超級終端下載用戶的bootloader。作為第一步,我們下載loader.bin.loader.bin將被下載到片內的sram中。這個loder完成的功能主要是初始化時鐘,sdram和xmodem協議,為下載和啟動uboot做準備。當下載了loader.bin后,超級終端會繼續打印:ccccc....。這時我們就可以下在uboot了。uboot將被下載到sdram中的一個地址后并把pc指針調到此處開始執行uboot。接著我們就可以在終端上看到uboot的shell啟動了,提示符uboot>,用戶可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了對內存、flash、網絡、系統啟動等一些命令。 如果系統上電時bms為低電平,則系統從片外的flash啟動。為了從片外的flash啟動uboot,我們必須把boot.bin放到0x0地址出,使得從flash啟動后首先執行boot.bin,而要少些boot.bin,就要先完成上面我們講的那些步驟,首先開始從片內rom啟動uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz燒寫到flash中的目的,假如我們已經啟動了uboot,可以這樣操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系統復位,就可以看到系統先啟動boot,然后解壓縮uboot.gz,然后啟動uboot。注意,這里uboot必須壓縮成.gz文件,否則會出錯。 怎么編譯這三個源碼包呢,首先要建立一個arm的交叉編譯環境,關于如何建立,此處不予說明。建立好了以后,分別解壓源碼包,然后修改Makefile中的編譯器項目,正確填寫你的編譯器的所在路徑。 對loader和boot,直接make。對uboot,第一步:make_at91rm9200dk,第二步:make。這樣就會在當前目錄下分別生成*.bin文件,對于uboot.bin,我們還要壓縮成.gz文件。 也許有的人對loader和boot搞不清楚為什么要兩個,有什么區別嗎?首先有區別,boot主要完成從flash中啟動uboot的功能,他要對uboot的壓縮文件進行解壓,除此之外,他和loader并無大的區別,你可以把boot理解為在loader的基礎上加入了解壓縮.gz的功能而已。所以這兩個并無多大的本質不同,只是他們的使命不同而已。 特別說名的是這三個軟件包都是開放源碼的,所以用戶可以根據自己的系統的情況修改和配置以及裁減,打造屬于自己系統的bootloder。

    標簽: 9200 at 91 rm

    上傳時間: 2013-10-27

    上傳用戶:wsf950131

  • Keil C51使用詳解

    Keil C51使用詳解Keil C51 是美國Keil Software 公司出品的51 系列兼容單片機C 語言軟件開發系統,與匯編相比,C 語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。用過匯編語言后再使用C 來開發,體會更加深刻。Keil C51 軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。下面詳細介紹 Keil C51 開發系統各部分功能和使用。第二節 Keil C51 單片機軟件開發系統的整體結構C51 工具包的整體結構,如圖(1)所示,其中uVision 與Ishell 分別是C51 forWindows 和for Dos 的集成開發環境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發流程。開發人員可用IDE 本身或其它編輯器編輯C 或匯編源文件。然后分別由C51 及A51 編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51 創建生成庫文件,也可以與庫文件一起經L51 連接定位生成絕對目標文件(.ABS)。ABS 文件由OH51 轉換成標準的Hex 文件,以供調試器dScope51 或tScope51 使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM 中。圖(1) C51 工具包整體結構圖第三節 Keil C51 工具包的安裝81. C51 for Dos在 Windows 下直接運行軟件包中DOS\C51DOS.exe 然后選擇安裝目錄即可。完畢后欲使系統正常工作須進行以下操作(設C:\C51 為安裝目錄):修改 Autoexec.bat,加入path=C:\C51\BinSet C51LIB=C:\C51\LIBSet C51INC=C:\C51\INC然后運行Autoexec.bat2. C51 for Windows 的安裝及注意事項:在 Windows 下運行軟件包中WIN\Setup.exe,最好選擇安裝目錄與C51 for Dos相同,這樣設置最簡單(設安裝于C:\C51 目錄下)。然后將軟件包中crack 目錄中的文件拷入C:\C51\Bin 目錄下。第四節 Keil C51 工具包各部分功能及使用簡介1. C51 與A51(1) C51C51 是C 語言編譯器,其使用方法為:C51 sourcefile[編譯控制指令]或者 C51 @ commandfile其中 sourcefile 為C 源文件(.C)。大量的編譯控制指令完成C51 編譯器的全部功能。包控C51 輸出文件C.LST,.OBJ,.I 和.SRC 文件的控制。源文件(.C)的控制等,詳見第五部分的具體介紹。而 Commandfile 為一個連接控制文件其內容包括:.C 源文件及各編譯控制指令,它沒有固定的名字,開發人員可根據自己的習慣指定,它適于用控制指令較多的場合。(2) A51A51 是匯編語言編譯器,使用方法為:9A51 sourcefile[編譯控制指令]或 A51 @ commandfile其中sourcefile 為匯編源文件(.asm或.a51),而編譯控制指令的使用與其它匯編如ASM語言類似,可參考其他匯編語言材料。Commandfile 同C51 中的Commandfile 類似,它使A51 使用和修改方便。2. L51 和BL51(1) L51L51 是Keil C51 軟件包提供的連接/定位器,其功能是將編譯生成的OBJ 文件與庫文件連接定位生成絕對目標文件(.ABS),其使用方法為:L51 目標文件列表[庫文件列表] [to outputfile] [連接控制指令]或 L51 @Commandfile源程序的多個模塊分別經 C51 與A51 編譯后生成多個OBJ 文件,連接時,這些文件全列于目標文件列表中,作為輸入文件,如果還需與庫文件(.LiB)相連接,則庫文件也必須列在其后。outputfile 為輸文件名,缺少時為第一模塊名,后綴為.ABS。連接控制指令提供了連接定位時的所有控制功能。Commandfile 為連接控制文件,其具體內容是包括了目標文件列表,庫文件列表及輸出文件、連接控制命令,以取代第一種繁瑣的格式,由于目標模塊庫文件大多不止1 個,因而第2 種方法較多見,這個文件名字也可由使用者隨意指定。(2) Bl51BL51 也是C51 軟件包的連接/定位器,其具有L51 的所有功能,此外它還具有以下3 點特別之處:a. 可以連接定位大于64kBytes 的程序。b. 具有代碼域及域切換功能(CodeBanking & Bank Switching)c. 可用于RTX51 操作系統RTX51 是一個實時多任務操作系統,它改變了傳統的編程模式,甚至不必用main( )函數,單片機系統軟件向RTOS 發展是一種趨勢,這種趨勢對于186 和38610及68K 系列CPU 更為明顯和必須,對8051 因CPU 較為簡單,程序結構等都不太復雜,RTX51 作用顯得不太突出,其專業版軟件PK51 軟件包甚至不包括RTX51Full,而只有一個RTX51TINY 版本的RTOS。RTX51 TINY 適用于無外部RAM 的單片機系統,因而可用面很窄,在本文中不作介紹。Bank switching 技術因使用很少也不作介紹。3. DScope51,Tscope51 及Monitor51(1) dScope51dScope51 是一個源級調試器和模擬器,它可以調試由C51 編譯器、A51 匯編器、PL/M-51 編譯器及ASM-51 匯編器產生的程序。它不需目標板(for windows 也可通過mon51 接目標板),只能進行軟件模擬,但其功能強大,可模擬CPU 及其外圍器件,如內部串口,外部I/O 及定時器等,能對嵌入式軟件功能進行有效測試。

    標簽: Keil C51 使用詳解

    上傳時間: 2013-11-01

    上傳用戶:zhouxuepeng1

  • PCB可測性設計布線規則之建議―從源頭改善可測率

    P C B 可測性設計布線規則之建議― ― 從源頭改善可測率PCB 設計除需考慮功能性與安全性等要求外,亦需考慮可生產與可測試。這里提供可測性設計建議供設計布線工程師參考。1. 每一個銅箔電路支點,至少需要一個可測試點。如無對應的測試點,將可導致與之相關的開短路不可檢出,并且與之相連的零件會因無測試點而不可測。2. 雙面治具會增加制作成本,且上針板的測試針定位準確度差。所以Layout 時應通過Via Hole 盡可能將測試點放置于同一面。這樣就只要做單面治具即可。3. 測試選點優先級:A.測墊(Test Pad) B.通孔(Through Hole) C.零件腳(Component Lead) D.貫穿孔(Via Hole)(未Mask)。而對于零件腳,應以AI 零件腳及其它較細較短腳為優先,較粗或較長的引腳接觸性誤判多。4. PCB 厚度至少要62mil(1.35mm),厚度少于此值之PCB 容易板彎變形,影響測點精準度,制作治具需特殊處理。5. 避免將測點置于SMT 之PAD 上,因SMT 零件會偏移,故不可靠,且易傷及零件。6. 避免使用過長零件腳(>170mil(4.3mm))或過大的孔(直徑>1.5mm)為測點。7. 對于電池(Battery)最好預留Jumper,在ICT 測試時能有效隔離電池的影響。8. 定位孔要求:(a) 定位孔(Tooling Hole)直徑最好為125mil(3.175mm)及其以上。(b) 每一片PCB 須有2 個定位孔和一個防呆孔(也可說成定位孔,用以預防將PCB反放而導致機器壓破板),且孔內不能沾錫。(c) 選擇以對角線,距離最遠之2 孔為定位孔。(d) 各定位孔(含防呆孔)不應設計成中心對稱,即PCB 旋轉180 度角后仍能放入PCB,這樣,作業員易于反放而致機器壓破板)9. 測試點要求:(e) 兩測點或測點與預鉆孔之中心距不得小于50mil(1.27mm),否則有一測點無法植針。以大于100mil(2.54mm)為佳,其次是75mil(1.905mm)。(f) 測點應離其附近零件(位于同一面者)至少100mil,如為高于3mm 零件,則應至少間距120mil,方便治具制作。(g) 測點應平均分布于PCB 表面,避免局部密度過高,影響治具測試時測試針壓力平衡。(h) 測點直徑最好能不小于35mil(0.9mm),如在上針板,則最好不小于40mil(1.00mm),圓形、正方形均可。小于0.030”(30mil)之測點需額外加工,以導正目標。(i) 測點的Pad 及Via 不應有防焊漆(Solder Mask)。(j) 測點應離板邊或折邊至少100mil。(k) 錫點被實踐證實是最好的測試探針接觸點。因為錫的氧化物較輕且容易刺穿。以錫點作測試點,因接觸不良導致誤判的機會極少且可延長探針使用壽命。錫點尤其以PCB 光板制作時的噴錫點最佳。PCB 裸銅測點,高溫后已氧化,且其硬度高,所以探針接觸電阻變化而致測試誤判率很高。如果裸銅測點在SMT 時加上錫膏再經回流焊固化為錫點,雖可大幅改善,但因助焊劑或吃錫不完全的緣故,仍會出現較多的接觸誤判。

    標簽: PCB 可測性設計 布線規則

    上傳時間: 2014-01-14

    上傳用戶:cylnpy

  • 驅動程序與應用程序的接口

    有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法: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;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。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 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數: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,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數InputBuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示: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 . . .   } }

    標簽: 驅動程序 應用程序 接口

    上傳時間: 2013-10-17

    上傳用戶:gai928943

  • 實驗指導書 (TPC-H實驗臺C語言版)

    《現代微機原理與接口技術》實驗指導書 TPC-H實驗臺C語言版 1.實驗臺結構1)I / O 地址譯碼電路如上圖1所示地址空間280H~2BFH共分8條譯碼輸出線:Y0~Y7 其地址分別是280H~287H、288H~28FH、290H~297H、298H~29FH、2A0H~2A7H、2A8H~2AFH、2B0H~2B7H、2B8H~2BFH,8根譯碼輸出線在實驗臺I/O地址處分別由自鎖緊插孔引出供實驗選用(見圖2)。 2) 總線插孔采用“自鎖緊”插座在標有“總線”區引出數據總線D7~D0;地址總線A9~A0,讀、寫信號IOR、IOW;中斷請求信號IRQ ;DMA請求信號DRQ1;DMA響應信號DACK1 及AEN信號,供學生搭試各種接口實驗電路使用。3) 時鐘電路如圖-3所示可以輸出1MHZ 2MHZ兩種信號供A/D轉換器定時器/計數器串行接口實驗使用。圖34) 邏輯電平開關電路如圖-4所示實驗臺右下方設有8個開關K7~K0,開關撥到“1”位置時開關斷開,輸出高電平。向下打到“0”位置時開關接通,輸出低電平。電路中串接了保護電阻使接口電路不直接同+5V 、GND相連,可有效地防止因誤操作誤編程損壞集成電路現象。圖 4 圖 55) L E D 顯示電路如圖-5所示實驗臺上設有8個發光二極管及相關驅動電路(輸入端L7~L0),當輸入信號為“1” 時發光,為“0”時滅6) 七段數碼管顯示電路如圖-6所示實驗臺上設有兩個共陰極七段數碼管及驅動電路,段碼為同相驅動器,位碼為反相驅動器。從段碼與位碼的驅動器輸入端(段碼輸入端a、b、c、d、e、f、g、dp,位碼輸入端s1、 s2)輸入不同的代碼即可顯示不同數字或符號。

    標簽: TPC-H 實驗指導書 C語言 實驗臺

    上傳時間: 2013-11-22

    上傳用戶:sssnaxie

  • 基于USB接口的數據采集模塊的設計與實現

    基于USB接口的數據采集模塊的設計與實現Design and Implementation of USB-Based Data Acquisition Module路 永 伸(天津科技大學電子信息與自動化學院,天津300222)摘要文中給出基于USB接口的數據采集模塊的設計與實現。硬件設計采用以Adpc831與PDIUSBDI2為主的器件進行硬件設計,采用Windriver開發USB驅動,并用Visual C十十6.0對主機軟件中硬件接口操作部分進行動態鏈接庫封裝。關鍵詞USB 數據采集Adpc831 PDNSBDI2 Windriver動態鏈接庫Abstract T hed esigna ndim plementaitono fU SB-BasedD ataA cquisiitonM oduleis g iven.Th ec hips oluitonm ainlyw ithA dpc831a ndP DTUSBD12i sused for hardware design. The USB drive is developed場Wmdriver, and the operation on the hardware interface is packaged into Dynamic Link Libraries場Visual C++6.0.  Keywords USB DataA cquisition Adttc831 PDfUSBD12 Windriver0 引言US B總 線 是新一代接口總線,最初推出的目的是為了統一取代PC機的各類外設接口,迄今經歷了1.0,1.1與2.0版本3個標準。在國內基于USB總線的相關設計與開發也得到了快速的發展,很多設計者從各自的應用領域,用不同方案設計出了相應的裝置[1,2]。數據采集是工業控制中一個普遍而重要的環節,因此開發基于USB接口的數據采集模塊具有很強的現實應用意義。雖然 US B總線標準已經發展到2.0版本,但由于工業控制現場干擾信號的情況比較復雜,高速數據傳輸的可靠性不容易被保證,并且很多場合對數據采集的實時性要求并不高,開發2.0標準產品的成本又較1.1標準產品高,所以筆者認為,在工業控制領域,目前開發基于USB總線1.1標準實現的數據采集模塊的實用意義大于相應2.0標準模塊。

    標簽: USB 接口 數據采集模塊

    上傳時間: 2013-10-23

    上傳用戶:q3290766

  • TKS仿真器B系列快速入門

    TKS仿真器B系列快速入門

    標簽: TKS 仿真器 快速入門

    上傳時間: 2013-10-31

    上傳用戶:aix008

  • 集成溫度傳感器的分類和應用

    一、傳感器的定義信息處理技術取得的進展以及微處理器和計算機技術的高速發展,都需要在傳感器的開發方面有相應的進展。微處理器現在已經在測量和控制系統中得到了廣泛的應用。隨著這些系統能力的增強,作為信息采集系統的前端單元,傳感器的作用越來越重要。傳感器已成為自動化系統和機器人技術中的關鍵部件,作為系統中的一個結構組成,其重要性變得越來越明顯。最廣義地來說,傳感器是一種能把物理量或化學量轉變成便于利用的電信號的器件。國際電工委員會(IEC:International Electrotechnical Committee)的定義為:“傳感器是測量系統中的一種前置部件,它將輸入變量轉換成可供測量的信號”。按照Gopel等的說法是:“傳感器是包括承載體和電路連接的敏感元件”,而“傳感器系統則是組合有某種信息處理(模擬或數字)能力的傳感器”。傳感器是傳感器系統的一個組成部分,它是被測量信號輸入的第一道關口。傳感器系統的原則框圖示于圖1-1,進入傳感器的信號幅度是很小的,而且混雜有干擾信號和噪聲。為了方便隨后的處理過程,首先要將信號整形成具有最佳特性的波形,有時還需要將信號線性化,該工作是由放大器、濾波器以及其他一些模擬電路完成的。在某些情況下,這些電路的一部分是和傳感器部件直接相鄰的。成形后的信號隨后轉換成數字信號,并輸入到微處理器。德國和俄羅斯學者認為傳感器應是由二部分組成的,即直接感知被測量信號的敏感元件部分和初始處理信號的電路部分。按這種理解,傳感器還包含了信號成形器的電路部分。傳感器系統的性能主要取決于傳感器,傳感器把某種形式的能量轉換成另一種形式的能量。有兩類傳感器:有源的和無源的。有源傳感器能將一種能量形式直接轉變成另一種,不需要外接的能源或激勵源(參閱圖1-2(a))。有源(a)和無源(b)傳感器的信號流程無源傳感器不能直接轉換能量形式,但它能控制從另一輸入端輸入的能量或激勵能傳感器承擔將某個對象或過程的特定特性轉換成數量的工作。其“對象”可以是固體、液體或氣體,而它們的狀態可以是靜態的,也可以是動態(即過程)的。對象特性被轉換量化后可以通過多種方式檢測。對象的特性可以是物理性質的,也可以是化學性質的。按照其工作原理,傳感器將對象特性或狀態參數轉換成可測定的電學量,然后將此電信號分離出來,送入傳感器系統加以評測或標示。各種物理效應和工作機理被用于制作不同功能的傳感器。傳感器可以直接接觸被測量對象,也可以不接觸。用于傳感器的工作機制和效應類型不斷增加,其包含的處理過程日益完善。常將傳感器的功能與人類5大感覺器官相比擬: 光敏傳感器——視覺;聲敏傳感器——聽覺;氣敏傳感器——嗅覺;化學傳感器——味覺;壓敏、溫敏、流體傳感器——觸覺。與當代的傳感器相比,人類的感覺能力好得多,但也有一些傳感器比人的感覺功能優越,例如人類沒有能力感知紫外或紅外線輻射,感覺不到電磁場、無色無味的氣體等。對傳感器設定了許多技術要求,有一些是對所有類型傳感器都適用的,也有只對特定類型傳感器適用的特殊要求。針對傳感器的工作原理和結構在不同場合均需要的基本要求是: 高靈敏度,抗干擾的穩定性(對噪聲不敏感),線性,容易調節(校準簡易),高精度,高可靠性,無遲滯性,工作壽命長(耐用性) ,可重復性,抗老化,高響應速率,抗環境影響(熱、振動、酸、堿、空氣、水、塵埃)的能力 ,選擇性,安全性(傳感器應是無污染的),互換性 低成本 ,寬測量范圍,小尺寸、重量輕和高強度,寬工作溫度范圍 。二、傳感器的分類可以用不同的觀點對傳感器進行分類:它們的轉換原理(傳感器工作的基本物理或化學效應);它們的用途;它們的輸出信號類型以及制作它們的材料和工藝等。根據傳感器工作原理,可分為物理傳感器和化學傳感器二大類:傳感器工作原理的分類物理傳感器應用的是物理效應,諸如壓電效應,磁致伸縮現象,離化、極化、熱電、光電、磁電等效應。被測信號量的微小變化都將轉換成電信號。化學傳感器包括那些以化學吸附、電化學反應等現象為因果關系的傳感器,被測信號量的微小變化也將轉換成電信號。有些傳感器既不能劃分到物理類,也不能劃分為化學類。大多數傳感器是以物理原理為基礎運作的。化學傳感器技術問題較多,例如可靠性問題,規模生產的可能性,價格問題等,解決了這類難題,化學傳感器的應用將會有巨大增長。常見傳感器的應用領域和工作原理列于表1.1。按照其用途,傳感器可分類為: 壓力敏和力敏傳感器 ,位置傳感器 , 液面傳感器 能耗傳感器 ,速度傳感器 ,熱敏傳感器,加速度傳感器,射線輻射傳感器 ,振動傳感器,濕敏傳感器 ,磁敏傳感器,氣敏傳感器,真空度傳感器,生物傳感器等。以其輸出信號為標準可將傳感器分為: 模擬傳感器——將被測量的非電學量轉換成模擬電信號。數字傳感器——將被測量的非電學量轉換成數字輸出信號(包括直接和間接轉換)。膺數字傳感器——將被測量的信號量轉換成頻率信號或短周期信號的輸出(包括直接或間接轉換)。開關傳感器——當一個被測量的信號達到某個特定的閾值時,傳感器相應地輸出一個設定的低電平或高電平信號。

    標簽: 集成 溫度傳感器 分類

    上傳時間: 2013-10-11

    上傳用戶:zhangdebiao

主站蜘蛛池模板: 瓦房店市| 井研县| 武宣县| 西畴县| 镇坪县| 宁河县| 凭祥市| 阿巴嘎旗| 丰原市| 拉孜县| 林周县| 孟连| 江都市| 云和县| 广东省| 财经| 磴口县| 金山区| 确山县| 富蕴县| 会同县| 宜州市| 高陵县| 吉林省| 海门市| 长垣县| 教育| 榕江县| 潜山县| 厦门市| 城市| 通山县| 城市| 抚远县| 喜德县| 房产| 邻水| 石渠县| 囊谦县| 石景山区| 黔西县|