新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于DSP的USB口数据采集分析系统设计

基于DSP的USB口数据采集分析系统设计

作者:时间:2009-02-19来源:网络收藏

  本结构建立在对消息队列不断服务基础上,即构建一个消息队列,当接收到任何一方(或计算机)的消息时,将其放入消息队列。消息的接收是通过中断服务程序来实现的。当处理完一个消息时,从消息队列取出下一个消息进行处理。这种软件结构非常简单,思路清晰,对调试十分有利。

设备WDM。WDM型是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。

  本的驱动程序是在Compuware Numega Driver-Works的基础上采用面向对象语言C++开发的。Driver-Works可以很快构造出驱动程序的框架。主要构造了两个类:Class USBDAC和class USBDACDevice。Class USBDAC继承了class Kdriver,负责装载驱动程序和创建功能设备对象时要做的一些操作。Class USBDACDevice继承了class KpnpDevice,是驱动程序的主要部分,负责设备启动、停止的操作以及与设备的数据通讯。API函数调用和CreateFile ()、ReadFile ()、WriteFile ()、DeviceIO-Control ()、CloseFile()等的实现也在class USBDACDevice中完成。

Class USBDAC的定义如下:

class USBDAC : public Kdriver
{
SAFE_DESTRUCTORS
public:

/*Driver Entry (),

 在引导或I/O管理器装入驱动程序时,调用这个例程。执行大量的初始化函数,包括建立到其它驱动程序的指针、查找和定位由驱动程序使用的任何硬件资源等,不过,这部分工作大多由基类Kdriver完成。*/

virtual NTSTATUS DriverEntry(PUNICODE_STRING RegistryPath);
/*AddDevice(),创建一个Device对象。调用其构造函数对设备初始化,创建设备的名称等。*/
virtual NTSTATUS AddDevice(PDEVICE_OBJECT Pdo);
Int m_Unit;
};
Class USBDACDevice的定义如下:
Class USBDACDevice : public KpnpDevice
{
// Constructors
public:
SAFE_DESTRUCTORS
USBDACDevice(PDEVICE_OBJECT Pdo,ULONG Unit);
~USBDACDevice ();
// Member Functions
public:

//添加自己的成员函数
NTSTATUS USBDAC_GetACK(int );
NTSTATUS USBDAC_StartADConversion(void);
NTSTATUS USBDAC_StopADConversion(void);
NTSTATUS USBDAC_Download(KIrp);
NTSTATUS USBDAC_Download8051(KIrp);
NTSTATUS USBDAC_SetChannelParameter(PUCHAR,ULONG,int);

};

  4

模块主要实现单片机与间的数据缓冲、8位数据线与32位数据线间的转换、单片机同步串口和缓冲串口的切换。要求FPGA能实现丰富的内部RAM和准确的时钟控制。根据需要选用XILINX公司的XCV50TQ144。该器件采用SRAM 查找表结构,具有系统内可再编程(ISP)和运行间可再配置等特性。系统初始化时由USB口下载FPGA程序,通过单片机串口对其进行线配置。

  本系统可广泛用于振动、噪声测试分析。可以在WINDOWS95/98/NT下开发各类动态测试与信号处理的应用程序,根据需要加载已经编制的各种DSP算法,使其具有信号分析、模态分析、声学分析、环境测试、长时间记录等功能。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭