有兩種方式可以讓設備和應用程序之間聯(lián)系:1. 通過為設備創(chuàng)建的一個符號鏈;2. 通過輸出到一個接口WDM驅(qū)動程序建議使用輸出到一個接口而不推薦使用創(chuàng)建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創(chuàng)建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調(diào)用設備。在某個Win32 APIs和設備對象的分發(fā)函數(shù)之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節(jié)查看有關Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個參數(shù)中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數(shù)不是Windows 98/2000中驅(qū)動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產(chǎn)生驅(qū)動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數(shù)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;} 在設備中執(zhí)行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產(chǎn)生到設備對象的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使內(nèi)核為設備創(chuàng)建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調(diào)用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調(diào)用Close。如果被打開的設備不支持指定的功能,則調(diào)用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創(chuàng)建了一個存儲在IRP中的MDL域。一個設備可以通過調(diào)用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內(nèi)核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數(shù)。然而,存儲區(qū)并沒有被鎖住而且地址只對調(diào)用進程有效。驅(qū)動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的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)分配一個單一的緩沖來作為輸入與輸出。驅(qū)動程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級調(diào)用者使用的緩沖中。驅(qū)動程序必須在結束前存儲拷貝到IRP的Information成員中的數(shù)據(jù)個數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個系統(tǒng)緩沖,這個緩沖驅(qū)動程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對象,驅(qū)動程序?qū)@個對象的訪問通過調(diào)用KIrp::Mdl來實現(xiàn)。對于METHOD_OUT_DIRECT,調(diào)用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調(diào)用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個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ū)動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅(qū)動程序中,代碼看起來如下所示: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
8.1 模擬接口概述單片機的外部設備不一定都是數(shù)字式的,也經(jīng)常會和模擬式的設備連接。 例如單片機來控制溫度、壓力時,溫度和壓力都是連續(xù)變化的,都是模擬量,在單片機與外部環(huán)境通信的時候,就需要有一種轉(zhuǎn)換器來把模擬信號變?yōu)閿?shù)字信號,以便能夠輸送給單片機進行處理。而單片機送出的控制信號,也必須經(jīng)過變換器變成模擬信號,才能為控制電路所接受。這種變換器就稱為數(shù)模(D/A)轉(zhuǎn)換器和模數(shù)(A/D)轉(zhuǎn)換器。CPU與模擬外設之間的接口電路稱為模擬接口。在這一章里將介紹單片機與 A/D及D/A轉(zhuǎn)換器接口,以及有關的應用。 8.2 DAC及其接口一、DAC介紹:1.DAC結構:DAC芯片上集成有D/A轉(zhuǎn)換電路和輔助電路。2.DAC的參數(shù):描述D/A轉(zhuǎn)換器性能的參數(shù)很多,主要有以下幾個:分辨率(Resolution) 偏移誤差(OffsetError) 線性度(Linearity) 精度(Accuracy) 轉(zhuǎn)換速度(ConvemionRate) 溫度靈敏度(TemperatureSensitivity) 二、典型DAC芯片及其接口一、DAC介紹:1.DAC結構:DAC芯片上集成有D/A轉(zhuǎn)換電路和輔助電路。2.DAC的參數(shù):描述D/A轉(zhuǎn)換器性能的參數(shù)很多,主要有以下幾個:分辨率(Resolution) 偏移誤差(OffsetError) 線性度(Linearity) 精度(Accuracy) 轉(zhuǎn)換速度(ConvemionRate) 溫度靈敏度(TemperatureSensitivity) 8.3 ADC及其接口DAC 0832的結構DAC 0832的引腳DAC 0832的接口DAC 0832的應用DAC0832是CMOS工藝,雙列直插式20引腳。① VCC電源可以在5-15V內(nèi)變化。典型使用時用15V電源。② AGND為模擬量地線,DGND為數(shù)字量地線,使用時,這兩個接地端應始終連在一起。③ 參考電壓VREF接外部的標準電源,VREF一般可在+10V到—10V范圍內(nèi)選用。
標簽: 模擬接口
上傳時間: 2013-10-10
上傳用戶:ukuk
基于USB接口的數(shù)據(jù)采集模塊的設計與實現(xiàn)Design and Implementation of USB-Based Data Acquisition Module路 永 伸(天津科技大學電子信息與自動化學院,天津300222)摘要文中給出基于USB接口的數(shù)據(jù)采集模塊的設計與實現(xiàn)。硬件設計采用以Adpc831與PDIUSBDI2為主的器件進行硬件設計,采用Windriver開發(fā)USB驅(qū)動,并用Visual C十十6.0對主機軟件中硬件接口操作部分進行動態(tài)鏈接庫封裝。關鍵詞USB 數(shù)據(jù)采集Adpc831 PDNSBDI2 Windriver動態(tài)鏈接庫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總 線 是新一代接口總線,最初推出的目的是為了統(tǒng)一取代PC機的各類外設接口,迄今經(jīng)歷了1.0,1.1與2.0版本3個標準。在國內(nèi)基于USB總線的相關設計與開發(fā)也得到了快速的發(fā)展,很多設計者從各自的應用領域,用不同方案設計出了相應的裝置[1,2]。數(shù)據(jù)采集是工業(yè)控制中一個普遍而重要的環(huán)節(jié),因此開發(fā)基于USB接口的數(shù)據(jù)采集模塊具有很強的現(xiàn)實應用意義。雖然 US B總線標準已經(jīng)發(fā)展到2.0版本,但由于工業(yè)控制現(xiàn)場干擾信號的情況比較復雜,高速數(shù)據(jù)傳輸?shù)目煽啃圆蝗菀妆槐WC,并且很多場合對數(shù)據(jù)采集的實時性要求并不高,開發(fā)2.0標準產(chǎn)品的成本又較1.1標準產(chǎn)品高,所以筆者認為,在工業(yè)控制領域,目前開發(fā)基于USB總線1.1標準實現(xiàn)的數(shù)據(jù)采集模塊的實用意義大于相應2.0標準模塊。
標簽: USB 接口 數(shù)據(jù)采集模塊
上傳時間: 2013-10-23
上傳用戶:q3290766
什么是JTAG 到底什么是JTAG呢? JTAG(Joint Test Action Group)聯(lián)合測試行動小組)是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測試?,F(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 JTAG最初是用來對芯片進行測試的,基本原理是在器件內(nèi)部定義一個TAP(Test Access Port�測試訪問口)通過專用的JTAG測試工具對進行內(nèi)部節(jié)點進行測試。JTAG測試允許多個器件通過JTAG接口串聯(lián)在一起,形成一個JTAG鏈,能實現(xiàn)對各個器件分別測試。現(xiàn)在,JTAG接口還常用于實現(xiàn)ISP(In-System rogrammable�在線編程),對FLASH等器件進行編程。 JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進行預編程現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。JTAG接口可對PSD芯片內(nèi)部的所有部件進行編程 JTAG的一些說明 通常所說的JTAG大致分兩類,一類用于測試芯片的電氣特性,檢測芯片是否有問題;一類用于Debug;一般支持JTAG的CPU內(nèi)都包含了這兩個模塊。 一個含有JTAG Debug接口模塊的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內(nèi)部寄存器和掛在CPU總線上的設備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)內(nèi)置模塊的寄存器,象UART,Timers,GPIO等等的寄存器。 上面說的只是JTAG接口所具備的能力,要使用這些功能,還需要軟件的配合,具體實現(xiàn)的功能則由具體的軟件決定。 例如下載程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要參照SOC DataSheet的寄存器說明,設置RAM的基地址,總線寬度,訪問速度等等。有的SOC則還需要Remap,才能正常工作。運行Firmware時,這些設置由Firmware的初始化程序完成。但如果使用JTAG接口,相關的寄存器可能還處在上電值,甚至時錯誤值,RAM不能正常工作,所以下載必然要失敗。要正常使用,先要想辦法設置RAM。在ADW中,可以在Console窗口通過Let 命令設置,在AXD中可以在Console窗口通過Set命令設置。
上傳時間: 2013-10-23
上傳用戶:aeiouetla
LVDS、xECL、CML(低電壓差分信號傳輸、發(fā)射級耦合邏輯、電流模式邏輯)………4多點式低電壓差分信號傳輸(M-LVDS) ……………………………………………………8數(shù)字隔離器 ………………………………………………………………………………10RS-485/422 …………………………………………………………………………………11RS-232………………………………………………………………………………………13UART(通用異步收發(fā)機)…………………………………………………………………16CAN(控制器局域網(wǎng))……………………………………………………………………18FlatLinkTM 3G ………………………………………………………………………………19SerDes(串行G 比特收發(fā)機及LVDS)……………………………………………………20DVI(數(shù)字視頻接口)/PanelBusTM ………………………………………………………22TMDS(最小化傳輸差分信號) …………………………………………………………24USB 集線器控制器及外設器件 …………………………………………………………25USB 接口保護 ……………………………………………………………………………26USB 電源管理 ……………………………………………………………………………27PCI Express® ………………………………………………………………………………29PCI 橋接器 …………………………………………………………………………………33卡總線 (CardBus) 電源開關 ………………………………………………………………341394 (FireWire®, 火線®) ……………………………………………………………………36GTLP (Gunning Transceiver Logic Plus,體效應收發(fā)機邏輯+) ………………………………39VME(Versa Module Eurocard)總線 ………………………………………………………41時鐘分配電路 ……………………………………………………………………………42交叉參考指南 ……………………………………………………………………………43器件索引 …………………………………………………………………………………47技術支持 …………………………………………………………………………………48 德州儀器(TI)為您提供了完備的接口解決方案,使得您的產(chǎn)品別具一格,并加速了產(chǎn)品面市。憑借著在高速、復合信號電路、系統(tǒng)級芯片 (system-on-a-chip ) 集成以及先進的產(chǎn)品開發(fā)工藝方面的技術專長,我們將能為您提供硅芯片、支持工具、軟件和技術文檔,使您能夠按時的完成并將最佳的產(chǎn)品推向市場,同時占據(jù)一個具有競爭力的價格。本選擇指南為您提供與下列器件系列有關的設計考慮因素、技術概述、產(chǎn)品組合圖示、參數(shù)表以及資源信息:
上傳時間: 2013-10-21
上傳用戶:Jerry_Chow
本文首先從無源光網(wǎng)絡的原理出發(fā),分析了目前幾種PON技術,進行比較后指出了GPON的優(yōu)勢。然后闡述了GPON系統(tǒng)的結構、工作原理以及其協(xié)議規(guī)范,重點是TC層結構,描述了控制平面(C/M)和用戶(U)平面協(xié)議棧。接下來介紹了ONU的分層功能模塊,并依此提出了ONU的分層設計思想,將ONU端劃分為物理媒介層(PMD)、傳輸匯聚層(GTC)及管理控制層(OMCI),在此基礎上提出了ONU的整體設計方案及主要芯片選型。然后研究了ONU端匯聚(GTC)層接口,包括物理層接口,用戶網(wǎng)絡接口,管理控制接121和SDRAM接口,重點是使用Verilog編寫用戶網(wǎng)絡控制接口和SDRAM接口控制器并進行仿真驗證。最后對本文的工作和得到的結論進行總結,并明確了未來需要改進和展開的工作。
標簽: GPON ONU GTC 系統(tǒng)研究
上傳時間: 2014-12-30
上傳用戶:w230825hy
基于CP2102的USB接口設計,cp2102橋接芯片很不錯
上傳時間: 2013-10-10
上傳用戶:zhyiroy
接口技術作用下的MAX232連接方式,以及232中文資料
上傳時間: 2013-11-02
上傳用戶:bibirnovis
由于USB接口正逐步替代傳統(tǒng)的RS232接口成為PC 機的標準接口,USB接口轉(zhuǎn)換電路的設計就很有必要。采用Silicon公司高集成度的USB- UART橋接器件CP2102,輔以簡單的外部電路, 實現(xiàn)了RS232/RS422接口與USB接口轉(zhuǎn)換電路的設計。其中在詳細介紹CP2102結構和特性的基礎上,給出了接口轉(zhuǎn)換的硬件電路圖,最后簡單介紹了轉(zhuǎn)換器的工作原理。
上傳時間: 2014-04-19
上傳用戶:HZB20416
RCXDownload and RCXDirectMode是leJOS的一個可視化接口。RCXDownload自動設置JDK-, leJOS-和ClassPath,編譯選擇的Java源代碼,顯示編譯器消息,能夠鏈接和加載被編譯的類和leJOS固件和RCXDirectMode。 來源: http://sourceforge.net/projects/rcxtools/
標簽: RCXDownload leJOS RCXDirectMode ClassPath
上傳時間: 2013-12-28
上傳用戶:xfbs821