首页 » 技术文章 » CCD信号采集系统的USB接口设计

CCD信号采集系统的USB接口设计

作者:  时间:2011-04-26 19:38  来源:EDN

  32 驱动程序设计

  USB客户驱动程序是支持即插即用功能的标准WDM(Windows Driver Model)驱动程序,这是分层的驱动程序模型,即设备驱动被分成了若干层,典型地分成:高层驱动程序、中间层驱动程序、底层驱动程序。每层驱动再把IO请求划分成更简单的请求,以传给更下层的驱动执行。最底层的驱动程序在收到IO请求后,通过硬件抽象层,与硬件发生作用,从而完成IO请求工作。在这样的架构下,上面的驱动层就不需要对每个操作系统都要开发一遍了。USB客户驱动程序接收IO管理器发来的IRP(IORequestPacket),构造URB(USBRequest Block)传递给主控制驱动程序接口USBDI。在USBDI的基础上进行编程将大大简化,用户不用关心IRP的类型,而只需要在相应的分发例程中通过构造URB(USBRequestBlock)并将其通过USBDI发送下去就可以实现对USB设备的控制了。

  开发USB设备驱动程序的工具目前广泛应用的主要有2类:

  (1)Windows DDK(Device Driver Kits)DDK基于汇编语言的编程方式和内核模式的调用,对没有深厚的操作系统原理和编程水平的人员来说,任务相当艰巨。

  (2)NuMega公司的Driverstudio工具开发包,其中的DriverWorks实际上实现了对DDK类的封装,可以提供给用户驱动程序的开发框架,只需用户在相应的代码段中加入自己系统的控制代码即可,不必了解内核机制,大大加速了USB外设的开发速度。本系统就是使用DriverWorks来开发USB设备驱动程序的。生成的应用接口函数在VC"中调用,大大降低了主机软件的难度。

  33 用户应用程序设计

  应用程序实现的功能有:启动/关闭USB设备,设置USB数据传输管道/端口,采集数据,显示数据等。这里,采用VisualC++60作为程序的开发环境,并且充分运用了多线程的编程思想。从而实现同时进行数据采集与实时显示。

  为了实现与驱动程序的通信,应用程序首先创建一个事件和一个线程,再将事件句柄传递给WDM,用这一线程来等待WDM发送的事件消息,接收到事件消息后,就读取驱动程序的数据,显示数据。

  在Windows中,Win32应用程序调用的APl函数有5个;CreateFile()ReadFile()WriteFi|e()DeviceloControl()CloseHandle()

  应用程序为打开一个WDM设备驱动程序,使用CreateFile()函数。他的第一个参数是一个符号链接名。如果用DriverWorks创建一个WDM驱动程序,通常会用类KUnitizedName生成一个设备符号链接名。这名字的后面有一个数字,一般是一个o。例如,若符号链接名为"USBDevice",则传递给CreateFile()的是"\\\\.\\USBDevice0"

  一旦应用程序获得设备的有效句柄,他就能够调用Win32函数,这将产生对应于此设备对象的相应IRP,发送给驱动程序,完成相应功能。这种关系如表1所示。

  4

  本采集系统利用USB技术实现与计算机通信,有众多的优点:

  安装方便,支持即插即用。

  供电方便,可直接由主机通过USB接口提供5V的电压。

  性价比高,远优于并行口和串行口的CCD图像采集系统。

相关推荐

CCD传感器出新招 帧积累并非真“鸡肋”

CCD  传感器  2013-03-25

MEMS市场:消费电子给力 组合传感器起飞

传感器  MEMS  FIFO  2012-12-09

基于单片机PIC18F1320的信号采集系统设计方案

信号采集  PIC18F1320  2011-09-09

基于单片机PIC18F1320的信号采集系统设计方案

信号采集  PIC18F1320  2011-09-06

基于单片机PIC18F1320的信号采集系统设计方案

信号采集  PIC18F1320  2011-07-08

基于单片机PIC18F1320的信号采集系统设计方案

信号采集  信号诊断  2011-07-05
在线研讨会
焦点