用户登陆 用户注册
您的位置:首页>
技术文章>内容正文
基于USB总线的实时数据采集系统设计与实现
[正文]:在现代工业生产和科学技术研究的各行业中,通常需要对各种数据进行采集。
目前通用的通过数据采集板卡采集的方法存在着以下缺点:安装麻烦,易受机箱内环境的干扰而导致采集数据的失真,易受计算机插槽数量和地址、中断资源的限制,可扩展性差。
而通用串行总线usb(universal serial bus)的出现,很好地解决了上述问题,很容易实现便捷、低成本、易扩展、高可靠性的数据采集,代表了现代数据采集系统的发展趋势。
1系统硬件设计与实现1.1硬件总体结构基于usb总线的实时数据采集系统硬件组成包括模拟开关、a/d转换器、单片机、usb接口芯片,其硬件总体结构如图1所示。
多路模拟信号经过模拟开关传到a/d转换器转换为数字信号,单片机控制采集,usb接口芯片存储采集到的数据并将其上传至pc,同时也接收pc机usb控制器的控制信息。
点击查看大图片
1.2 pdiusbdl2芯片usb接口芯片采用philips公司的一种专用芯片pdius-bdl2(以下简称d12)。
该芯片完全符合usbl.1规范,集成了sie、320b的多配置fifo存储器、收发器、电压调整器、softconnect、goodlink、可编程时钟输出、低频晶振和终端电阻等,支持双电压工作、完全自动dma操作、多中断模式,内部结构如图2所示。
点击查看大图片
单片机通过8位并行接口传送经过a/d转换的采集数据,存储在fifo存储器中。
一旦存满,串行接口引擎sie立刻对数据进行处理,包括同步模式识别、并/串转换、位填充/不填充、crc校验、pid确认、地址识别以及握手鉴定,处理完毕后数据由模拟收/发器通过d+、d-发送至pc。
上述过程遵循usbl.1协议。
d12与89c51的具体实现电路如图3所示。
点击查看大图片
2系统软件设计与实现系统软件包括usb设备固件编程、驱动程序和应用程序。
其中设备固件是整个系统的核心,它控制芯片d12采集数据、接收并处理usb驱动程序的请求和应用程序的控制指令。
2.1 usb设备固件程序设计与实现设备固件是设备运行的核心,用c语言设计。
其主要功能是控制a/d模块的数据采集;接收并处理驱动程序的请求,如请求描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等usbl.1标准请求;控制芯片d12接收应用程序的控制指令等。
其程序主框图如图4所示。
单片机检测到d12后进入主循环。
此时pc机先发令牌包给d12,d12接收到令牌包后给单片机发中断,单片机据中断类型设定标志位status,最后执行相应标志位的中断服务程序。
单片机通过a/d模块的中断入口控制a/d模块的数据采集。
点击查看大图片
2.2驱动程序设计与实现usb系统驱动程序采用分层结构模型:较高级的usb设备驱动程序和较低级的usb函数层。
其中usb函数层由通用串行总线驱动程序模块(usbd)和主控制器驱动程序模块(hcd)组成。
为使驱动程序具有通用性,也为简化应用程序的开发,编写了供应用程序调用的动态链接库。
这样应用程序只需调用此库提供的接口函数即可完成对usb设备的操作。
usb函数层(usbd及hcd)由windows98提供,负责管理usb设备驱动程序与usb控制器之间的通信、加载及卸载usb驱动程序等。
目前windows98提供的多种usb设备驱动程序并不针对实时数据采集设备,因此采用ddk开发工具设计专用的设备驱动程序。
其由四个模块组成:初始化模块、即插即用管理模块、电源管理模块以及i/o功能实现模块。
初始化模块提供一个driverentry人口点执行一系列的初始化过程。
即插即用管理模块实现usb设备的热插拔及动态配置。
当windows98检测到usb设备接人时,查找相应的驱动程序,并调用它的driverentry例程,pnp管理器调用驱动程序的adddevice例程,告诉它添加了一个设备;然后驱动程序为usb设备建立一个功能设备对象。
在此过程中,驱动程序收到一个irlmn-staridevice的irp,包括设备分配的资源信息。
至此,设备被正确配置,驱动程序开始与硬件进行对话。
电源管理模块负责设备的挂起与唤醒。
i/0功能实现模块完成i/o请求的大部分工作。
当动态链接库提出i/0请求时调用win32api函数devicetocontrol向设备发出命令;然后由i/0管理器构造一个irp并设置其majorfunction域为irp_mj_device_con-trol。
usb设备驱动程序收到该irp后取出其中的控制码,并利用一个开关语句找到对应的例程入口。
2.3 应用程序设计与实现应用程序采用visual basic6.0编写。
由于其只需调用动态链接库,故开发较简单。
主要功能包括检测usb设备、开启/关闭usb设备、设置a/d状态和数据采集端口、显示并分析实时采集的数据。
主框图如图5所示。
点击查看大图片
由于d12的端点1的fifo为16字节,端点2的fifo为64字节,当缓冲区存满后自动将数据打包,由sie自动发送数据包。
程序获得数据包后需延迟至下组数据包准备完毕,从而保证程序与数据采集同步。
另外程序还发出停止采集和关闭usb设备的命令。
3系统特点基于usb总线的实时数据采集系统严格遵循usbl.1协议,有以下特点:(1)易于扩展。
最长传输距离5m,采用usbhub可达30m;最多可同时接127个设备。
(2)电磁干扰影响极小。
本系统放置在计算机外部,不受板卡间的电磁干扰影响;若在电磁干扰极强的环境下工作,需专门为其设计电磁屏蔽方案。
(3)安装方便,支持即插即用。
克服了以往数据采集板卡需要打开机箱的麻烦。
(4)性价比高,远优于传统的实时数据采集系统。
(5)实时采集,实时显示。
网站首页
培训课程
维修指南
技术文章
家电专栏
供应信息
求购信息
培训资讯
展会信息
电脑专栏
教程下载
资料下载
常用软件
PLC教程
PLC资料
变频伺服
低压电器
维修资料
人机界面
自控仪表
工控机类
文章标题:
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
京ICP备11002135号
报时(2026-04-07 06:03:54)