基于ISP1581的USB数据采集系统的实现

发布者:自在逍遥最新更新时间:2010-08-23 来源: 电子技术应用关键字:数据采集  USB  ISP1581 手机看文章 扫描二维码
随时随地手机看文章

  数据采集广泛应用于信号检测、信号处理、仪器仪表等领域。目前,有各种数据采集卡或采集系统可供选择,但由于数据源以及用户需求的多样性,有时并不能满足要求。特别是在某些应用中,需要同时高速采集多个通道的数据,而且为了分析比较各通道信号间的相互关系,常常要求所有通道的采集必须同步。目前常用的数据采集卡是具有ISA总线、PCI总线等接口形式的A/D采集卡,虽然数据传输率很高,但是还存在整个系统笨重,缺乏灵活性,不能实现即插即用,不适合小型、便携设备应用等缺点。通用串行总线(USB)是为了解决日益增加的PC机外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准。USB的出现很好地解决了以上问题。USB不仅具有快速的传输性能,而且USB协议本身具有其纠错能力,它的即插即用模式和易扩展性能都具有很强的发展前途和应用价值[1]。根据项目实际需求,本文设计了一种基于ISP1581的高速USB多通道数据采集系统,系统最高采样率每通道可达500 K字,并且具有增益控制调节、外触发同步采集等功能,目前该系统已成功地应用于某水下定位系统[2]。

  1 系统硬件组成

  如图1所示,系统由信号调理电路模块、A/D采集模块、USB数据传输模块三个部分组成。

  1.1 信号调理电路模块

  由于从传感器进来的信号一般都比较小(大约在微伏量级),A/D无法直接对这些信号进行采集,需要通过信号调理电路模块对其进行放大,以满足A/D采集的量程范围。另外,由于信号容易受到外界噪声以及电噪声的干扰,通过信号调理电路所具有的滤波功能,可以滤除信号频带外的噪声。[page]

  1.2 A/D采集模块

  A/D采集模块由1片FPGA和2片A/D组成,完成4路信号的模/数转换。模数转换器选择的是AD7655芯片。AD7655是一款高速、低功耗4通道16位模数转换器,采用5 V单电源供电,模拟输入信号范围为0 V~5 V;高输入阻抗,可对4路模拟输入同时高速采样并进行数字化转换,采样速率最高可达1 MS/s,支持并行或串行接口。由于本采集系统要求对各路信号的相位严格一致,而AD7655只能同时对4个通道中的2路信号同时进行采样,因此,1片A/D仅连接了2路模拟信号。另外,为了保证所有通道信号的相位一致性,2片A/D需要使用同一个转换信号来控制转换的进行,故在电路连接时,把每个A/D芯片的转换信号(CNVST)管脚连接在一起,然后连接到FPGA上的转换信号输出管脚上,由FPGA输出的转换信号驱动。FPGA与A/D之间的数据读取采用总线的方式,将每一片A/D的读控制信号都独立连接到FPGA上,由FPGA控制各路采样数据的读取。采集电路连接如图2所示。

  1.3 USB数据传输模块

  USB数据传输模块是本系统的核心。要开发USB功能设备,首先需要对设计产品的功能进行全面了解,包括数据传输速率、传输类型、所需要的硬件资源等。在充分了解设计的产品后,要选择合适的USB接口芯片,如果选择得好,可以大大节省开发时间和费用。

  USB接口芯片是一种集成了USB协议的微处理器,能自动对各种USB事件作出响应,以处理USB总线上的数据传输。所有的主机和设备上都至少含有1块实现其功能的USB接口芯片。按照不同的标准,USB接口芯片有如下几种分类方式,以功能分类则可以分为:主控制器芯片、集线器芯片、功能设备芯片;以使用方式进行分类则可以分为:带USB接口的专用MCU、带USB接口的通用MCU、纯粹的USB接口芯片。

  本设计中选用了Philips公司的USB2.0接口芯片ISP1581,该芯片属于纯粹的USB接口芯片。这类USB接口芯片价格较低,接口方便,灵活性高,针对不同的硬件环境可以配合多种MCU使用,如单片机、DSP、FPGA[3-4]。ISP1581支持2种工作模式:通用处理器模式和断开总线模式。本设计中采用DSP来控制ISP1581,连接方式选用通用处理器模式,原理图如图3所示。

[page]

  2 USB接口软件开发

  软件分为USB固件程序开发和USB设备驱动程序开发两大部分。

  2.1 USB固件程序开发

  所有基于微处理器及其外围电路的功能设备的正常工作都离不开固件的参与,固件的作用就是辅助硬件,即控制硬件来完成预期的功能,如没有固件的参与和控制,硬件设备只是芯片简单的堆砌,无法实现预期的功能,如同一台没有安装操作系统的计算机,无法正常工作。因此,用户必须编写固件程序来辅助硬件完成USB通信任务[5]。具体如下:

  (1)初始化。主要是设置一些特殊寄存器的初值,以实现所需的设备属性或功能,例如开中断、使能端点、配置端口等。

  (2)辅助硬件完成设备的重新枚举(ReNumeration)过程。包括模拟设备的断开与重新连接,对收到的设置包进行分析判断,从而对主设备请求做出适当的响应,完成对设备的配置任务。

  (3)对中断的处理。

  (4)数据的接收和发送。

  (5)外围电路的控制。

  固件程序设计成中断驱动模式,采用模块化设计,其总体结构如图4所示。

  各模块的主要功能如下:

  (1)主程序:完成DSP及USB接口芯片的初始化、数据发送/接收标志位的判断及中断请求等待。

  (2)中断服务程序:中断服务程序是整个固件程序设计的重点。首先通过读取ISP1581中断寄存器的值判断所发生中断的类型,然后根据具体的中断类型进入相应的处理子程序或设置相应的标志位。中断服务程序中需要处理的有总线复位中断、高速状态变化中断、SETUP中断及端点的IN/OUT中断。在所有的中断处理程序中,EP0SETUP中断处理是最重要的,它是USB设备与PC机间建立通信链路的基础。

  (3)请求处理程序:USB标准请求处理程序负责处理枚举阶段主机发给设备的标准请求,以及正常工作时主机发送的厂商请求。USB2.0协议中规定了11种USB标准请求,对这11种标准请求作出正确的响应是设备成功枚举的重中之重。当固件接收到第1个SETUP中断后,就进入USB枚举过程,其过程是由主机发出一系列USB标准设备请求并要求及时得到设备响应,如果不需要进行操作,也必须指示一个空响应,使主机能为该设备准备其所请求的资源,建立好两者之间的信息沟通机制。

  (4)数据接收/发送程序:当用户通过主机端应用程序向设备索要数据或向设备发送数据时,DSP调用数据发送/接收子程序完成数据的发送/接收。数据的发送和接收过程如下:

  发送数据:选择端点索引→写发送缓冲区长度寄存器→写发送数据到数据端口寄存器→等待发送完毕标志。

  接收数据:选择端点索引→读接收缓冲区长度寄存器→从数据端口寄存器读取接收到的数据。[page]

  (5)硬件接口访问程序:硬件接口程序负责完成DSP对ISP1581的读写操作,它是整个固件程序中最底层也是使用最频繁的部分,在这里主要定义了2种类型的函数:ISP1581常用寄存器访问函数和数据端口寄存器访问函数。

  常用寄存器访问函数:

  void outport(unsigned int *reg_addr, unsigned short value);

  unsigned short inport(unsigned int *reg_addr);

  数据端口寄存器访问函数:

  void write_ep(unsigned short *addr, unsigned short size);

  unsigned short read_ep(unsigned short *addr);

  write_ep为写端点发送缓冲区函数,其中参数*addr为指向待发送缓冲区的起始地址指针,参数size为要发送数据的字节数;read_ep为读端点接收缓冲区函数,参数含义与write_ep函数相同,返回值为接收数据的字节数。

  2.2 驱动程序开发

  Windows环境下驱动程序有3种模型:VxD模型、KMD模型、WDM模型。WDM模型是微软力推的全新驱动程序模型,现在主流的操作系统都是采用基于WDM模型的驱动程序,因此本采集系统也采用WDM驱动程序模型来开发USB设备的驱动程序[6]。

  对于USB设备,其WDM驱动程序分为USB底层(总线)驱动程序和USB功能(设备)驱动程序。USB底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现底层通信。USB功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB底层驱动程序发送包含请求块URB(USB Request Block)的IRP,以实现对USB设备信息的发送和接收。

  目前,WDM驱动程序开发工具有3种:Microsoft公司的DDK、Numega公司的DriverStudio和Jungo公司的WinDriver。其中,DDK的开发难度较大,开发者需要对整个体系结构和WDM规范有很好的理解和把握,还要熟悉上千个DDK函数的功能和使用场合,且测试流程繁琐;DriverStudio的开发难度低一些,它将DDK函数按照逻辑功能进行组织,把很多常用功能封装成类,建立了一个基于C++语言的面向对象的编程环境,开发者面对的不再是上千个复杂凌乱的DDK函数,而是逻辑清晰的类库;WinDriver的开发几乎没有难度,开发者所编写的只是定制和调用它提供的通用驱动,开发周期较短,特别适合于驱动程序初学者使用。

  利用WinDriver开发设备驱动程序,有2种方法:(1)用Wizard自动生成驱动程序的框架代码,根据实际要求修改代码,加入定制的功能,再在用户态执行和调试代码,并将性能要求苛刻的部分插入到核心态,从而完成整个驱动程序的编写。在使用这种方法时,WinDriver已经完成了驱动程序编写的大部分工作,减少了工作量,使编写驱动成为相对较简单。但此方法生成的设备驱动程序,其通用性和可移植性较差;(2)完全用WinDriver提供的API函数来写驱动程序。这样要比修改由Wizard生成的框架代码灵活得多,并且编写的程序更简短。但这要求开发者熟悉驱动程序的框架,能熟练运用WinDriver API函数。

  为了缩短开发周期,在实际应用中选用了第1种方法生成驱动程序。具体步骤如下:

  (1) 启动Driver Wizard,检测连接的USB设备,生成inf文件,这个inf文件和WinDriver包含的windrvr6.sys一起,就是新开发USB设备的驱动程序。

  (2) 点击Next按钮,进入资源列表窗口,窗口中显示了管道(Pipe)的一些基本信息。此窗口还可以用于对外设进行读写,测试硬件资源的正确性,窗口中的Log部分即为测试结果。

  (3) 点击Next按钮,进入代码生成窗口,在窗口中选择生成C语言代码。之后Driver Wizard将自动生成针对ISP1581的样本程序和工程文件(包括代码文件、说明文件以及适用于VC++编译器的项目文件)。

  (4)重新安装这个USB设备的驱动程序,利用DriverWizard生成的文件,就可开发应用程序了。[page]

  经过反复测试发现,在现有硬件上批量传输的速度在60 Mb/s左右,可以满足当前系统采样频率为500 kHz时的数据采集要求,即500K×4路×16=32 Mb/s。但与USB2.0规范的极限速度相比,现有的批量传输速度还不及其13%,分析其原因:

  (1) USB2.0规范定义的最大速度为480 Mb/s,但它是包含令牌包在内的传输,因此,若扣除通信协议中的令牌,实际传输速度要远低于480 Mb/s。

  (2) 从访问寄存器的时序参数可以看出,读/写周期最小为80 ns,即DSP对ISP1581读写的最高频率是12.5 MHz,由于每次读写操作的数据为2 B,所以DSP与接口芯片之间数据传输的最高速率是25 MB/s,最后的实际值应该小于此值。

  (3) 利用WinDriver开发驱动,事实上它只是定制和调用WinDriver提供的通用驱动而已,所以并非有针对性地对特定硬件编程,程序执行效率上也不免大打折扣。

  (4) 计算机与USB设备的通信中还包含对计算机硬盘的写操作,使用测试软件对所用机器硬盘进行写测试,测得平均速度在22~25 MB/s之间,因此硬盘的写速度也是影响USB数据传输速度的原因之一。

  因此若想在现有硬件平台上获得更高的速度可以在以下几个方面进行:采用端点的双缓冲模式、采用ISP1581的DMA模式、采用效率更高的驱动开发方式及优化固件程序以提高硬件的工作效率等。

  参考文献

  [1]  廖济林.USB2.0应用系统开发实例精讲[M].北京:电子工业出版社,2006.

  [2]  张建鹏,解国明,李刚.基于ISP1581型接口电路的USB2.0接口设计[J].国外电子元器件, 2005(9).

  [3]  黎美. 基于USB2.0的接口芯片ISP1581的应用与设计[J].集成电路应用,2005(7).

  [4]  Compaq, Intel, Lucent, Microsoft, NEC, Philips.Universal serial bus specification, Revision2.0[S].2000.

  [5]  周立功.PDIUSBD12 USB固件编程与驱动开发[M].北京:北京航空航天大学出版社,2003.

  [6]  武安河,邰铭,于洪涛. Windows 2000/XP WDM 设备驱动程序开发[M].北京:电子工业出版社,2002.

关键字:数据采集  USB  ISP1581 引用地址:基于ISP1581的USB数据采集系统的实现

上一篇:业界首个用于示波器的GDDR5一致性测试工具
下一篇:电-磁振子组合型超宽带UWB天线的特性研究

推荐阅读最新更新时间:2024-03-30 22:12

基于McBSP的高速串行数据采集系统设计
1. 序言 本文介绍了基于TI公司的新一代DSP芯片TMS320C6711和AD公司的串行模数转换芯片AD974的嵌入式数据采集系统的设计方法。 TMS320C6711是32bit浮点信号处理器,核心电压1.8V,工作频率100-150MHz,2级Cache,运算速度 900MFLOPS。其多通道缓冲串口(Multi-channel Buffered Serial Port,McBSP)可直接与AD974进行串口连接,为系统提供高性能的A/D转换和数据处理能力。 AD974是美国模拟器件公司生产的一个200kSPS、4通道、16位数据采集系统。具有高通过率、低功耗、高精度等特性,此外,该器件还集成了外围器件,并采用串行通
[单片机]
基于McBSP的高速串行<font color='red'>数据采集</font>系统设计
用DNW通过USB烧uboot到nand
  烧写前提:已经把FS2410开发板的S3C2410_BIOS.bin通过JTAG烧到了NOR里面了,这样我们从NOR启动才可以使用USB下载功能,从NOR启动界面如下:   我们首先选择0,把我们自己的uboot下载到内存   我们这时把USB线插到主板和主机,如果是第一次使用,则会弹出对话框提示安装驱动,安装完驱动后会提示如下图:   我们配置一下要下载到内存的位置,选择菜单   Configuration Options 如下图:   在DownloadAddress 里的0X3020000是我们要下载到内存的地址   配置好后,然后我选择菜单   USB P
[嵌入式]
基于电力线载波技术的远程电流数据采集系统的设计
简介:介绍了一种利用半导体磁阻式电流传感器(MRCS)和LM1893芯片实现的远程电流数据采集系统。系统硬件主要由AT89C2051单片机主控电路、串行ADC0832模/数转换电路、LM1893电力线载波发送电路等三部分组成;软件以MCS-51汇编语言编制,并给出了软件设计的流程图。由于采用了电力线载波技术,该系统可用于远距离信号的测量和传输,具有较高的实用价值。 在现代生产过程的检测和控制中,电流参数的采集是最普遍最重要的项目之一。在一些数据采集系统中,测量现场距离较远且环境恶劣,计算机主控系统与测量装置、传感器远离。传统的方法是采用长距离的电缆系统或通过无线电传输,但其成本较高或占用无线电频率资源。电力线载波技术很好地解决
[单片机]
基于电力线载波技术的远程电流<font color='red'>数据采集</font>系统的设计
带有USB接口的16位立体声数模转换器PCM2702
    摘要: PCM2702是Burr-Brown公司新近推出的一种带有USB接口的16位立体声数模转换器芯片。文中简要分析了该芯片的性能特点和工作原理,最后给出了PCM2702的典型应用电路。 关键词: PCM2702 USB接口 立体声 数模转换 1 引言 PCM2702是一块单片数模转换芯片。它有两个数模转换输出通道和一个一体化的USB接口控制器。该接口符合USB1.0标准。PCM2702采用最新开发研制的SPAct TM(采样期内自适应控制跟踪)系统。该系统能够从USB接口的音频数据中分离出一个稳定的、偏差较小的时钟信号以协调PLL和DAC工作。 PCM2702主要由三部分组成:
[应用]
基于USB2. 0控制器的软件狗设计及安全性分析
   1  引  言   随着计算机技术的发展, 计算机软件作为特殊商品在信息时代越来越重要。但是由于计算机软件的易拷贝性, 各种软件盗版、侵权现象不断发生, 软件加密技术应运而生。它分为软加密和硬加密两类, 所谓软加密就是用纯软件的方式, 在程序中使用一些独特的软件算法或其它手段来验证使用者的合法性, 其特点是成本低, 但加密强度不高, 易被破解;硬加密则是采用软件与硬件配合, 通过硬件来控制软件运行的加密方法, 如密钥盘、加密卡、软件狗等方法, 其加密性能好, 不象软件那样有易复制性, 所以从理论上讲, 它比软加密要可靠一些。而综合分析硬加密的技术指标如可靠性、读写速度、破译程度、占用主机资源等, 软件狗是一种较好的加密方
[嵌入式]
基于单片机和CPLD的高精度数据采集系统设计
1 引言 数据采集系统的任务,就是采集传感器输出的模拟信号转换成计算机能识别的数字信号,送入计算机,将计算机得到的数据进行显示或打印,以便实现对某些物理量的监视,其中一部分数据还将被生产过程中的计算机控制系统用来控制某些物理量。数据采集系统性能的好坏,主要取决于它的精度和速度。在保证精度的条件下,应有尽可能高的采样速度,以满足实时采集、实时处理和实时控制对速度的要求。 当前科学技术的发展对数据采集系统的采样速率、分辨率、精度、接口及抗干扰能力等提出越来越高的要求,许多领域越来越多地要求具有高精度A/D转换和实时处理功能。同时,市场对支持更复杂的显示和通信接口的要求也在提高,如环境监测、电表、医疗设备、便携式数据采集以及工业传感
[单片机]
基于单片机和CPLD的高精度<font color='red'>数据采集</font>系统设计
无线传感器网络的数据采集技术应用探讨
自人类踏入信息时代,自然界的信息通过传感器源源而来。而随着技术的发展,人们已不满足于原有单一的、独立的传感器系统。很多时候,我们需要将来自不同区域的信息联合汇总,从而实现对现场状况的综合判断。   在农场里,我们需要了解各处作物的灌溉情况,土壤空气质量,以确保农作物健康生长;在矿区,我们需要知道瓦斯浓度,矿工位置以及地下矿场温湿度,粉尘浓度以保证工人人身安全;在大型建筑中,我们又需要了解建筑各个位置受环境湿度,风速的影响以及自身老化程度,以及时维护建筑的结构健康。通常,在这些情况下,用来采集数据的传感器被放置在相距上千米的位置,并且需要在长达几个月甚至几年的时间内进行连续数据检测工作,工作人员无法经常进行维护。这时,长距离布线,数据
[模拟电子]
无线传感器网络的<font color='red'>数据采集</font>技术应用探讨
stc-isp单片机下载软件与STC-USB驱动安装说明(教程)
WindowsXP安装方法 打开 V6.79 版(或者更新的版本)的 STC-ISP 下载软件,下载软件会自动将驱动文件复制到 相关的系统目录 插入 USB 设备,系统找到设备后自动弹出如下对话框,选择其中的“否,暂时不”项 在下面的对话框中选择“自动安装软件(推荐)”项 在弹出的下列对话框中,选择“仍然继续”按钮 接下系统会自动安装驱动,如下图 出现下面的的对话框表示驱动安装完成 此时,之前打开的 STC-ISP 下载软件中的串口号列表会自动选择所插入的 USB 设备,并显示 设备名称为“STC USB Writer (USB1)” ,如下图: ? Windows7(32位)安装方法
[单片机]
stc-isp单片机下载软件与STC-<font color='red'>USB</font>驱动安装说明(教程)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved