您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术基于DSP的USB口数据采集分析系统(二) 正文
基于DSP的USB口数据采集分析系统(二)

基于DSP的USB口数据采集分析系统(二)

点击数:7678 次   录入时间:03-04 12:01:16   整理:http://www.55dianzi.com   DSP/FPGA技术
3 USB接口
   
   USB协议的实现基于网络的思想,是一种共享式的总线,在总线上数据以包(PACket)的形式发送。USB的数据传送有4种模式:块传输(Bulk Transfers)、中断传输(Interrupt Transfers)、同步传输(Isochronous Transfers)、控制传输(Control Transfers)。当需要快速传输大批量的准确数据时,一般采用块传输模式;当传输实时性较强的数据时,采用中断传输模式。
   
   当USB设备插入计算机时,计算机和USB设备之间产生一个枚举过程。计算机检测到有设备插入,自动发出查询请求;USB设备回应这个请求,送出设备的Verdor ID和Product ID;计算机根据这两个ID装载相应的设备驱动程序,完成枚举过程。
   
   由于USB协议非常复杂,开发者不可能在底层基础上进行开发。目前,市场上对USB协议进行封装的接口芯片,如:National SEMIconductor公司的USBN9602、Plilips公司的PDIUSBD12等。本系统选用CYPRESS公司的带单片机内核的EZ-USB系列的AN2131QC.该芯片遵从USB1.0规范(12Mbps),将8051单片机内核、智能USB接口引擎、USB收发模块、存储器、串行口等集成一起,从而减少芯片接口时序。其内部结构如图2(虚线内是芯片部分)。
   
   EZ-USB的8051代码(Firmware)可以固化在ROM内;更好的方案是通过USB口从主机下载到内部RAM,这样,易于修改、调试和更新。之所以能下载代码是因为芯片一上电完全在硬件上自动完成枚举过程,不需要Firmware。完成枚举后便可作为一个USB设备(叫做缺省USB设备)与计算机通讯,此时即可进行Firmware下载。下载完后,8051内核脱离RESET状态开始执行代码。可以通过Firmware对USB设备重新配置,这个重新配置过程叫做再枚举。
   
   在EZ-USB中,缺省USB设备的接口中包括14个Endpoints,如表1所示。
   
   表1 缺省USB端点(Endpoint)
   
   Endpoint Type ALTErnate Setting
    0 1 2
   MaxPacket Size(bytes)
   0 CTL 0 64 64
   1IN INT 0 16 64
   2IN BULK 0 64 64
   2OUT BULK 0 64 64
   4IN BULK 0 64 64
   4OUT BULK 0 64 64
   6IN BULK 0 64 64
   6OUT BULK 0 64 64
   8IN ISO 0 16 256
   8OUT ISO 0 16 16
   9IN ISO 0 16 16
   9OUT ISO 0 16 16
   10IN ISO 0 16 16
   10OUT ISO 0 16 16
   
   计算机与USB设备的数据通信主要包括两个方面:一是读取采样数据;二是给USB设备发送控制命令。发送控制命令先发送一个命令包(消息),然后根据情况发送后续数据或从设备读取响应数据。因此,根据EZ-USB芯片的功能,直接使用缺省配置中的6个Endpoint。
   
   Endpoit OUT2 BULK:用来发送控制命令包。
   
   Endpoint IN2 BULK:接收从USB设备发来的DSP消息。
   
   Endpoint IN4 BULK:用来从USB设备读取数据,如读取采样数据、配置参数等。
   
   Endpoint OUT4 BULK:用来向USB设备发送数据,如下载8051程序、下载FPGA程序等。
   
   Endpoint OUT6 BULK:作辅助判断用,当PC传送完大量数据至USB设备时,向该端口写任意数据以起到通知USB设备的作用。
   
   Endpoint IN1 INT:用来从USB设备读取响应信号,如下载FPGA程序是否成功的标志等。
   
   在缺省配置基础上可以编写适合需要的代码,如果对8051编程经验丰富的话,完全可以在不需要调试工具的情况下编写Firmware。
   
   本系统Firmware结构建立在对消息队列不断服务基础上,即构建一个消息队列,当接收到任何一方(DSP或计算机)的消息时,将其放入消息队列。消息的接收是通过中断服务程序来实现的。当处理完一个消息时,从消息队列取出下一个消息进行处理。这种软件结构非常简单,思路清晰,对调试十分有利。
   
    USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的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_DownloaDFPGA(KIrp);
   
   NTSTATUS USBDAC_Download8051(KIrp);
   
   NTSTATUS USBDAC_SetChannelParameter(PUCHAR,ULONG,int);
   
   …
   
   };
   
   4 FPGA
   
   FPGA模块主要实现单片机与DSP间的数据缓冲、8位数据线与32位数据线间的转换、单片机同步串口和DSP缓冲串口的切换。要求FPGA能实现丰富的内部RAM和准确的时钟控制。根据需要选用XILINX公司的XCV50TQ144。该器件采用SRAM 查找表结构,具有系统内可再编程(ISP)和运行间可再配置等特性。系统初始化时由USB口下载FPGA程序,通过单片机串口对其进行线配置。
   
   本系统可广泛用于振动、噪声测试分析。可以在WINDOWS95/98/NT下开发各类动态测试与信号处理的应用程序,根据需要加载已经编制的各种DSP算法,使其具有信号分析、模态分析、声学分析、环境测试、长时间记录等功能。


本文关键字:数据采集  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术