《usb的数据采集系统设计分析》由会员分享,可在线阅读,更多相关《usb的数据采集系统设计分析(4页珍藏版)》请在金锄头文库上搜索。
1、USB的数据采集系统设计分析0 引言地质雷达从 20 世纪初,随着电子技术的发展,其功能和技术指标得到极大的提高,如利用高频天线进行公路面层厚度检测时,垂向分辨率可达到毫米级,利用低频天线探测深层目标时,探测深度可达到几十米。如今,随着地质雷达在考古、市政建设、建筑、铁路等各个领域的广泛应用,地质雷达的数据处理方法也在不断地进步。随着信息技术的飞速发展,各种数据的实时采集和处理在现代工业控制中已成为必不可少的。这就为我们的设计提出了两个方面的要求:一方面,要求接口简单灵活且有较高的数据传输率;另一方面,由于数据量通常都较大,要求主机能够对实时数据做出快速响应,并及时进行分析和处理。随着信息化带
2、动工业化进程的逐步深入,电子计算机信息技术的不断发展和完善,采用单片机实现的数据采集系统的应用越来越多。随着工业化的进步,以前传统的采用人工进行数据记录登记已经远远不能满足现在工业化生产的要求,而采用通用数据总线USB 连接单片机实现的数据采集系统具有自动化和无人值守等特点,使得它们在许多应用场合得到了广泛的应用。本文采用的是EZ-USB FX2LP 的CY7C68013 芯片,以USB 为研究对象,结合大型复杂的可编程器件(CPLD),设计USB 总线接口,构成基于PC 机的数据采集系统,最终实现多通道、高速的数据采集。1 通用串行总线USBUSB(Universal Serial Bus
3、通用串行总线)是一种计算机和外部设备进行通信连接的新型接口,最早于1994 年11 月,由康柏、微软、IBM、DEC 等公司共同提出1。USB 具有连接方便,无需外接电源,即插即用,支持热插拔,动态加载驱动程序等特有优点,在主机和数据采集系统之间可以实现简单、快捷、可靠的连接和通讯。所以,基于USB 总线的数据采集方式非常适用于数据采集系统,已逐渐成为现代数据传输的发展趋势。1.1 USB 总线特性USB 是一种高效、快速、价格低廉、体积小和支持热插拔的新型串行通信接口。其支持多个外围设备的连接和通信,并且即插即用的特点使用户可以在不重新启动计算机的情况下直接将USB 外围设备连接到计算机并开
4、始通信。USB 规范为计算机和外部设备之间的通信提供了一套完整的解决方案,与老式的计算机接口相比,USB 总线具有以下的优点:1.接口小巧。与老式的计算机接口相比,USB 接口具有很明显的体积优势,顺应了计算机和外部设备小型化的发展趋势。2.共享式接口。USB 接口采用了“菊花链”式的连接方式,支持多个外设的连接。通过USB 集线器,一个USB 主控制器最多可以连接126 个外设,大大拓展了计算机的外部功能扩展能力。3.支持即插即用和热插拔。当USB 设备连接到计算机的时候,系统会自动检测这个设备,并加载对应的驱动程序。这样,USB 实现了自动配置,用户无需任何手动配置,连接设备不需要重新启动
5、计算机;用户也可以随时断开USB 设备与计算机的连接,而不会损害计算机和外部设备。4.支持多种操作。目前USB 支持3 种传输速率:低速1.5Mbit/s、全速12Mbit/s 和高速480Mbit/s。同时,USB 还支持4 种类型的传输模式:块传输、中断传输、同步传输和控制传输。这样可以满足不同外设的功能需要。5.成本低。目前,市场上USB 的主控和从控芯片的价格都已十分低廉,其他组件也很便宜良好的兼容性。USB 规范发展至今已有USB1.0、USB1.1、USB2.0、无线USB 和USBOTG 等多个版本协议,这些协议都具有很好的向下兼容性。1.2 USB 的数据传输在 USB 总 线
6、上,所有与USB 设备功能单元的数据传输都是由客户软件启动的,其传输过程必须经过四个软硬件实体:客户软件、USB 总线驱动程序、USB 主控制器驱动程序和USB 主控制器。客户软件向USB 设备发送数据的传输步骤如下:1.客户软件把要传输的数据放入数据缓冲区,并向USB 总线驱动程序发出IRP,以请求数据传输;2.USB 总线驱动程序响应客户软件的IRP,并将其中的数据转化为一个个具有USB 格式的事务处理,然后将其向下传递;3.USB 主控制器驱动程序负责为这些事务处理建立一系列以帧/小帧为单位的事务列表,并保证其不会超过USB 的带宽;4.USB 总线控制器负责读取事务列表,并将其中的事务
7、处理以信息包为单位发送到USB总线上;5.USB 设备接收到这些信息包后,SIE 自动将其解包并将数据放入指定端点的接收缓冲区内,由芯片固件对其进行处理。USB 通过管道在主机缓冲区与设备端口间传送数据。在消息管道中传递的数据具有USB 定义的格式,它的缓冲区中包含的数据允许具有设备指定的格式。USB 要求任何在管道上传送的数据均被打包,数据的解释工作用客户软件和应用层软件负责。USB 提供了多种数据格式,使之尽可能满足客户软件和应用软件的要求。为了适合各种数据传输的需要,在USB 协议中定义了4 种数据传输类型。分别是控制传输(control transfer)、中断传输(interrupt
8、 transfer)、批量传输(bulk transfer)和同步传输(isochronous transfer),这4种传输类型必须符合通过总线来传输不同数据类型的要求2。2 系统硬件设计本文完成的主要功能是主机和USB 控制器之间大量数据的采集和发送,用到的硬件环境为支持USB2.0 协议的PC 机和USB 控制器,中间通过USB 电缆进行连接,主机和USB的数据通过上述过程进行传输,完成大量数据的采集和发送。下面介绍所选芯片EZ-USBFX2 的结构、特点,以及数据采集系统的硬件设计。2.1 EZ-USB FX2 特性EZ-USB FX2LP 拥有非常独特的结构,其串行接口引擎(SIE)
9、负责完成串行数据的解码、差错处理、位填充等与USB 协议有关的功能。串行接口引擎(SIE)能够实现大部分的功能,从而减轻了嵌入式增强8051 的负担,简化了USB 固件程序的开发。EZ-USB FX2LP 的CPU采用增强型8051 内核,指令集和标准的8051 完全兼容,因此便于学习和应用。这个增强型的8051 内核比标准的内核速度快,硬件资源更丰富,功能更强大3。总体来说,EZ-USBFX2LP 更方便于开发。需要强调的是,EZ-USB FX2LP 芯片的固件程序存放主机上,而不是在芯片内部,因此在该芯片连接到主机上时,首先将固件程序下载到片内RAM,再开始执行。EZ-USB FX2LP
10、芯片结构所示2.2 数据采集系统的硬件设计设计 CY7C68013A 的关键管脚除了电源、地、差分数据线D+和D-外,IFCLK,WAKEUP,RESERVED,EA,SDA,SCL 分别必须要连接上拉或下拉电阻。只有正确的连接,主机才可以正确的找到并识别出USB 设备。当 USB 设备,即CY7C68013A 连接上主机时,如果D和D上存在一个压差值,主机会发现USB 设备,并向CY7C68013A 请求VID(VendorID,厂商ID)和PID(Product ID,产品ID),并根据PID 和VID 加载对应的驱动程序。设备上电后,如CY7C68013A 没有连接EEPROM(电式可擦
11、除只读存储器),固件提交默认VID(04B4)和PID(1004),主机加载默认驱动CyUSB.sys 后,通过设备管理器能看到USB总线上有名为:“Cypress EZ-USBFX2LP - EEPROM missing”的设备。则CY7C68013A 被系统正确识别。用EZ-USB FX2LPDevelopment kits(EZ-USBFX2LP 开发包)提供的CyConsole.exe(Cypress USB Console,Cypress USB 控制台),可以进行对芯片查看配置和固件下载的操作。3 系统软件实现在整个设计开发过程中,Cypress 公司已经为我们提供了很好的硬件基础
12、,所以我们开发的主要内容就是软件设计。从本设计的系统的实现来看,USB 的软件的开发过程主要实现由以下3 个部分组成,整个系统的结构所示:(1) 固件程序;(2) Windows USB 设备驱动程序;(3) 用户 Windows USB 应用程序。主机应用程序控制系统的运行,应用程序通过对固件程序的调度,USB 芯片把应用设备传入的数据打包为具有USB 协议的信息,或是把主机传入的数据进行解包,去掉USB 协议信息后送给应用设备。应用程序通过对驱动程序的调用,完成与USB 设备的数据传输。本章我们就介绍系统的软件设计。3.1 固件程序设计Cypress 公司为了简化固件代码的开发过程,特别设
13、计一个固件程序框架。整个固件架构是按照结构化的程序设计方法,将整个程序分为几个不同的功能模块,这样既易于编写调试,也增强了程序的可读性。其主要工作是完成初始化、USB 标准设备请求的处理和USB挂起电源管理服务。用户只需要提供USB 设备描述符表,添加其他端点接收和发送数据的通信代码,以及外围电路的程序代码。在本系统的USB 固件的开发过程中,就是使用固件架构来进行固件的开发。在本文中,固件开发使用的编译工具为德国Keil 公司的C51 编译器,集成开发环境为Vision3。该环境集成了项目管理器、Cx51 编译器、Ax51 汇编器、BL51/Lx51 连接定位器、RTX51 实时操作系统、源
14、程序调试器,可以用来编译C51 源程序和汇编源程序。在对 EZ-USB FX2LP 的开发中,利用EZ-USB FX2LP 固件框架可以简化和加速开发基于EZ-USB FX2LP 芯片的外围设备。而EZ-USB FX2LP 固件框架库则提供了一系列函数来进一步加速USB 外设固件程序的开发。Cypress 公司的开发包的Target 文件夹下,提供了基本的USB 固件程序开发框架。这些提供了对各种USB 请求、中断处理以及中断寄存器定义等的封装4。Cypress 公司为其EZ-USB 系列芯片提供了良好的固件调试程序,在固件设计完成后,可以首先采用其进行初步的调试,检查系统的固件程序工作是否正
15、常。3.2 USB 驱动程序设计Cypress 为其EZ-USB FX2LP 系列芯片提供了一个完整的开发包,里面包含了通用的USB 驱动程序,用户可以在不加任何修改的基础上进行USB设备的开发和调试。Cypress的通用驱动程序特点如下:1.采用WDM 驱动模型,经由WHQL 鉴定。2.兼容USB2.0 设备。3.支持Windows 即插即用和电源管理。4.支持USB 远程唤醒。5.支持控制传输端点、块传输端点、中断传输端点和同步传输端点。6.支持同时连接的多个USB 设备。7.支持用户自定义GUID,而不用重新编译驱动程序。8.支持高带宽的数据传输。一、 修改 CyLoad.inf 文件本
16、设计共使用两个驱动程序,一个为CyLoad.sys,用于EZ-USB FX2LP 芯片和主机连接后固件程序的自动的下载;另一个为CyUSB.sys,用于重枚举后主机和固件程序的通信。这两个驱动程序用于实现USB2.0 接口芯片的通信。CyLoad.inf 指引CyLoad.sys 的安装,在使用Cypress 公司的时需要做相应的修改,使其能够自动的加载我们所编写的固件程序。二、 修改 CyUSB.inf 文件CyUSB.inf 用于主机和外部EZ-USB FX2LP 芯片之间的通信,主机软件需要使用CYAPI.lib 的库文件进行支持,我们可以在Cypress 公司提供的INF 文件的而基础上修改VID/PID、修改字符串以及驱动程序的名字。本设计中因为没有连接USB 设备,故未对此文件做任何修改,直接引用了该文件。3.3 主机程序设计主机和 USB 设备通信时,需要调用USB 驱动程序,在对EZ-USB FX2LP 的驱动CyUSB.sys 调用中采用了两种新的方法:第一种是使用传统的DeviceIoControl()函数与驱动进行交互,控制硬件设备读写。但