基于ISP1581的USB数据采集系统的实现
时间:01-29
来源:互联网
点击:
数据采集广泛应用于信号检测、信号处理、仪器仪表等领域。目前,有各种数据采集卡或采集系统可供选择,但由于数据源以及用户需求的多样性,有时并不能满足要求。特别是在某些应用中,需要同时高速采集多个通道的数据,而且为了分析比较各通道信号间的相互关系,常常要求所有通道的采集必须同步。目前常用的数据采集卡是具有ISA总线、PCI总线等接口形式的A/D采集卡,虽然数据传输率很高,但是还存在整个系统笨重,缺乏灵活性,不能实现即插即用,不适合小型、便携设备应用等缺点。通用串行总线(USB)是为了解决日益增加的PC机外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准。USB的出现很好地解决了以上问题。USB不仅具有快速的传输性能,而且USB协议本身具有其纠错能力,它的即插即用模式和易扩展性能都具有很强的发展前途和应用价值。根据项目实际需求,本文设计了一种基于ISP1581的高速USB多通道数据采集系统,系统最高采样率每通道可达500 K字,并且具有增益控制调节、外触发同步采集等功能,目前该系统已成功地应用于某水下定位系统。
1 系统硬件组成
如图1所示,系统由信号调理电路模块、A/D采集模块、USB数据传输模块三个部分组成。
1.1 信号调理电路模块
由于从传感器进来的信号一般都比较小(大约在微伏量级),A/D无法直接对这些信号进行采集,需要通过信号调理电路模块对其进行放大,以满足A/D采集的量程范围。另外,由于信号容易受到外界噪声以及电噪声的干扰,通过信号调理电路所具有的滤波功能,可以滤除信号频带外的噪声。
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所示。
2 USB接口软件开发
软件分为USB固件程序开发和USB设备驱动程序开发两大部分。
2.1 USB固件程序开发
所有基于微处理器及其外围电路的功能设备的正常工作都离不开固件的参与,固件的作用就是辅助硬件,即控制硬件来完成预期的功能,如没有固件的参与和控制,硬件设备只是芯片简单的堆砌,无法实现预期的功能,如同一台没有安装操作系统的计算机,无法正常工作。因此,用户必须编写固件程序来辅助硬件完成USB通信任务。具体如下:
(1)初始化。主要是设置一些特殊寄存器的初值,以实现所需的设备属性或功能,例如开中断、使能端点、配置端口等。
(2)辅助硬件完成设备的重新枚举(ReNumeration)过程。包括模拟设备的断开与重新连接,对收到的设置包进行分析判断,从而对主设备请求做出适当的响应,完成对设备的配置任务。
(3)对中断的处理。
(4)数据的接收和发送。
(5)外围电路的控制。
固件程序设计成中断驱动模式,采用模块化设计,其总体结构如图4所示。
1 系统硬件组成
如图1所示,系统由信号调理电路模块、A/D采集模块、USB数据传输模块三个部分组成。
1.1 信号调理电路模块
由于从传感器进来的信号一般都比较小(大约在微伏量级),A/D无法直接对这些信号进行采集,需要通过信号调理电路模块对其进行放大,以满足A/D采集的量程范围。另外,由于信号容易受到外界噪声以及电噪声的干扰,通过信号调理电路所具有的滤波功能,可以滤除信号频带外的噪声。
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所示。
2 USB接口软件开发
软件分为USB固件程序开发和USB设备驱动程序开发两大部分。
2.1 USB固件程序开发
所有基于微处理器及其外围电路的功能设备的正常工作都离不开固件的参与,固件的作用就是辅助硬件,即控制硬件来完成预期的功能,如没有固件的参与和控制,硬件设备只是芯片简单的堆砌,无法实现预期的功能,如同一台没有安装操作系统的计算机,无法正常工作。因此,用户必须编写固件程序来辅助硬件完成USB通信任务。具体如下:
(1)初始化。主要是设置一些特殊寄存器的初值,以实现所需的设备属性或功能,例如开中断、使能端点、配置端口等。
(2)辅助硬件完成设备的重新枚举(ReNumeration)过程。包括模拟设备的断开与重新连接,对收到的设置包进行分析判断,从而对主设备请求做出适当的响应,完成对设备的配置任务。
(3)对中断的处理。
(4)数据的接收和发送。
(5)外围电路的控制。
固件程序设计成中断驱动模式,采用模块化设计,其总体结构如图4所示。
总线 USB 电路 传感器 FPGA MCU 单片机 DSP C语言 相关文章:
- 工业以及汽车应用中多种串行总线特性及比较(01-05)
- 智能家居的标准与协议(08-27)
- LonWorks现场总线设备驱动设计与实现(08-21)
- 浅谈数据线扼流圈改善电磁兼容问题使汽车更加安全(06-23)
- 基于I2C总线遥控彩电原理及故障演示装置的研制(11-14)
- 基于CAN总线的半挂车安全预警系统设计(03-16)