嵌入式USB数据采集系统毕业设计.doc_第1页
嵌入式USB数据采集系统毕业设计.doc_第2页
嵌入式USB数据采集系统毕业设计.doc_第3页
嵌入式USB数据采集系统毕业设计.doc_第4页
嵌入式USB数据采集系统毕业设计.doc_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要本文介绍了一种基于本文介绍了一种基于USB总线的数据采集系统的设计方法,采用PHILIPS公司的USB接口芯片ISP1581与单片机STC89C52进行通信,并和PC机通信而编制出友善的设备应用程序。该系统用传统的USB总线取代了RS232串行总线,通过对USB协议和设备构架的详细理解,对以单片机89C52和USB接口芯片ISP1581为主的数据采集系统进行了硬件设计和软件编程,并在此设计的基础上给出相应的原理图。通过该数据采集系统,我们可以对USB协议有很深刻的理解,对ISP1581接口芯片有很熟练的应用,能更好领悟USB接口的优势。关键词:USB总线;数据采集;固件程序;Windows驱动程序模型;设备驱动程序ABSTRACTThis article presents a particular description of the design and development of a data collection system based on USB .single chip programs the fireware to the USB interface chipISP1581; communication appears between ISP1581 and up-location computer and man-machine mutual interface comes into being; lots of data from the industry spot are printed, analyzed and disposed on time. On the base of wonderful understanding to USB protocol and device truss, I finish the hardware design and software programme of the data collection system. And draw the principle chart.After this data collection systemsystem , ,we can understand the USB protocol profoundly and apply the interface chip- ISP1581 proficiently. In all, the advantages of this interface technique may helps to your design arrangement.Key words:USB bus;data collection; fireware;WDM;device drive program- I -目 录摘 要IABSTRACTII第一章 绪 论- 1 -1.1 本设计的目的和意义- 1 -1.2 数据采集系统的提出- 1 -1.3 USB简介- 1 -1.4 国内外研究现状与应用前景- 3 -第二章 硬件设计- 4 -2.1 USB 2.0标准的提出- 4 -2.2 USB的基本特性- 4 -2.2.1 USB系统的基本架构及总线结构- 4 -2.2.2 USB的电气、机械特性和电源- 5 -2.2.3 USB的编码方式- 6 -2.2.4 USB的容错性- 7 -2.3 USB通信协议- 7 -2.4 USB 2.0对比USB 1.x的改善- 10 -2.4.1微帧和USB 2.0集线器- 11 -2.4.2优化的传输协议- 12 -2.5 数据采集系统的硬件设计- 13 -2.5.1 硬件系统的结构- 13 -2.5.2 主控芯片选择- 14 -2.5.3 接口芯片选择- 15 -2.5.4 稳压电源电路- 16 -2.5.5 A/D与单片机接口电路- 17 -2.5.6 ISP1581与单片机接口电路- 18 -第三章 软件设计- 19 -3.1 固件的开发环境- 19 -3.2 采用ISP1581的固件设计- 19 -3.2.1 固件要完成的主要工作- 19 -3.2.2 ISP1581芯片特点- 20 -3.2.3 ISP1581固件程序的编写- 20 -3.3 固件的文件结构- 21 -3.4 固件的编程实现- 23 -3.4.1 底层函数- 23 -3.4.2 命令接口- 23 -3.4.3 中断服务程序ISR.C- 24 -3.4.4 主循环MAINLOOP.C- 26 -3.5 USB设备驱动程序设计- 28 -3.5.1 Windows2000驱动程序- 29 -3.5.2 WDM驱动程序结构模型- 30 -3.5.3 USB设备驱动程序层次结构- 30 -3.5.4 设备对象- 31 -3.5.5 标准总线驱动程序和类驱动程序- 32 -3.5.6 WDM驱动程序的结构- 33 -3.5.7 驱动程序装入的实现- 34 -3.6 USB驱动的开发环境- 36 -3.6.1 驱动的开发工具- 36 -3.6.2 驱动开发环境的安装与设置- 36 -3.7 驱动程序的实现- 37 -3.7.1 驱动入口- 38 -3.7.2数据传输控制- 39 -3.8 USB设备应用程序设计- 40 -3.8.1 Win32 API简介- 41 -3.8.2动态链接库- 42 -3.8.3 MFC的应用程序开发- 43 -3.8.4设备应用程序与WDM的通信- 43 -3.8.4.1 Win32应用程序对WDM的通信- 43 -3.8.4.2 WDM对Win32应用程序的通信- 44 -第四章 应用程序的实现- 45 -第五章 结束语- 49 -致 谢- 51 -参考文献- 52 -附 录- 53 -第一章 绪 论1.1 本设计的目的和意义随着数字化进程的加快,工业生产和科学研究等各个领域对数据采集提出了更高的要求。数据采集作为信息处理系统的最前端,从广义上讲,主要包括以下几个方面:数据的采集、数据的存储、数据的初步处理等,并且一般需要通过PC接口总线将数据送入计算机,根据不同的需要进行相应的算法处理。简而言之,数据采集系统的主要任务就是把输入的模拟信号转换成数字信号,并送入PC机对其进行处理,为进一步操作做准备。信息技术与电子技术的迅猛发展,使得计算机和外围设备也得到相应飞速发展和应用。过去人们单纯追求计算机与外设之间的传输速度,现在纠错能力和操作安装的简易性也成为人们关注的目标。USB通讯技术的出现,使高传输速度、强纠错能力、易扩展性、方便的即插即用,有机的结合在一起。USB设备需要依据USB协议进行数据的解包与打包,底层硬件设备与操作系统之间需要以驱动程序为桥梁。驱动程序以WDM为模型,以DDK为开发工具,以IRP为消息传播载体,来实现与Windows系统底层核心机制相交互的功能。1.2 数据采集系统的提出尽管RS232是一种十分成熟且应用广泛的通讯方式,但是随着控制系统的日益复杂,所要采集的量也会越来越多。因此寻求一种高速、安全、方便的通讯形式是十分必要的。USB技术虽然出现的时间并不长,但是由于它的种种优点,被越来越多的厂商和用户所接受,出现了USB打印机、摄像头等产品1。尽管目前USB接口的应用主要集中在电脑的周边外设,但是USB产品进入工控领域将是必然的趋势。采用ISP1581芯片和89C52单片机设计的基于USB总线的数据采集系统,具有可靠性高、数据不丢失、抗干扰性强、便于数据传输和处理等优点,可在信号测试、信号采集场合广泛使用。所以本设计是具有一定的实际意义和经济意义的。1.3 USB简介通用串行总线(Universal Serial Bus,简称USB)是康柏、微软、IBM, DEC等公司为了解传统总线的不足推出的一种新型串行总线接口规范, 自1995年在Comdex上亮相以来至今己广泛地为各PC厂家所支持。现在生产的PC机几乎都配备了,USB接口,Microsoft的windows98, NT以及MacOS, Linux, FreeBSD等流行操作系统都增加了对USB的支持。【2】USB的主要特点如下:1. 速度快。 USB 有全速和低速两种方式,主模式为全速模式,速率为12Mbps,从而使一些要求高速数据的外设,如:高速硬盘、摄像头等,都能统一到同一个总线框架下。另外为了适应一些不需要很大吞吐量但是有很高实时性要求的设备,如鼠标、键盘、游戏杆等,USB还提供低速方式,速率为1.5Mbps。如表1-1所示。新推出的USB2.0协议提供最高达480Mbps的数据传输速率可以适应各种不同类型的外设。表1-1 USB使用分类表性能应用特性低速 交互设备10-20kb/s键盘、鼠标、游戏棒低价格、热插拔、易用性中速电话、音频、压缩视频500kb/s-10Mb/sISBN、PBX、POTS低价格、易用性、动态插拔、限定带宽和延迟高速音频、磁盘25-500Mb/s音频、磁盘高带宽、限定延迟、易用性2. 支持热插拔和即插即用。 所有的USB 设备可以随时的插入和拔离系统,USB 主机能够动态的识别设备的状态,并自动给接入的设备分配地址和配置参数,添加、删除设备完全不用关闭计算机,也不必像过去那样需要手动跳线和拨码开关来设置新的外设。3. 易于扩展。USB使用的是一种易于扩展的树状结构,通过使用USB Hub扩展可连接多达127个外设。标准USB电缆长度为3米(低速为5米)。通过Hub或中继器可以使外设距离达到30米。4. 使用灵活。 USB共有4种传输模式:控制传输(control),步传输(synchronization)、中断传输(interrupt)、批量传输(bulk),适应不同设备的需要。5. 能够采用总线供电。 普通使用串口、并口的设备都需要单独的供电系统,而USB设备则不需要,因为USB接口提供了内置电源e USB电源能向低压设备提供最大5V, 500mA 的电源,从而降低了这些设备的成本并提高了性价比。6. 实现成本低。 USB对系统与PC的集成进行了优化,适合于开发低成本的外设。本文设计的基于USB总线的数据采集系统正是充分地利用了USB 总线的上述优点,从而有效地解决了传统数据采集系统的缺陷。很方便地就能够实现低成本、高可靠性、实时的数据采集,适用于对瞬态信号进行采集和处理。1.4 国内外研究现状与应用前景1994年11月,通用串行总线(Universal Serial Bus,简称USB)诞生,以Intel为首的7家公司推出了USB协议规范的第一个草案。自从1996年2月USB版本1.0发布后短短几年内,USB不光成为了PC主板上的标准接口,而且成为了所有PC外部设备(如键盘、鼠标、显示器、打印机、数码相机、扫描仪和游戏手炳等)与PC相连的标准协议之一。在2000年,推出的USB2.0将USB接口的速率从1.5Mb/s的低速和12Mb/s的全速提高到如今的480Mb/s的高速。毫无疑问的是,USB已经占领了PC和外设的市场;而在未来,USB又将以OTG再次引领计算机外设产业的发展方向,同时把计算机和嵌入式领域的学术研究带到更为深入的层次2。随着USB应用领域的扩大,人们希望USB能应用在各种计算机领域中,尤其是在移动数据交换等没有PC的领域中。目前,大量扮演USB主机角色的是个人电脑(PC:Personal Computer)。因此,目前所买到的和使用的USB移动设备,大都是USB设备(USB移动硬盘、USB接口的数码相机等),所有这些设备只能在PC上使用,只能通过PC来进行相互的文件和数据交换。因此“如何将USB应用到嵌入式领域?”开始进入了USB开发者的讨论议程3。嵌入式USB接口作为USB应用的延伸,国外也只是处于起步阶段,仅有不多的半导体公司提供USB主机接口芯片,具有完整嵌入式USB技术的产品在市场上还比较少。国内的研究也刚刚起步。随着USB技术的发展,具有通信功能的智能化、高性能,兼容性好的嵌入式USB技术将是未来USB的发展方向4。第二章 硬件设计2.1 USB 2.0标准的提出当今的计算机外部设备,都在追求高速度和高通用性。为了满足用户的需求,以Intel为主,并由Compaq、Hewlett Packard、Intel、Lucent、Microsoft、NEC和Philip这7家厂商共同制定了串行接口USB总线协议,于1994年11月制定了第一个草案1996年2月公布USB规范版本1.0,2000年4月发布USB2.0标准规范5。USB总线协议支持最多5个Hub级联,可把多达127个外设同时连接到系统上,所有的外设通过协议来共享USB总线的带宽。目前,USB端口己成为了微机主板的标准端口使用中的USB协议有1.0,1.1和2.0三个版本,通信速率分别为1.5Mbps,1Mbps,480Mbps,USB协议向下兼容。此外在USB2.0协议中提出了USB OTG6的概念,为USB的嵌入式控制7提供了广阔的前景。USB OTG技术解决了以往USB设备不能脱离PC机而运行的矛盾,使得嵌入式设备能与USB设备直接进行点对点通讯。USB 2.0将设备之间的数据传输速度增加到了480Mbps,是USB 1.1标准的4倍。USB 2.0可以使用原来USB定义中同样规格的线缆,接头的规格也完全相同。而且新的符合USB 2.0规格的设备不会和USB 1.x设备在共同使用的时候发生任何冲突。新的VIA芯片组和INTEL、AMD、SIS、ALI都已经在新产品中加入了对USB2.0的支持。软件方面,Windows 98全面提供了对USB 1.x的支持,而Windows XP全面提供了对USB 2.0的支持。在LINUX,MACOS,BEOS,WINCE等操作系统中,对USB 2.0都有了相关的软件支持或者系统程序包。随着USB总线技术在计算机外设中的广泛应用,以USB OTG为背景的嵌入式USB应用也被提到议事日程上来了USB OTG技术解决了USB总线技术在嵌入式环境中应用时点对点通讯的问题。现在Cypress、Philips、NEC等公司都推出了很成熟的USB OTG芯片组,USB OTG技术将很快普遍应用起来。2.2 USB的基本特性2.2.1 USB系统的基本架构及总线结构如图2.1所示,一般USB系统的基本架构可以分为三个主要的部分:USB主机控制器/根集线器、USB集线器和USB设备。 图2-1 USB系统的基本架构图1.USB主机控制器/根集线器(host controller/root hub)所有在USB系统上的沟通都是在软件控制下由PC主机激活。主机硬件包括USB主机控制器(USB host controller)和USB根集线器(USB root hub)两种。USB主机控制器负责激活USB系统上的处理动作,简而言之,就是整个USB系统的大脑。USB根集线器提供USB连接端口给USB设备或USB集线器使用。一台PC可同时连接至多127个USB设备就是通过它来串接的。一般是由主机控制器命令根集线器,然后由根集线器传到正确的设备地址。2.USB集线器(USB hubs)这些集线器主要是提供另外的USB连接端口供用户串接设备。在高速系统中,Hub起着很重要的作用,它将全速或低速信号环境与高速信号环境隔离开。高速Hub也容许USB1.1 Hub以全速或低速连接和操作。3.USB设备(USB devices)指各种类型的USB外围设备。依照目前USB产品的规范,可将USB设备分为三类:低速设备(传输速率最高为1.5Mbps,如键盘、鼠标等)、全速设备传输速率最高为12Mbps,如早期的移动硬盘等)、高速设备传输速率最高为480Mbps,如现在的CCD、移动硬盘等)。USB系统的基本架构决定USB总线结构是采用阶梯式星型的拓扑结构8。2.2.2 USB的电气、机械特性和电源1.电气特性、机械特性USB总线中的物理介质是一根4线的电缆。其中两根线是用于提供USB设备工作所需的电源和地,称为VBUS和GND。VBUS的标称值为+5V;另外两根线用于传输数据,称为差动数据信号线的D和D。数据信号是通过D和D进行双向传送。在USB协议中规定,要根据不同的USB设备的传输速度(低速、全速、高速),改变在设备端的提升电阻1.5 (1 5% )K的位置,其中对于2.0的高速传输,这个提升电阻被省略,改以自动切换的方式。另外,D和D两条信号线在PC主机的根集线器或集线器端同时接上15K的下拉电阻并连接至接地端。整个PC主机与USB设备之间的电气特性是这样操作的:在设备未连接至主机的根集线器或集线器的连接端口时,D和D两条信号线因为下拉电阻的关系,几乎都视为接地,但若有一个设备刚连接上时,由于提升电阻与下拉电阻形成了一个分压器,因此其中有一条数据信号线的电位将被提升,当集线器检测到其中的一条数据信号线趋3V,而另外一条仍维持接地状态时就可确定有一个USB设备已连接上。PC主机会不断的每隔一段时间来查询根集线器,检查D和D的电位变化,以了解设备的连接状态。USB设备的上行连接器和下行连接器是不可机械的互换,这样就消除了集线器间非法的循环往复的连接,电缆中有四根导线:一对互相缠绕的标准规格线,一对符合标准的电源线,连接器有四个方向,具有屏蔽层,以避免外界干扰,并具有易拆装的特性8。2.USB的电源USB的电源包括:电源分配和电源管理。电源分配即USB设备如何通过USB分配得到由主机提供的电源。无论是集线器还是设备都分为自我供电(可以选择电源来源)或总线供电(完全依靠电缆提供能源)两种类型。电源管理就是通过电源管理系统,使USB系统软件、设备与主机协调工作。USB主机有独立于USB系统的电源管理系统。USB系统软件可以与主机的电源管理系统结合,共同处理各种电源事件(如挂起、唤醒)。并且有特色的是,USB设备应用特有的电源管理特性,可以让系统软件控制其电源管理。2.2.3 USB的编码方式对于一个设备而言,不仅要无误的接收主机端送来的数据,更要正确的发出响应信号,因此,在D与D差动数据线上就必须采用一种特别的编码方式再加以传送出去,以解决在USB线缆所产生信号延迟及误差等问题。USB采用NRZI(Nonreturn to zero invert,不归零就反向)的编码方式,无需同步的时钟信号也能产生同步的数据存取。NRZI的编码规则是:当数据位为“1”时不转换,为“0”时再作转换。但是NRZI容易出现“塞车”现象。所以需要执行“位填塞”工作。即连续6个“1”后填一个“0。因此在发送端作数据传输之前,需要先执行位填塞和NRZI编码,而在接收数据之前,需要先执行NRZI译码再作位反填塞。这一部分的电路会通过USB接口控制芯片中的SIE(串行接口引擎)来实现9。2.2.4 USB的容错性为了有效地保证数据传输的正确性,USB协议规定了对USB传输过程的一系列的错误检测与处理方式,通常USB的容错性体现在如下几个方面:(1)使用差分的驱动接收和防护,以保证信号完整性;(2)在数据和控制信息上加了循环冗余码(CRC);(3)对装卸的检测和系统资源的配置;(4)对丢失或损坏的数据包暂停传输、利用协议自我恢复;(5)对流数据进行控制,以保证同步信号和硬件缓冲管理的安全;(6)数据和控制通道的建立,使功能部件的相互不利的影响独立开。2.3 USB通信协议USB系统提出了一些重要的概念和特征来支持现代计算机所提出的可靠性要求,USB的分层结构能使不同层次的实现者只关心相关层次的特性功能细节,而不必掌握从硬件结构到软件系统的所有细节。USB的这种层次结构如图2.2所示功能件客户软件USB系统软件USB逻辑设备USB主机控制器USB总线接口。 主机 物理设备 图2-2 USB主机端和设备端通信图解如上图所示,一台主机与一个USB设备间的连接是山许多层上的连接组成。 图2-3 主机端和设备端通信详解USB总线接口层提供了在主机和设备之间的物理连接、信令信号和数据包连接。USB设备层对USB系统软件是可见的,系统软件基于它所见的设备层来完成一般的对设备的USB操作。功能件(应用层)可以通过与之相配合的客户软件向主机提供一些额外的功能。USB设备层和应用层的通信是逻辑上的,对应于这些逻辑通信的实际物理通信由USB总线接口层来完成10。更为深入的通信流程如图2.3所示,对客户与应用间不同的交互,USB设备对数据流有不同的要求。USB为此提供了更好的总线利用率,它允许各种不同的数据流相互独立地进入一个USB设备。每种通信流都采取了某种总线访问方法来完成主机上的软件与设备之间的通信。每个通信都在设备上的某个端点结束。不同设备的不同端点用于区分不同的通信流。一个同步传送是一个或多个IN/OUT方向的数据事务。IRP数据流类型IRP事务事务事务所有的传送都是由一个或多个事务组成。一个IRP又可由一个或多个传送组成。控制传送IRPSetup事务数据事务Status事务额外的控制传送控制传送首先是一个OUT方向的Setup事务,然后是多个IN方向或OUT方向的数据事务,最后是一个与数据反向的Status事务。中断传送IRP事务事务一个中断传送是一个或多个IN/OUT方向的数据事务。同步传送IRP事务事务事务批传送事务事务事务一个批传送是一个或多个IN/OUT方向的数据事务。图2-4 USB 数据传输一个USB逻辑设备对USB系统来说就是一个端点集合,端点可以根据它们实现的接口来分类。USB系统软件通过一个缺省的控制通道来管理设备,而客户软件用管道束管理接口。管道束的一端为端点,一端为缓冲区。客户软件要求通信数据在主机上的一个缓冲和USB设备上的一个端点之间进行,主机控制器或USB设备(取决于数据传输方向)将数据打包后在USB上传。由主机控制器协调何时用总线访问在USB上传递数据。USB体系结构支持4种最基本类型的数据传输11(一个管道仅支持一种类型):1.控制传输主要用于在连接时刻配置一个端口。控制传输的特点:保证准确性,用于配置和控制,所有设备都有控制端点0。控制传输的实现方式如图2-4所示。2.批量数据传输用于相对大量的数据传输,批量数据传输是有序的、可靠的(通过错误检测和少量的重发)、占用的带宽可变,应用于打印机和扫描仪等。批量传输的特点:保证准确性,不保证传输时延,利用USB的重发机制,高速模式下最多可在一个数据包传输512字节,多用于需要防错的设备。3.中断数据传输用于实时可靠的数据传输,例如回显或反馈响应。中断传输的特点:和批量传输类似,传输发生在固定的周期间隔(以帧为单位),用于周期性查询设备状态。4.同步数据传输占用大量的USB带宽(也称为流实时传输),同步数据的实时传输通过牺牲数据流上的潜在短暂丢失来确保,同步传输是持续的、实时的、速率稳定的,同步数据的典型是视频、音频信号。同步传输的特点:保证传输时间,不保证准确性,没有重发,高速模式端点允许最大每包1024字节,用于实时信息传输。2.4 USB 2.0对比USB 1.x的改善2000年4月USB 2.0版本被推出,它的最高速率可达480Mbps,是USB1.1协议的40倍。新版本中的最大变化是传输速率的大幅提高。USB 1.x支持两种总线速率:全速(12Mbps)和低速(1.5Mbps)。低速速率主要针对那些低消耗的设备,例如鼠标、键盘等,它们需要使用柔软的电缆(没有良好屏蔽)。USB 2.0增加了一种更高速的总线速率:高速(480Mbps),这个飞跃使该接口可以面向更多的应用。当然,总线的速率并不等于设备真正传输数据的速率。数据传输速率要根据总线的繁忙程度、以及它所使用的数据传输类型(四种类型:控制传输,批量传输,中断传输,同步传输)来定。在最好的情况下,高速的批量传输的传输速率可以达到53MBps,这时它占用将近90%的带宽。下面对USB 2.0协议改善部分作详细阐述,用以阐明USB 2.0协议是如何提高数据传输速率的,以及为提高传输速率在描述符、集线器上所作的改进,并讲解新的USB设备开发需要注意的问题。2.4.1微帧和USB 2.0集线器尽管USB 2.0总线可以提供高速的数据传输,但它仍允许用户在高速传输时使用低速和全速两种传输的设备。在一个全速的总线上,总控制器将总线上的时间分为长度为l ms的帧,每帧使用作为时间参考的SOF(start-of-frame)包开始,在每一帧内,主机安排传向多个目的的多个传输。每个传输包括将使用的缓存的端点地址,在多数传输类型中,信息在两个方向上传输,主机开始事务,从主机或到主机的数据传输,并且接收返回的状态信息。对于高速传输,主机将每个1 ms的帧分为8个微帧(每个帧从SOF包开始)。每个微帧能够携带到达多个地址的多个传输。同全速相比较,单个事务能够携带更多的数据,协议的加强使总线在各种速率时的适应都更加有效。集线器能够增加外设的端口数。一个典型的集线器可以有一个根集线器相连的上游端口以及最多7个连接外设或其它集线器的下游端口。一个支持USB 1.x协议的集线器支持全速和低速的数据速率,但是不能实现速率转换;它通过传输,仅仅改变边沿速率来匹配目的速率。如图2-5所示:一个USB 2.0集线器则相当于一个远程处理器,可以根据需要实现从高速到低速或全速的转换。集线器的智能使得高速总线继续同USB 1.X的设备兼容。同时它也意味着USB 2.0比USB 1.x的集线器要复杂。当把一个设备连接到USB 1.x的集线器上时,集线器通过测量D和D信号之间的电压来判断设备的速率。因为高速总线比低速和全速总线要快得多,高速总线在实现速度的转换时使用了一些其它的技巧来避免总线的堵塞。当把一个USB 2.0集线器连接到USB 2.0根集线器时,在这些集线器之间使用高速传输数掘。为了减少信号的抖动,集线器反复同步接收高速数据,另一方面它不变地连接到任何高速设备。高速低速低速低速全速全速全速低速/高速高速高速2.0集线器全速设备高速设备高速2.0主机和集线器低速设备L集线器高速设备全速设备低速设备高速设备全速设备低速设备图2-5 USB2.0集线器拓扑图当把一个设备连接到USB 1.x的集线器上时,集线器通过测量D和D信号之间的电压来判断设备的速率。因为高速总线比低速和全速总线要快得多,高速总线在实现速度的转换时使用了一些其它的技巧来避免总线的堵塞。当把一个USB 2.0集线器连接到USB 2.0根集线器时,在这些集线器之间使用高速传输数掘。为了减少信号的抖动,集线器反复同步接收高速数据,另一方面它不变地连接到任何高速设备。2.4.2优化的传输协议USB 2.0同USB 1.x一样也支持四种传输类型。控制传输应用于在主机列举设备时或主机想要发送定义请求或接收相应的信息时。中断传输用于指示设备或在空隙时需要传输数据的情况,这种情况需要有一个传输的最大时延作保证。批量传输应用那种想要尽可能快地传输数据但在总线忙时又可以等待的设备,例如打印机、扫描仪等。同步传输用于那些需要实时传输的设备例如实时的音频、视频等,这种传输需要保证传输的实时性。除了具有高速传输速率以外,USB 2.0在协议上也有改善适应高速传输的方法,提出用于在高速总线上全速和低速传输的分裂传输。表2-1比较了计算机在低速、高速和全速时的4种传输类型。速率提高有两个理由:每个事务的包的最大数目增加了,一个事务中每帧拥有更多的数据包。因为每帧能传输更多的数据,所以高速控制传输也比以前更快了。表2-1进出高速端点最大数据传输速率(单位:kbps)传输类型低速全速高速控制2483215782中断0.86424576批量不允许121653248同步不允许102324576高速的批量和控制传输有一个更好的握手方法。在接收数据之后,一个设备端点将通过握手返回一个NYET(Not Yet),表示端点已经接收过数据了,但它没准备好接收更多的数据。当主机认为设备可能已经准备好了之后,它将发送一个PING标志包,端点返回ACK(响应)或NAK来通知高速主机是否可以进行下次数据传输。为了更有效地利用总线,高速传输的主机和集线器在和低速、全速设备间使用了新的分裂传输。在低速和全速时,所有事务的包是依次进行的,在它们之间没有其它的传输。例如,在接收过标志和数据包后,设备必须没有延时返回一个预期的握手包。但是一个高速的集线器,为了等待设备接收到标志和数据包,接着作出反应,而浪费了大量的时间。解决的办法是将一个事务分成两部分:在高速传输时,主机发送给集线器一个开始分裂标志包(start-split),并随之发送主机在事务中所要发送的数据。然后主机就被释放去处理其它的事务而无须等待这个事务被完成。高速集线器通过翻译完成同低速、高速设备间的这个事务。然而,响应并不是立刻通过集线器发送到主机,而是将响应存储在缓存中。最后,主机发送一个完成分裂标志包(end-split)从集线器取走设备的响应。这样就完成了一次主和同外设之间的一个事务。2.5 数据采集系统的硬件设计2.5.1 硬件系统的结构基于USB总线的实时数据采集系统硬件组成包括模拟开关、A/D转换器、单片机、USB接口芯片,该系统能够实现8路数据自动采集,系统的组成框图如图2-6所示。主要包括5个组成部分:中央处理器选用STC89C52芯片,完成各部分控制功能和USB传输协议;A/D转换器和接口电路主要完成数据采集,并读入MCU处理;复位电路完成对MCU的上电复位和电源电压监视;电源电路主要为各部分提供要求的电源;外设与主机间的通信电路采用USB接口。单片机通过位并行接口传送经过A/D转换的采集数据,存储在FIFO存储器中。一旦存满,串行接口引擎SIE立刻对数据进行处理,包括同步模式识别、并串转换、位填充/不填充、CRC校验、PID确认、地址识别以及握手鉴定,处理完毕后数据由模拟收/发器通过D+、D-发送至PC。上述过程遵循USB2.0协议。多路模拟开关A / D转换器MCUUSB接口芯片PC机控制器图2-6 数据采集系统硬件组成框图2.5.2 主控芯片选择图2-7 STC89c52引脚图STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。 STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 STC89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。主要功能特性n 兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM n 32个双向I/O口 256x8bit内部RAM n 3个16位可编程定时/计数器中断 时钟频率0-24MHz n 2个串行中断 可编程UART串行通道 n 2个外部中断源 共8个中断源 n 2个读写中断口线 3级加密位 n 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能2.5.3 接口芯片选择LaISP1581是一款性价比很高的USB器件,它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。它还支持本地的DMA传输。这种实现USB接口的标准组件使得设计者可以在各种不同类型微控制器中选择出最合适的微控制器。这种灵活性减小了开发的时间风险以及费用(通过使用已有的结构和减少固件上的投资),从而用最快捷的方法实现最经济的USB外设的解决方案。ISP1581完全符合USB2.0版的规范,它还符合大多数器件的分类规格:成像类、海量存储器件、通信器件、打印设备以及人机接口设备。同样地,ISP1581理想地适用于许多外设,例如:打印机、扫描仪、外部的存储设备、Zip驱动器和数码相机等等,它使得当前使用SCSI的系统可以立即降低成本。ISP1581 所具有的低挂起功耗连同zyClock输出可以满足使用ACPI、OnNOW和USB电源管理的要求。低的操作功耗可以应用于使用总线供电的外设。此外它还集成了许多特性包括SoftConnetTM、GoodLinkTM、可编程时钟输出、低频晶振和终止寄存器。集合所有这些特性都为系统显著节约了成本,同时使USB功能在外设上的应用变得容易。ISP1815ISP1581芯片的主要特点包括:n直接与ATA/ATAPI外设相连n完全符合通用串行总线(USB)Rev 2.0规范n符合大多数器件的分类规格n高性能的USB接口器件,集成了串行接口引擎(SIE)、PIE、FIFO存储器、数据收发器和3.3v的电压调整器n支持USB 2.0的自检工作模式和USB 1.1的返回工作模式n高速的DMA接口n完全自治的多结构DMA操作n7个IN端点,7个OUT端点和1个固定的控制IN/OUT端点n集成8K字节的多结构FIFO存储器n端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输n同大部分的微控制器/微处理器有单独的总线接口(15 M字节/秒或15 M字/秒)n集成了PLL的12MHZ的晶体振荡器,有着良好的EMI特性n集成了5v到3v的内置电压调整器n可通过软件控制与USB总线的连接(Soft Connect)n符合ACPI, On NOW和USB电源管理的要求n可通过内部上电复位和低电压复位电路复位,也可通过软件复位n工作在扩展USB总线电压范围(4.05.5),I/O端口最大可承受5V的电压n操作温度:4085nLQFP64的封装形式ISP1581内部结构如图2-7所示。图2-87 ISP1581内部结构2.5.3 4 稳压电源电路图2-98 稳压电源电路2.5.4 5 A/D与单片机接口电路ADC0809允许的最大时钟频率为1280kHz,主要管脚功能如下:INO-IN7: 8路模拟量输入端,可从这8个脚输入OV-5V待转换的模拟电压。ADDA,ADDB,ADDC: 管道地址输入端。通过编码的方式来实现管道地址的选择。CLOCK: 时钟输入端。ADC0809只有在时钟脉冲信号的同步下才能进行A/D转换时钟频率越高转换得越快。典型时钟频率是640kHz.ALE: 地址锁存允许端。START: 启动脉冲输入端。在时钟脉冲频率为640kHz时,START脉宽应大于100ns-200ns 。EOC: 转换结束信号端。在A/D转换期间,EOC=O表示转换正在进行,输出数据不可信,转换完毕后立即使EOC=1表示转换己经完成,输出数据可信。D7-DO: 转换所得八位输出数据,D7是最高位,而DO是最低位。OE: 允许输出端。OE端控制输出锁存器的三态门。当OE=1时,转换所得数据出现在D7-DO脚,当OE=0时D7-DO脚对外是高阻抗。图2-109 ADC0809与89C052的接口电路ADC0809允许的最大时钟频率为1280kHz,主要管脚功能如下:INO-IN7: 8路模拟量输入端,可从这8个脚输入OV-5V待转换的模拟电压。ADDA,ADDB,ADDC: 管道地址输入端。通过编码的方式来实现管道地址的选择。CLOCK: 时钟输入端。ADC0809只有在时钟脉冲信号的同步下才能进行A/D转换时钟频率越高转换得越快。典型时钟频率是640kHz.ALE: 地址锁存允许端。START: 启动脉冲输入端。在时钟脉冲频率为640kHz时,START脉宽应大于100ns-200ns 。EOC: 转换结束信号端。在A/D转换期间,EOC=O表示转换正在进行,输出数据不可信,转换完毕后立即使EOC=1表示转换己经完成,输出数据可信。D7-DO: 转换所得八位输出数据,D7是最高位,而DO是最低位。OE: 允许输出端。OE端控制输出锁存器的三态门。当OE=1时,转换所得数据出现在D7-DO脚,当OE=0时D7-DO脚对外是高阻抗。89C52通过P1.4和读、写控制线来控制转换器的模拟输入通道地址锁存、启动和允许输出。编程时注意启动AD0809后,EOC在一定时间才能变成低电平。2.5.56 ISP1815ISP1581与单片机接口电路ISP1815ISP1581与89C52的连接电路如图2-10所示。89C52的ALE和PD 12的ALE相接,表示采用单独地址和数据总线配置。其AO脚接高电平用于控制命令或数据输入到ISP1815ISP1581,也就是编程中outportcmd()和outportdata()函数。此外89052的多位地址/数据复用总线PO可直接与ISP1581的数据总线相连,CLKOUT时钟输出为89C52提供时钟输入。图2-110 ISP1581与89C52的连接电路在该数据采集系统中,用ADC0809采集0-5V的电压信号,经A/D转换后将数字量存入预先设定的缓冲区里,利用接口芯片ISP1815ISP1581将数据送至USB总线上。设备应用程序从缓冲区里取数据显示,通过数值来说明USB接口的采集速率比一般的串行总线速度高。当前端的电压信号不断变化的同时,在PC上可以观察到数据的变化,这就表明利用USB接口在数字采集系统中进行数据传输是能够实现的,而且能够很好的实现。第三章 软件设计3.1 固件的开发环境Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil C51的工具包中,uVision是C51 for Windows的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。3.2 采用ISP1581的固件设计3.2.1 固件要完成的主要工作固件是FIREWARE的对应中文词,它实际上是单片机的程序文件,其编写语言可以采用C语言或是汇编语言.它的操作方式与硬件联系紧密,包括USB设备的连接USB协议、中断处理等,它不是单纯的软件,而是软件和硬件的结合,开发者需要对端口、中断和硬件结构非常熟悉。固件程序一般放入MCU中,当把设备连接到主机上时,上位机可以发现新设备,然后建立连接。因此,编写固件程序的一个最主要的目的就时让Windows可以检测和识别设备。USB固件程序程序由三部分组成:初始化单片机和所有的外围电路(包括ISP1581);主循环部分,其任务是可以中断的;中断服务程序,其任务是对时间敏感的,必须马上执行。根据USB协议,任何传输都是由主机开始的。单片机作它的前台工作,等待中断。主机首先要发令牌包给USB设备(这里是ISP1581),ISP1581接收到令牌包后就给单片机发中断。单片机进入中断服务程序,首先读ISP1581的中断寄存器,判断USB令牌包的类型,然后执行相应的操作。在USB单片机程序中,要完成对各种令牌包的响应,其中比较难处理的是SETUP包,主要是端口0的编程。单片机与ISP1581的通信主要是靠单片机给ISP1581发命令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论