虫虫首页|资源下载|资源专辑|精品软件
登录|注册

输出接口

  • 单片机常用外围设备接口电路

      本资料是关于单片机常用外围设备接口电路图   主要包括以下电路:   LED数码管及编码方式   静态显示方式及其典型应用电路   动态显示方式及其典型应用电路   虚拟I2C总线串行显示电路   键盘去抖动和连接、控制方式   独立式按键及其接口电路   矩阵式键盘及其接口电路   并行A/D ADC0809及其接口电路   串行A/D ADC0832及其接口电路   I2C串行A/D典型应用电路   DAC0832及其接口电路   I2C串行D/A典型应用电路   开关量驱动输出接口电路

    标签: 单片机常用 外围设备 接口电路

    上传时间: 2013-10-30

    上传用户:ks201314

  • 驱动程序与应用程序的接口

    有两种方式可以让设备和应用程序之间联系: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

  • 一个用verilog实现的fpga上的uart接口模块

    一个用verilog实现的fpga上的uart接口模块,包括测试模块和实体,并实现了输出接口和状态接口。

    标签: verilog fpga uart 接口模块

    上传时间: 2014-07-19

    上传用户:gengxiaochao

  • 数码管显示常用外围设备接口电路.ppt

    LED数码管及编码方式静态显示方式及其典型应用电路动态显示方式及其典型应用电路虚拟I2C总线串行显示电路键盘去抖动和连接、控制方式独立式按键及其接口电路矩阵式键盘及其接口电路并行A/D ADC0809及其接口电路串行A/D ADC0832及其接口电路I2C串行A/D典型应用电路DAC0832及其接口电路I2C串行D/A典型应用电路开关量驱动输出接口电路

    标签: 数码管显示 接口 电路

    上传时间: 2021-12-04

    上传用户:kjl

  • 基于FPGA的计算机组成原理实验系统的设计与仿真.rar

    “计算机组成原理”是计算机专业的一门核心课程。传统的计算机组成原理实验是在指令格式、寻址方式、运算器、控制器、存储器等都相对固定的情况下进行,学生主要进行功能实现和验证,缺少自主设计和创新过程。 为改变这种状况,须更新现有的计算机组成原理实验系统。采用FPGA芯片作为载体,使用EDA开发工具,用硬件描述语言实现不同的硬件逻辑,再与硬件的输入输出接口线路相连,最终组成一台可用于组成实验教学的完整计算机系统。这期间学生将掌握组成原理实验系统的各个部件的功能及其相互之间如何协作。本实验系统能够让学生完成有关计算机组成原理的部件实验和整机实验:部件实验包括加法器、乘法器、除法器、算术逻辑运算单元、控制器、存储器等;整机实验可以独立实现各部件的功能描述。该系统能够帮助学生巩固课堂知识并增强设计能力。 为实现上述目的,依据EDA技术的开发流程和方法,建立了一个完整的体系,其中包括控制模块、内存模块、运算器模块、通用寄存器组及其控制部件、程序计数器、地址寄存器、指令寄存器、时序部件、数据控制部件、状态值控制部件,以及为帮学生调试而专门设计的输出观察部件。在Quartus Ⅱ开发环境下,使用Altera公司FPGA芯片,采用VHDL,语言设计并实现了上述模块。经过仿真测试,所实现的各功能模块作为独立部件时能完成各自功能:而将这些部件组合起来的整机系统,可以执行程序段和进行各种运算处理,达到了设计要求。

    标签: FPGA 计算机组成原理 实验系统

    上传时间: 2013-05-31

    上传用户:hebmuljb

  • 基于ARM处理器的小型卫星通信网终端软件研究

    采用多功能终端构成一种小型卫星通信网,要求各个终端能够像计算机一样支持多种各样的外部设备,并能实现组网功能。采用能支持嵌入式Linux操作系统的ARM处理器可很好地满足这种需求。本文重点研究这种智能终端中基于ARM处理器的嵌入式软件及其实现,主要内容有: (1)在分析嵌入式系统、ARM处理器、Linux操作系统特点的基础上,论证了这种基于ARM处理器和Linux操作系统实现组网多功能终端方案的可行性和优越性。 (2)介绍了嵌入式系统的组成、开发流程和步骤,搭建了嵌入式系统开发和调试平台,包括软件开发工具、硬件调试工具,软件组件等。 (3)分析了该卫星通信网终端的需求,并详细阐述了本系统的硬件配置,包括ARM处理器、存储器和输入/输出接口。 (4)论证了本系统软件部分设计的目标,提出了一种软件结构方案,包括Bootloader、LinuX内核、文件系统、图形用户界面、网络应用程序这几个方面的选型和开发目标。 (5)完成ARM嵌入式软件平台的设计与实现,包括U-Boot的修改和移植、Linux系统内核的移植和剪裁、嵌入式Linux文件系统的制作、图形用户界面的安装和编程基础,以及Linux系统中驱动程序的设计。关键词:卫星通信网,地面终端,嵌入式系统,ARM,Linux

    标签: ARM 处理器 卫星通信网 软件

    上传时间: 2013-04-24

    上传用户:liu_yuankang

  • 语音信号特征参数的提取

    随着语音技术应用的发展,语音信号数字处理的实时性要求越来越突出。这就要求在系统设计中,对系统的硬件环境要求更高。随着语音处理算法的日益复杂,用普通处理器对语音信号进行实时处理,已经不能满足需要。专用语音信号处理芯片能解决实时性的要求,同时对器件的资源要求也是最低的。 论文利用Altera公司的新一代可编程逻辑器件在数字信号处理领域的优势,对语音信号的常用参数—LPC(线性预测编码,Linear Predictive Coding)参数提取的FPGA(现场可编程门阵列,Field Programmable Gate Array)实现进行了深入研究。论文首先对语音的离散数学模型和短时平稳特性进行了分析,深入讨论了语音线性预测技术。第二,对解线性预测方程组的自相关法和协方差斜格法进行了比较,提出了一种基于协方差斜格法的LPC参数提取系统的总体设计方案。第三,对Altera公司的Cyclon系列可编程器件的内部结构进行了研究,分析了在QuartusⅡ开发平台上进行FPGA设计的流程。第四,对系统的各个功能模块进行了设计,所有算法通过Verilog硬件描述语言实现,并对其工作过程进行了详细的分析。最后,在Altera FPGA目标芯片EP1C6Q240C8上,对LPC参数提取系统进行了仿真验证。 系统具有灵活的输入输出接口,能方便地同其它语音处理模块相连,构成一个完整的语音处理专用芯片,可以应用于语音编解码、语音识别等系统。

    标签: 语音信号 特征 参数

    上传时间: 2013-04-24

    上传用户:TI初学者

  • 介绍了3DES加密算法的原理并详尽描述了该算法的FPGA设计实现,采用了状态机和流水线技术

    介绍了3DES加密算法的原理并详尽描述了该算法的FPGA设计实现。采用了状态机和流水线技术,使得在面积和速度上达到最佳优化;添加了输入和输出接口的设计以增强该算法应用的灵活性。各模块均用硬件描述语言实现,最终下载到FPGA芯片Stratix EP1S25F780C5中。

    标签: 3DES FPGA 加密算法 算法

    上传时间: 2013-08-20

    上传用户:HGH77P99

  • 无功功率自动补偿控制器

    1) 全数字化设计,交流采样,人机界面采用大屏幕点阵图形128X64 LCD中文液晶显示器。 2) 可实时显示A、B、C各相功率因数、电压、电流、有功功率、无功功率、电压总谐波畸变率、电流总谐波畸变率、电压3、5、7、9、11、13次谐波畸变率、电流3、5、7、9、 11、13次谐波畸变率频率、频率、电容输出显示及投切状态、报警等信息。 3) 设置参数中文提示,数字输入。 4) 电容器控制方案支持三相补偿、分相补偿、混合补偿方案,可通过菜单操作进行设置。 5) 电容器投切控制程序支持等容/编码(1:2、 1:2:3、 1:2:4:8…)等投切方式。 6) 具有手动补偿/自动补偿两种工作方式。 7) 提供电平控制输出接口(+12V),动态响应优于20MS。 8) 取样物理量为无功功率,具有谐波测量及保护功能。 9) 控制器具有RS-485通讯接口,MODBUS标准现场总线协议,方便接入低压配电系统。

    标签: 无功功率 控制器 自动补偿

    上传时间: 2013-11-08

    上传用户:dancnc

  • 28V军用车载电源:CZ100、CZ200

    概述 本系列电源在输入输出接口设计上符合CompactPCI有关标准(PICMG2.11R1.0),在体系结构上采用标准3U和6U结构。适用于军用车辆上需要28V直流供电的电气系统。同时满足“军用车辆28伏直流电气系统特性”GJB298标准,当输入电压下降至6V时仍能正常工作。即在6~36V输入电压范围内,有效输出电压+5V、+3.3V、±12V。 为了保证电源安全工作,该系列电源内部安装了软起动电路。该电路可以限制模块的起动电流,并且可以消除起动时产生的浪涌电流。此外,电源还具有输出过压保护、过热关断等功能。

    标签: CZ 28V 100 200

    上传时间: 2013-10-28

    上传用户:pwcsoft