基于USB数据采集系统的设计开发
扫描二维码
随时随地手机看文章
目前,国内外的数据采集系统常用的数据采集卡有RS-232、RS-485卡、PCI卡、ISA卡等。这些数据采集卡虽然有各自的优点,但是也有各自的缺点。例如:RS-232、RS-485卡的传输速度较慢,PCI卡、ISA卡需要插在主机的PCI插槽或ISA插槽上,使用不方便等。通用串行总线(USB)是一种新的接口方式,具有连接方便、支持热插拔、无需外接电源、传输速度高、功耗低等优点。USB 2.0的最大传输速率高达480Mbps。因此,基于USB的数据采集系统在通信、遥感、智能仪器仪表、工业自动化等领域得到了广泛应用。
1 系统硬件设计
该数据采集系统的硬件部分主要由A/D转换器AD7829,LPC2132微处理器,USB2.0接口芯片ISP1581和PC机组成。USB数据采集系统硬件结构图如图1所示。
图1 系统硬件结构框图
数据采集系统的工作原理:由传感器采集的信号经调制电路放大、滤波等处理后,进入由微处理器控制的AD7829进行模数转换,转换后的数字量进入微处理器LPC2132并暂存在其中,随后由USB接口芯片将数字量传递给PC机进行数据处理,同时将PC机端的客户应用程序发出的控制信号通过USB接口传送到以LPC2132为核心的数据采集系统[1]。
1.1 USB接口芯片
该数据采集系统选用ISP1581作为USB接口芯片,ISP1581是Philips公司推出的一款高性价比的USB2.0接口电路,支持7个IN端点,7个OUT端点和一个固定控制IN/OUT端点。ISP1581支持SUB2.0的自检工作模式和USB1.1的返回工作模式,可以在高速或全速条件下正常运行。内部集成有串行接口引擎(SIE)、PIE、8KB的FIFO存储器、数据收发器、PLL的12MHz晶体振荡器和3.3V的电压调整器。该电路可直接与ATA/ATAPI外设相连,并具有高速DMA接口。传输速率最高可达480Mbps/s[2]。
1.2主控芯片和A/D转换芯片
为了满足速度的要求,主控芯片选用LPC2132。LPC2132是Philips公司的一款基于ARM7TDMI-STM 内核的微控制器,带有64kB的嵌入的高速Flash存储器和16kB片内静态RAM。多达47个5V的通用I/O口,1个8路10位A/D转换器,1个10位D/A转换器,可提供不同的模拟输出。多个串行接口,包括2个16C550工业标准UART、2个高速I2C接口(400kbit/s)、SPITM 和SSP。通过片内PLL可实现最大为60MHz的CPU操作频率[3]。
虽然LPC2132自带1个8路A/D转换器,但是其每通道转换时间是2.44us,达不到高速数据采集的要求,因此选用AD7829模数转换器。AD7829是一个8路8位模数转换器,最大转换率2Mbps,可以满足系统设计要求。
1.3硬件接口电路
该数据采集系统硬件连接图如图2所示。
图2硬件连接示意图
模拟信号经AD7829转换后变为数字量,数据先存放在LPC2132的寄存器里,再由LPC2132将数据传送给ISP1581,在此将ISP1581的缓冲区定义为8个,分别写入8路转换后的数据。而PC机通过USB接口与ISP1581连接,ISP1581负责分类和解释PC机发来的信号,具体操作流程如下:PC机发送给USB设备的数据以包的形式写入ISP1581的缓存中,当缓存被写满或数据发送完毕后,ISP1581就给LPC2132发中断信号,LPC2132 响应中断信号进入中断服务程序执行相应的包处理。USB设备不能主动向主机发送数据,只有当PC机要求USB设备发送数据时,LPC2132才将主机需要的数据写入ISP1581相应端点的缓存中[4]。
2 系统软件设计
本数据采集系统的软件部分主要由:固件程序设计、应用程序设计和USB驱动程序设计三部分组成。
2.1固件程序设计
固件程序中AD7829的转换脉冲/CONVST是由LPC2132 的P0.18 口发出,当AD7829转换结束后输出有效低电平,LPC2132接到有效电平后,发下一路地址(通过A0,A1,A2的高低电平配置)给AD7829,然后读数据,当AD7829的/RD和/CS信号有效时,将数据读人LPC2132的数据缓冲区的同时将下一路的地址打人,这样循环采集8路模拟输入,直到数据采集结束。
LPC2132与ISP1581之间的通信时靠LPC2132给ISP1581发送命令和数据来实现的。通过ISP1581的INT中断信号与微控制器LPC2132的EINT0口相连,当接收或发送数据成功时会产生中断,固件程序对这些中断进行响应并完成设备的配置。设备固件程序采用Keil C进行编写,包括主循环程序、中断服务程序、USB标准请求处理和批量数据传送请求处理4部分。如图3所示。
图3 固件程序框图
2.2 应用程序设计
应用程序包括Win32DLL程序和用户应用程序。Win32动态连接库是包含共享函数库的二进制文件,可以被多个应用程序同时使用。客户应用程序则是实现数据采集系统功能的软件程序,在本系统中采用Visual C++进行编写。
2.3 USB系统驱动程序设计
USB系统驱动程序采用分层结构模型,如图 4 所示。选用Microsoft公司提供的Windows驱动开发工具Windows DDK。
图 4 USB分层驱动模型
应用程序通过Win32 子系统利用一个Windows定义的软件接口(API)来同根集线器驱动程序进行通信。而USB根集线器驱动程序则要通过USBDI(通用串行总线驱动程序接口) 来实现同通用串行总线驱动程序(USBD)的通信。然后, US2BD会选择两种主控制器驱动程序之一来同其下方的主控制器进行通信。最后,主控制器驱动程序会直接实现对USB 物理总线的访问。在USB可用之前, 必须对其进行配置和接口选择, 然后所选择接口的各个管道才是可用的。在USBDI的基础上进行编程将大大简化, 用户不用关心IRP的类型, 而只需要在相应的分发例程中通过构造USB块并将其通过USBDI发送下去,就可以实现对USB设备的控制[5]。
3 结束语
USB数据采集系统优于传统的实时数据采集系统,它具有安装方便,支持即插即用,易于扩展,电磁干扰小,性价比高等优点。系统采用ARM7 芯片LPC2132和USB 2.0接口控制芯片ISP1581,实现数据采集系统的软硬件设计开发。在实验测试中,使用信号发生器生成8路模拟信号并将其接到数据采集系统的输入端,在PC机上可显示出对应的8路模拟信号波形,单路采样率为150 kSPS,达到系统设计的要求,证明了设计的正确性和实用性。
参考文献
[1] 王立萍,吴黎明.基于嵌入式USB数据采集系统的设计开发 [J]. 电子测量技术,2007,30(9):24~26
[2] ISP1581 Users Manual [Z].Philips Corp
[3] 周立功,张华.深入浅出ARM7[M].北京:北京航空航天大学出版社,2005.52~53.
[4] 张广利,阎有运.基于AT89S52的USB数据采集系统的设计[J] .仪器仪表用户,2008,03:33~35.
[5] 周冲,刘镇.基于AT89S52的USB数据采集系统的设计[J] .科学技术与工程,2007,7(22):5935~5938