基于单片机和USB接口技术的高速数据采集系统的设计_第1页
基于单片机和USB接口技术的高速数据采集系统的设计_第2页
基于单片机和USB接口技术的高速数据采集系统的设计_第3页
基于单片机和USB接口技术的高速数据采集系统的设计_第4页
基于单片机和USB接口技术的高速数据采集系统的设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

辽宁科技大学毕业设计(论文)第I页I基于单片机和USB接口技术的高速数据采集系统的设计摘要数据采集系统是结合基于计算机的测量软硬件产品实现灵活的、用户自定义的测量系统。数据采集包括从信号源采集信号,将其进行数字化,存储分析并传递到个人PC上。通用串行总线USB作为一种新的微机总线接口规范具有便捷、易扩展、低成本、低干扰等特点,非常适合作为主机和外设之间的通信接口。USB为数据采集设备/仪器与PC机之间的连接提供了一个费用低廉且简单易用的方案。USB通讯技术的出现,使高传输速度、强纠错能力、易扩展性、方便的即插即用,有机的结合在一起。USB技术虽然出现的时间并不长,但是由于它的种种优点,被越来越多的厂商和用户所接受本次毕业设计论文设计了一种基于单片机和USB的高速数据采集系统的硬件及固件PDIUSBD12程序设计方案。关键词数据采集系统;USB接口;单片机4789101114262731辽宁科技大学毕业设计(论文)第II页IIABSTRACTDATAACQUISITIONUSESACOMBINATIONOFPCBASEDMEASUREMENTHARDWAREANDSOFTWARETOPROVIDEAFLEXIBLE,USERDEFINEDMEASUREMENTSYSTEMDATAACQUISITIONINVOLVESGATHERINGSIGNALSFROMMEASUREMENTSOURCESANDDIGITIZINGTHESIGNALFORSTORAGE,ANALYSIS,ANDPRESENTATIONONAPERSONALCOMPUTERPCASANEWINTERFACESPECIFICATIONTHEUNIVERSALSERIALBUSUSBHASTHEADVANTAGESOFCONVENIENT、EXPANSIBILITY、LOWCOSTANDANTIDISTURBANCESOITISFITFORTHECOMMUNICATIONINTERFACEBETWEENTHEHOSTANDAVAILABLEPERIPHERALSUSBDELIVERSANINEXPENSIVE,EASYTOUSECONNECTIONBETWEENDATAACQUISITIONDEVICES/INSTRUMENTSANDPCSUSBCOMMUNICATIONTECHNOLOGYCANENABLEHIGHSPEED,STRONGERRORCORRECTINGCAPABILITIES,EASYEXTENSIBILITY,PLUGANDPLAYCONVENIENCE,COMBINEDWITHORGANICUSBTECHNOLOGYISNOTEVENINTHEFACEOFALONGTIME,BUTBECAUSEOFITSMANYADVANTAGES,MOREANDMOREACCEPTEDBYMANUFACTURERSANDUSERSTHISTHESISINTRODUCETOTHEHARDWAREANDSOFTWAREDESIGNFORTHEHIGHSPEEDDATAACQUISITIONSYSTEMBASEDONSINGLECHIPMICROCOMPUTERANDUSBKEYWORDSDATAACQUISITION;UNIVERSALSERIALBUSINTERFACE;SINGLECHIPMICROCOMPUTER辽宁科技大学毕业设计(论文)第III页III目录摘要IABSTRACTII第1章绪论111研究的背景及目的112国内外研究现状及已有成果113课题的研究方法和内容2第2章总体方案设计321芯片比较3211单片机选型3212USB接口芯片的选择322系统的原理及其组成5第3章系统的程序设计731系统的硬件设计7311PDIUSBD12的性能特点和内部结构7312PDIUSBD12的端点描述9313PDIUSBD12的指令集10314PDIUSBD12的管脚配置11315A/D与单片机接口电路13316PDIUSBD12与单片机接口电路1432系统的软件设计14321PDIUSBD12的固件编程思想14322PDIUSBD12固件编程的结构15323PDIUSBD12固件编程的实现17324端点处理程序18325主循环MAINLOOPC21326驱动程序开发工具的介绍22327USB设备驱动程序设计23328USB设备驱动程序的调用24第4章方案设计的分析及本研究的创新策略2641方案的可行性、实验过程、数据的处理及分析26411系统硬件设计分析26412系统软件设计分析2642本次设计的创新与改进27结论29致谢30参考文献31附录A32附录B43辽宁科技大学毕业设计(论文)第1页1第1章绪论11研究的背景及目的信息技术与电子技术的迅猛发展,使得计算机和外围设备也得到飞速发展和应用。过去人们单纯追求计算机与外设之间的传输速度,现在纠错能力和操作安装的简易性也成为人们关注的目标。USB通讯技术的出现,使高传输速度、强纠错能力、易扩展性、方便的即插即用,有机的结合在一起。USB设备需要依据USB协议进行数据的解包与打包,底层硬件设备与操作系统之间需要以驱动程序为桥梁。驱动程序以WDM为模型,以DDK为开发工具,以IRP为消息传播载体,来实现与WINDOWS系统底层核心机制向交互的功能。随着控制系统的日益复杂,所要采集的量也会越来越多。因此寻求一种高速、安全、方便的通讯形式是十分必要的。USB技术虽然出现的时间并不长,但是由于它的种种优点,被越来越多的厂商和用户所接受,出现了USB打印机、摄像头等产品。随着PC机日益广泛的应用,其外设也逐日增多,但PC机接口的数量是一定的,这就限制了PC机挂接外设的数量。在很多应用场合,如工业数据采集,常使用采集板卡来完成工作,采用板卡不仅安装麻烦、易受机箱内环境的干扰,而且受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备,而通用串行总线可以很容易的实现高可靠性、多点的数据采集。12国内外研究现状及已有成果在国际和国内,现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在研究通用的高速数据采集卡一般多是PCI卡,AD卡及422、485卡或ISA卡,存在以下缺点安装麻烦、价格昂贵、受计算机插槽数量、地址、中断资源限制、可扩展性差,同时在一些电磁干扰性强的测试现场,可能无法专门对其做电磁屏蔽,从而导致采集的数据失真。传统的外设与主机的通讯接口一般是基于总线、ISA总线或者是RS232C串行总线。PCI总线虽然具有较高的传输速度辽宁科技大学毕业设计(论文)第2页2(132MBPS),并支持“即插即用”功能,但其缺点是插拔麻烦,且扩展槽有限(一般为56个),ISA总线显然存在同样的问题。RS232C串行总线虽然连结简单,但其传输速度慢(56KBPS),且主机的串口数目也有限。随着时代的发展,1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准,就是通用串行总线USB。该总线接口具有安装方便、高带宽、易于扩展、使用灵活等优点,已逐渐成为现代数据传输研究的发展趋势。基于单片机和USB的高速数据采集充分利用USB总线的上述优点,有效解决了传统高速数据采集的缺陷。在国内外研究中,高速数据采集领域在很多方面均有应用,例如采用AVR单片机ATMEGAL28作为主控制器,通过基于CH375的USB接口实现数据传输。给出了高速模数转换及USB接口的电路原理,实现USB数据传输的上、下位机的程序设计。经实验测试,该系统采集速度快,死时间小,计数率高。该系统采集速率最高可以达到5MS/S,有软件触发、后触发、前触发三种采集模式,已成功应用到高速数据采集领域,它适用于作用大范围场地的辐射监测系统。13课题的研究方法和内容本次设计主要基于单片机和USB接口的数据采集。控制系统的硬件模块主要是由A/D转换器、D/A转换器、微处理器、USB接口控制芯片、串行口控制芯片、放大器等组成。本数据采集和控制系统是以飞利浦公司的PDIUSBD12作为系统的微控制器,管理和控制整个系统。该芯片集成度高,与51单片机兼容,有效的解决了传统高速数据采集的缺陷。本文内容安排如下第一章对基于单片机和USB的高速数据采集进行了综合,首先介绍了粒子单片机和USB的高速数据采集研究背景及目的,接着对单片机和USB的高速数据采集的国内外研究现状和相关领域中已有的研究成果进行了说明。第二章对本次毕业设计的总体方案与选择的论证进行了说明。首先介绍了单片机芯片和USB接口固件的选择,接着论证了总体设计方案。第三章对系统的硬件与软件部分进行了设计计算。包括对PDIUSBD12的多方面介绍、与单片机的连接,系统程序设计等等。第四章对研究设计进行分析,对内容中的创新,改进及实际意义进行说明。辽宁科技大学毕业设计(论文)第3页3第2章总体方案设计21芯片比较本文应用了单片机芯片和USB接口固件,下面对其进行介绍。211单片机选型当今单片机厂商琳琅满目,产品性能各异。常用的单片机有很多种INTEL8051系列、MOTOROLA和M68HC系列、ATMEL的AT89系列、台湾WINBOND华邦W78系列、荷兰PILIPS的PCF80C51系列、MICROCHIP公司的PIC系列、ZILOG的Z86系列、ATMEL的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM78系列等。我们最终选用了ATMEL公司的AT89C52单片机。AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8KBYTES的可反复擦写的只读程序存储器(PEROM)和256BYTES的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C52单片机适用于许多较为复杂控制应用场合。本次设计选用AT89C52。212USB接口芯片的选择基于USB的外置式硬件电路的设计核心是USB控制器的选择,在进行一个具体的USB设备开发之前,首先要根据具体要求选择合适的USB控制器,整个USB外围设备的设计将围绕该控制器展开。在选定USB控制器以后,如果是带USB接口的单片机,则是一般单片机应用系统的开发若是USB外设接口芯片,就是USB外设接口芯片与单片机应用系统的接口问题。一般USB接口芯片都支持多种并行总线结构复用/非复用,可以方便地与多种单片机连接。目前,市场上可供选择的USB接口芯片很多,按照功能基本上分为两类一类是纯粹的USB接口芯片或通用USB外设接口芯片也称USB设备器件另一类是带辽宁科技大学毕业设计(论文)第4页4有USB接口芯片的单片机也称USB主控制器。1带USB接口的单片机USB主控制器这类芯片主要有CYPRESS公司的CY7C63XXX/CY7C64XXX系列和EZUSB,INTEL公司的8X930/8X931,PHILIPS公司的ISP1161USB11/ISPI561USB20,SCANLOGIC的SL11R以及MOTOROLA的MC68HC908JB8系列等。这种方案的最大好处在于开发难度较小,因为大多数这样的单片机芯片都是基于8051结构或者其它常见的结构,有自己的精简指令集,与单片机类似,熟悉单片机开发的开发者对系统结构和指令集非常熟悉,但其开发一般需要专用的仿真器,对于简单或低成本系统,价格高将会是最大的障碍。2纯粹的USB外设接口芯片USB设备器件这类芯片主要有NS公司的USBN9602/9603/9604,SCANLOGIC的SUIT以及PHILIPS公司的PDIUSBD11/PDIUSBD12USB11/ISP1581USB20等。纯粹的USB外设接口芯片仅处理USB总线相关事务,必须有一个外部微处理器来进行协议处理和数据交换。这种方案的主要特点是价格便宜、接口形式多样、可靠性高、灵活性大,尤其适合于产品的改型设计,缺点是开发者需要非常熟悉USB协议,还必须用微处理器来控制USB外设接口芯片的工作。综合比较,PDIUSBD12是一款性价比很高的USB器件,可使设计者选择最合适的微控制器,减少开发时间、风险及费用,是最实用最快捷的方法实现最经济的USB外设的方案。该芯片支持一个控制端点以及4个额外的端点地址。一个端点的缓冲区可以储存到128个字节,而双缓冲区可以到256个字节。PDIUSBD12通常用作微控制器系统中实现与微控制器进行通信的高速通用并千示接口,并支持本地DMA传输。PDIUSBD12完全符合USB11规范,并符合大多数器件的分类规格成像类、海量存储器件、通信器件、打印设备以及人机接口设备。同样地,PDIUSBD12还适用于打印机、扫描仪、外部存储设备和数码相机等等。另外,该芯片还集成了许多特性,包括SOFTCONNECT,GOODLINK、可编程时钟输出、低频晶振和终止寄存器集合,简化USB功能在外设上的应用。由于51系列的单片机是应用非常广泛的一种微处理器,在其基础上开发了大量的软件包,对其内部结构和工作原理我们都非常了解,故本系统中我们采用8902进行核心程序的设计来实现其所需的功能。A/D选用我们熟悉而且能满足要求的辽宁科技大学毕业设计(论文)第5页5AD0809。而PDIUSBDI2能够完成将数据信号到符合USB规范的信号的转换。为此,我们利用89C52中丰富的软件资源和USB总线技术即插即用、热插拔特性来完成高速数据采集系统。这样可以降低开发成本,缩短开发周期、降低风险。22系统的原理及其组成基于USB的数据采集和控制系统的硬件模块主要是由A/D转换器、D/A转换器、微处理器、USB接口控制芯片、串行口控制芯片、放大器等组成。本数据采集和控制系统是以飞利浦公司的PDIUSBD12作为系统的微控制器,管理和控制整个系统。该芯片集成度高,与51单片机兼容。整个数据采集和控制系统的总体结构框图如图21所示图21设计数据采集和控制系统原理图从结构图中可知,模拟输入信号通过信号处理放大和滤波后,输出到A/D转换器,微控制器把经过A/D转换器转换后的数字信号通过USB控制芯片输出给计算机,同时可以在计算机上实现数据的显示和键盘控制另一方面,经过A/D转换器采集到的数字信号可以通过算法实现控制后,经过D/A转换器输出,进而可以对其它设备进行控制同时,该系统还可以作为一种USB和串行口的转接卡,通过串行口与USB接口实现数据之间的交互,充分利用了USB的快速性和RS232远距离的优势,实现了资源优势互补,可以通过该板卡实现数据的远程控制和数据传输,既提高了传输速率,又增加了传输距离。而USB主机及显示部分则通过输出接口在PC机上显示,采用软件来模拟显示输入信号的波形。同时可以控制A/D转换器的启停、数据存取器的存取、USB外设辽宁科技大学毕业设计(论文)第6页6芯片的工作、显示图形的放大和缩小等。USB数据传输的硬件结构由以下三部分组成通用USB控制芯片,微处理器,USB接口。它们构成了一个USB数据传输的最小系统。其功能为USB收发器负责处理所有与USB总线事务有关的任务,如总线唤醒、数据接受/发送、打包、CRC校验等,但该收发器不负责解释这些数据的意义微处理器负责处理数据、响应主机请求、以及控制USB收发器的工作内存负责存储和提供数据。其中,状态监视器是一个高速的单稳态多频振荡器,用来实现掉电和恢复操作的,当系统连续3MS检测不到主机的请求时,系统就会进入挂起状态当系统从挂起状态退出以后,状态监控器就产生一个正脉冲以复位/唤醒整个系统。辽宁科技大学毕业设计(论文)第7页7第3章系统的程序设计31系统的硬件设计基于USB的数据采集和控制系统主要利用了A/D转换技术、D/A转换技术和USB技术,是伴随着USB技术的迅速发展与新的数据采集技术的发展而发展起来的。采集到的数据通过主机接口USB口发送到上位机并实时显示出来,其波形保真性能与A/D转换器的转换速率、分辨率与精度密切相关。A/D转换速率越高,复现的波形的分辨率也就越高A/D转换器位数越多,精度越高,波形保真性越高。311PDIUSBD12的性能特点和内部结构PDIUSBD12集成了许多新的特性,包括可编程时钟输出、SOFTCONNET,GOODLINK、低频晶振。1可编程时钟输出不必考虑电路设计时使用高频晶振产生的EMI问题D12的CLKOUT引脚输出时钟信号,可用作MCU时钟,最低4MHZ,最高达48MHZD12内部有倍频电路,外部只需6M晶振即可提供D12自身工作时钟48MHZ及输出时钟。2软连接SOFTCONNET技术芯片内集成有15K的USB上拉电阻,连接此电阻将D置为高设置为高速USB设备。连接的建立通过外部MCU发送命令来实现,这就允许设备在决定与USB总线建立连接之前完成初始化时序。USB总线连接的连接可以重新初始化而不需要拔插USB电缆。3GOODLINK技术可提供良好的USB连接指示。在枚举中,LED指示根据通信情况间歇闪烁。当成功枚举和配置后,LED指示将一直点亮。USB支持两种信号速率。USB的最高速率是12MB/S,但它可以工作在15MB/S的较低速率,同一个USB系统可同时支持这两种模式,但115MB/S低速率方式主要为了降低对速度要求不高的设备的成本,只支持少数像鼠标这样的低带宽要求的设备。4可编程的时钟频率输出集成320字节多结构FIFO存储器,具体组成如字辽宁科技大学毕业设计(论文)第8页8节数端点0端点1端点32016IN16OUT16IN16OUT64IN64OUT2双缓冲主端点的双缓冲配置增加了数据吞吐量,并轻松实现实时数据传输5多中断模式实现批量和同步传输。端点可通过SETMODE命令配置为4种不同的模式,分别为模式0NONISO模式非同步传输模式1ISOOUT模式同步输出传输模式2ISOIN模式同步输入传输模式3ISOIO模式同步输入输出传输USB电缆可以允许使用不同长度的电缆,最长可达几米。为了提供可靠的输入电压和适当的终端阻抗,在电缆的每一端带偏压的终端。该终端可以发现任一端口上USB设备的“插入”和“拔除”操作,并能区分全速和低速设备。图2指示了高速USB设备在集线器的终端位置及其所连的功能设备,从中可以看出在电缆的下行端的电阻RPU是接在D线上的,在低速设备中,RPU电阻是接在D线上的。PD工USBD12的软连接SOFTCONNET技术使得在电路设计中可以省去此电阻,并可以通过软件设置。图31PDIUSBD12的原理图1模拟收发器集成的收发器接口可通过终端电阻直接与USB电缆相连。2电压调整器片内集成了一个33V的调整器用于模拟收发器的供电,该电压还作为输出连接到外部上拉电阻。可选择D12提供的带有上拉电阻的软件连接技术。3倍频电路PLL片内集成了6M到48M时钟乘法PLL,就可使用低成本的6M晶振。4位时钟恢复位时钟恢复电路使用4X过采样规则,从进入的USB数据流中恢复时钟。它能跟踪USB规定范围内的抖动和频漂。辽宁科技大学毕业设计(论文)第9页95串行接口引擎SIE串行接口引擎实现了全部的USB协议层,完全由硬件实现而不需要固件的参与。该模块的功能包括同步模式的识别、并行/串行转换、位填充/解除填充、CRC校验/产生、PID校验/产生、地址识别和握手评估等。6存储器管理单元ME和集成RAM在进行数据传输并与微处理器的并口相连时,MMU和集成RAM作为USB间传输的缓冲区,允许MCU以它自己速率对USB信息包读写。PDIUSBD12内部结构框图如图32所示图32PDIUSBD12的内部框图312PDIUSBD12的端点描述端点ENDPOINT是一个USB设备唯一可以确认的部分,它是主机与设备之间的通信流终点。一系列相互独立的端点在一起构成了USB逻辑设备。1端点0要求所有USB设备都需要实现一个缺省的控制方法。这种方法将端点0作为输入端点,同时也将端点0作为输出端点。USB系统用这个缺省方法初始化及一般地使用逻辑设备即设置此设备。缺省控制通道支持了对控制的传送,一旦设备接上,并加电,且又收到一个总线复位命令,端点0就是可访问的了。2非0端点要求设备可以有除0以外的其它端点,这取决于这些设备的实现。低速设备在0号输入及输出端点外,只能有2个额外的可选端点。而高速设备可具有的额外端点数仅受限于协议的定义,协议中规定,最多15个额外的输入端点和最6MHZD33V15K电压调整器ANALOGTX/AXSOFTCONNECTD上行端口PLL位时钟恢复PHILIPSSIE内存管理单元集成RAM并行和DAM接口D辽宁科技大学毕业设计(论文)第10页10多15个额外的输出端点。非0端点在被配置前处于未知状态,在设备配置以后才能使用。D12的端点适用于不同类型的设备,并可通过“SETMODE”命令配置为4种不同的模式模式0非同步模式,模式1同步输出模式,模式2同步输入模式,模式3同步输入输出模式。本设计中只用到了模式0配置,同步模式配置未使用。端点可用来存放从主机接受到或者设备发送来的数据,每个端点都有属于自己的缓冲区。模式0配置下的端点缓冲区如表31所示。端点2主端点是进行吞吐大数据量的主要端点,具有64字节双缓冲区结构,可以减轻传输大量数据的任务1双缓冲。允许USB与本地CPU之间的并行读写操作这样就增加了数据的吞吐量缓冲区切换是自动处理的这导致了透明的缓冲区操作。2支持DMA直接存储器访问操作。可以和对其它端点的正常I/0操作交叉进行。3DMA操作中的自动指针处理。在跨过缓冲区边界时不需要本地CPU的干预。4可配置为同步传输或非同步批量和中断传输。表31端点缓冲区配置模式0端点号端点索引传输类型端点类型方向缓冲区长度(字节)00控制输出默认输出1601控制输出默认输入1612普通输出普通输出1613普通输出普通输入1624普通输出普通输出6425普通输出普通输入64313PDIUSBD12的指令集PDIUSBD12有自己的专用指令集,用于设置USB芯片、读取USB芯片的状态和控制USB总线传输。D12芯片内有一系列的寄存器对应着这些指令,微处理器把要设置的值按字节写入D12的这些寄存器,或者从D12的这些寄存器中读出USB总线的状态。D12有三种基本的类型的命令初始化、数据流和通用命令。辽宁科技大学毕业设计(论文)第11页111初始化命令初始化命令在USB总线进行枚举处理时使用,这些命令用于使能端点的功能,还可用来设置USB分配的地址,包括设置地址/使能、设置端点使能、设置模式设置分频系数、软连接、端点模式以及中断模式等、DMA设置等命令。表32初始化命令指令集命令名接收者编码数据设置地址使能器件D0H写1字节设置端点使能器件D8H写1字节设置模式器件F3H写2字节设置DMA器件FBH写/读1字节2数据流命令数据流命令用于管理USB端点和外部微控制器之间的数据传输,D12通过微控制器中断初始化大量的数据流。微控制器利用这些命令访问和决定端点的FIFO是否含有有效的数据。包括读中断寄存器、选择端点、读最后处理状态寄存器、读缓冲区、写缓冲区、使缓冲区有效、清除缓冲区、设置端点状态、应答建立等命令。如表34。3普通命令包括发送恢复、读当前帧数目两个命令。表33普通命令指令集命令指令集发送恢复F6H无读当前桢数F5H读1或2字节314PDIUSBD12的管脚配置PD12共有28个管脚,具有S028和TSSOP28两种封装形式,管脚图如下图33所示辽宁科技大学毕业设计(论文)第12页12图33PBIUSBBI2的管脚配置表34数据流命令指令集数据流命令读中断寄存器器件F4H读2字节选择端点控制输出00H读1字节(可选)控制输入01H读1字节(可选)端点1输出02H读1字节(可选)端点1输入03H读1字节(可选)端点2输出04H读1字节(可选)端点2输入05H读1字节(可选)读最后处理状态控制输出40H读1字节控制输入41H读1字节端点1输出42H读1字节端点1输入43H读1字节端点2输出44H读1字节端点2输入45H读1字节辽宁科技大学毕业设计(论文)第13页13读缓冲区选择的端点F0H写N字节写缓冲区选择的端点F0H写N字节设置端点状态控制输出40H写1字节控制输入41H写1字节端点1输出42H写1字节端点1输入43H写1字节端点2输出44H写1字节端点2输入45H写1字节应答设置选择的端点F1H无缓冲区清零选择的端点F2H无使缓冲区有效选择的端点FAH无315A/D与单片机接口电路ADC0809允许的最大时钟频率为1280KHZ,主要管脚功能如下INOIN78路模拟量输入端,可从这8个脚输入0V5V待转换的模拟电压ADDA,ADDB,ADDC管道地址输入端。通过编码的方式来实现管道地址的选择。CLOCK时钟输入端。ADC0809只有在时钟脉冲信号的同步下才能进行A/D转换时钟频率越高转换得越快。典型时钟频率是640KHZ。ALE地址锁存允许端。START启动脉冲输入端。在时钟脉冲频率为640KHZ时,START脉宽应大于100NS200NS。EOC转换结束信号端。在A/D转换期间,EOC0表示转换正在进行,输出数据不可信,转换完毕后立即使EOC1表示转换已经完成,输出数据可信。D7DO转换所得八位输出数据,D7是最高位,而DO是最低位。OE允许输出端。OE端控制输出锁存器的三态门。当OE1时,转换所得数据出现在D7D0脚,当OE0时D7DO脚对外是高阻抗。辽宁科技大学毕业设计(论文)第14页1489C52通过P14和读、写控制线来控制转换器的模拟输入通道地址锁存、启动和允许输出。编程时注意启动AD0809后,EOC在一定时间才能变成低电平。图34ADC0809与89C52的接口电路316PDIUSBD12与单片机接口电路图35PDIUSBD12与89C52的连接电路PDIUSBD12与89C52的连接电路如图35所示。89C52的ALE和PD12的ALE相接,表示采用单独地址和数据总线配置。其AO脚接高电平用于控制命令或数据输入到PDIUSBDI2,也就是编程中OUTPORTCMD和OUTPORTDATA函数。此外辽宁科技大学毕业设计(论文)第15页1589C52的多位地址/数据复用总线PO可直接与PDIUSBD12的数据总线相连,CLKOUT时钟输出为89C52提供时钟输入。在该数据采集系统中,用ADC0809采集05V的电压信号,经A/D转换后将数字量存入预先设定的缓冲区里,利用接口芯片D12将数据送至USB总线上。设备应用程序从缓冲区里取数据显示,通过数值来说明USB接口的采集速率比一般的串行总线速度高。当前端的电压信号不断变化的同时,在PC上可以观察到数据的变化,这就表明利用USB接口在数字采集系统中进行数据传输是能够实现的,而且能够很好的实现,硬件电路原理图祥见附图B1。32系统的软件设计321PDIUSBD12的固件编程思想PDIUSBD12的固件设计成完全的中断驱动。当CPU处理前台任务时,USB的传输可在后台进行。这就确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试。后台ISR中断服务程序和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现。其原理图如图36所示图36前后台工作原理由于这种结构,主循环不关心数据是来自USB串口还是并口,它只检查循环缓冲区内需要处理的新数据。这个概念很重要,这样主循环程序专注于数据的处理而ISR能够以最大可能的速度进行数据的传输。相似的,控制端点在数据包处理时采用了同样的概念。ISR接收和保存数据缓辽宁科技大学毕业设计(论文)第16页16冲区中的控制传输并设置相应的标志寄存器。主循环向协议处理程序发出请求。由于所有的标准器件,级别和厂商请求都是在协议处理程序中进行处理,ISR得以保持它的效率,而且一旦增加新的请求只需要在协议层进行修改。322PDIUSBD12固件编程的结构固件的积木式结构如图37所示,图中箭头表示数据传输方向。下面是事件标志“EPPFLAGS”和SETUP包数据缓冲区“CONROL_XFER”的结构体/事件标志TYPEDEFUNION_EPP_FLAGSSTRUCT_FLAGSUNSIGNEDCHARTIMER1UNSIGNEDCHARBUSRESET1UNSIGNEDCHARSUSPEND1UNSIGNEDCHARSETUP_PACKET1UNSIGNEDCHARREMOTE_WAKEUP1UNSIGNEDCHARIN_ISR1UNSIGNEDCHARCONTROL_STATE2UNSIGNEDCHARCONFIGURATION1UNSIGNEDCHARVERBOSE1UNSIGNEDCHAREPL_RXDONE1UNSIGNEDCHARSETUP_DMA1UNSIGNEDCHARDMA_STATE2BITSUNSIGNEDSHORTVALUEEPPFLAGS/USB设备请求寄存器TYPEDEFSTRUCT_DEVICE_REQUEST辽宁科技大学毕业设计(论文)第17页17UNSIGNEDCHARBMREQUESETTYPEUNSIGNEDCHARBREQUESTUNSIGNEDSHORTWVALUEUNSIGNEDSHORTWINDEXUNSIGNEDSHORTWLENGTHDEVICE_REQUEST/SETUP包数据缓冲区TYPEDEFSTRUCT_CONTROL_XFERDEVICE_REQUSETDEVICEREQUESTUNSIGNEDSHORTWLENGTHUNSIGNEDSHORTWCOUNTUNSIGNEDCHARPDATAUNSIGNEDCHARDATABUFFERMAX_CONTROLDATA_SIZECONTROL_XFER辽宁科技大学毕业设计(论文)第18页18图37固件结构和数据流向323PDIUSBD12固件编程的实现中断服务程序ISRC这部分代码处理由PDIUSBD12产生的中断,它将数据从PD工USBD12的内部FIFO取回到CPU存储器并建立正确的事件标志通知主循环进行处理。在ISR的入口固件使用D12_READINTERRUPTREGISTER来决定中断源,然后将进入相应的子程序进行处理。PDIUSBD12的固件完全由中断驱动ISR的流程图8如下所示例如,在OUT数据阶段的建立包时,工SR将建立包和OUT数据都存入“CONTROL_XFER”缓冲区中,然后将“SETUP_PACKER”标志就到主循环这将减少主循环不必要的服务时间,并且简化了主循环的编程。总线复位和挂起并不要求在ISR中进行特殊的处理。ISR只需在EPPFLAGS中设置“BUS_RESET”或“SUSPENDS”标志位,然后退出即可。ISR与前台主循环通过事件标志EPPFLAGS和数据缓冲区CONROL_XFER进行通信。主循环和ISR之间的任务分配是这样的主循环采集数据,发出USB请求,和处理USB总线事件和用户功能等等MAINLOOPC中断服务程序ISRC标准请求处理CHAP9C厂商请求处理PROTODMACPDIUSBD12命令接口D12CIC硬件提取层EPPHALC辽宁科技大学毕业设计(论文)第19页19ISR从D12收集数据而主循环对数据进行处理。当工SR收集了足够的数据时,它只通知主循环己经准备好等待处理。324端点处理程序控制端点控制传输总是在SETUP阶段开始,之后为可选的DATA阶。然后在STATUS阶段结束。如图38所示为控制端点不同状态的转变。固件使用这3种状态来正确地处理控制传输。图38控制端的安处理程序转换从上面的流程图38中可以看出,MCU需要通过选择控制输出端点提取建立包的内容来决定端点是为满还是空。如果控制端点为满,MCU将从缓冲区读出内容并YYYY无数据控制返回状态空闲接收发送输入输出辽宁科技大学毕业设计(论文)第20页20将其存入存储区。之后,它将从存储区使主设备请求生效。如果是一个有效的请求,MCU必须向控制输出端点发送应答建立命令以重新使能下一个建立阶段接下来MCU需要证实控制传输是控制读还是写,这可以通过读建立包中BMREQUESTTYPE的第8位来实现。如果控制传输是一个控制读类型,那就是说器件需要在下一个数据阶段向主机发回数据包。MCU需要设置一个标志以指示USB设备现在正处于传输模式,即准备在主机发送请求时发送数据。如图39所示为控制输出处理程序。为了说明它,举一个主机请求的例子叫做“GETDESCRIPTOR”的标准设备请求。当USB器件D12接收到建立包,将产生一个中断通知MCU,微控制器响应中断,通过读D12中断寄存器决定包是发到控制端点还是普通端点。如果包是送往控制端点,MCU要通过读D12的最后处理状态寄存器进一步确定数据是否是一个建立包,第一个包必须是建立包。图39控制输入处理流程建立阶段结束之后,主机会执行数据阶段。D12等待接收CONTROL_IN包,如下图310。NONONONONONOYESYESYESYESYESYESYES控制输出入口读端点处理状态清中断标志建立包接收数据出错读取断电数据并保对控制输入端点和控制输出断电进行建立数据对应包设置等待状态停止控制端点设置为等待状态数据长度出错子程序结束处于接收状态设置等待状态,设置建立包标志标志设置发送状态,设置建立包标志标志设置等待状态带数据的要求读取要求读取端点数据并保存接收完毕设置为等待状态设置建立包标志NONONONOYESYESYES读端点处理状态清中断标志控制输入入口发送状态剩下数据16字节子程序结束剩下0字节发送16个字节数据设置为发送状态发送剩下数据设置为等待状态发送一个空包设置为等待状态辽宁科技大学毕业设计(论文)第21页21图310控制输出处理流程MCU首先需要通过读D12的最后处理状态寄存器清零CONTROL_IN中断标志位,辽宁科技大学毕业设计(论文)第22页22接着MCU再确认D12处于传输模式后进行数据包的发送。由于D12的控制端点只有16字节FIFO,如果传输的长度大于16字节,MCU在传输阶段就必须控制数据的数量。MCU必须检查要发送到主机的当前和剩余的数据大小。如果剩下的字节数大于16,MCU将先发送16字节并用减去参考长度要求的长度16。当下一个CORNTOL_IN标志来到时,MCU将确定剩余的字节是否为零。如果己经没有数据要发送,MCU需要发送一个空的包以指示主机数据已经发送完毕。如果建立包为SETDESCRIPTOR请求,那么建立包中的控制传输将指示此包为控制写类型。在执行完SET_DESCRIPTOR请求过程后,MCU等待数据阶段。主机发送一个CONTROL_OUT标志,MCU从D12缓冲区中减去数据。流程现在处于CONTROL_OUT处理程序的右端。MCU首先确认D12是否处于USB_RECEIVE模式。然后MCU通过检查选择控制输出端点确认缓冲区是否己满并将数据从缓冲区读出。普通端点端点1和端点2这里定义为普通输入输出。普通输出端点配置为从主机接收数据包。当MCU从主机接收GENERIC_OUT标志通过读中断寄存器识别时,D12中断位必须清零。选择端点将清零GENERIC_OUT缓冲区,接下来MCU需要确认数据的长度并把数据读出,然后设置收到数据标志位BEPPFLAG。对于普通输入端点的中断,只要读取端点号的最后处理状态寄存器来消除中断寄存器的相应位,把状态清零就可以了。GENERIC_IN标志是在发送完数据后才产生的,当还有数据要发送时可以在中断程序里接着继续发。注意这里的数据发送完成标志是指在主机的一个有效的IN事务后才发生的。当主机发出IN事务而设备没有送出数据时,是不会产生中断的325主循环MAINLOOPCMCU一旦上电就需要初始化其所有端口、存储区、定时器和中断服务程序。之后MCU将重新连接USB,包括将SOFT_CONNECT寄存器设置为ON。这些过程是很重要的,因为它确保了在MCU准备好服务D12之前D12不会进行操作。在主循环程序中MCU对键盘进行轮询。如果任何一个特定的按键被按下,键处理命令将执行子程序并返回主循环。增加该子程序的目的仅仅是为了调试。1MS辽宁科技大学毕业设计(论文)第23页23定时器用于激活该子程序以检测在评估板上的任何按键。当轮询到了检测建立包时,它确认建立标志在之前是否被中断服务程序所置位。如果建立标志置位,它将向协议层发送一个器件请求进行处理。326驱动程序开发工具的介绍WINDOWSDDKWINDOWSDDK是MICROSOFT公司提供的一个开发WINDOWS驱动程序的工具,是MICROSOFT出品的设备驱动程序开发工具包DDKDEVICEDEVELOPERKIT,它有WINDOWS98DDK和WINDOWS2000DDK两个版本。前者能够开发WINDOWS95/98/ME/NT下的VXD,KMD和WDM驱动程序,后者可以开发WINDOWS98/ME/NT/2000下的KMD和WDM驱动程序。利用DDK开发WINDOWS驱动程序是一种比较传统的方法。它要求设计者必须对WINDOWS的体系结构、设备驱动程序的结构、虚拟机管理器VMM以及INTELCPU体系结构有深入的了解,而且需要保护模式的汇编语言编程经验。因此,在实际的开发过程中,DDK一般不常被人们所使用,取而代之的是另外两种工具DRIVERSTUDIO和WINDRIVERDRIVERSTUDIO是由COMPUWARE公司提供的驱动程序开发工具,简化了WINDOWS驱动程序的开发、调试和测试,完整的版本是由SOFTICE,DRIVERWORKS,DRIVERNETWORKS、VTOOLSD,BOUNDSCHECKER,TRUETIMEDRIVER,TRUECOVERAGEDRIVER等工具组成。WINDRIVER是美国KRFTECH公司出品的用于编写驱动程序的另一种工具包。它包括代码生成器WINDRIVERWIZARD,WINDRIVERDEBUGGINGMONITOR,WINDRIVER发行包和一些公用程序和实例。WINDRIVER支持ISA,EISA,PCI,PLUGUSBIOCTLHIOCTL的定义,包括各种驱动程序通用的数据结构USBDLIBHURB构造和各种例程,定义了USBD所输出的服务USBDIHUSBDI例程,包括URB结构、各种驱动程序通用的数据结构。在编译驱动程序时,BUILD将会在欲编译的驱动程序所在的目录中寻找一个叫SOURCES的文件,这个文件将告诉编译程序,应该怎么做。在该文件中,以下五个内容是必须包含的1TARGETNAME表示编译出的结果名称2TARGETTYPE表示编译出的结果类型例如驱动程序3TARGETPATH表示在当前目录SOURCES文件所在的目录中建立一个什么名称的子目录来保存中间结果4TARGETLIBS表示编译过程中需要那些库5SOURCE表示需要编译那些文件。在本系统的驱动程序开发中,主要的分发例程有DRIVERENTRY是驱动程序的入口,主要完成各种初始化操作,同时把注册表复制到一个全局变量中,并告诉系统那些IRP由哪个例程处理,这部分被I/O系统直接调用。USB_D12_CREATE主要是用来在USB设备和驱动程序之间建立连接,当以打开文件的名义打开设备准备读写时,调用它。辽宁科技大学毕业设计(论文)第25页25USB_D12_PNP处理即插即用的操作。USB_D12_POWER处理和电源相关的操作。USB_D12_READ/USB_D12_WRITE用来读写数据,把数据读到数据缓存区或把数据从缓存区写到端点专用寄存器,由此发往USB主机。USB_D12_DEVICELOCONTROL设备操作,一般是用来对硬件发出一些控制命令。USB_D12_CLOSEHANDLE当用户关闭文件时,调用它清扫系统,卸载驱动程序。USB_D12_ADDDEVICE第一次安装硬件插上板子时使用USB_D12_DRIVERUNLOAD卸载硬件时使用,当硬件完全卸载后,调用它清理此硬件在系统中留下的痕迹,释放全局变量中注册表路径字符串所占的内存。以上是驱动程序中的几个重要的分发历程,只有上述这些例程正确执行,编译生成的SYS文件才是有效的,驱动程序才可以使用,设备才能和上位机通信。设备插上主机后,主机发现新硬件并提示安装驱动程序。328USB设备驱动程序的调用USB设备通过客户驱动程序与设备打交道并响应内核或用户应用程序请求。在内核级,命令由客户驱动程序使用内部的IOCTL发送给USB系统,而不能用于用户态应用程序。最有用的IOCTL是IOCT_INTERNALUSB_SUBMIT_URB,它发出USB请求块URB给系统USB驱动程序。URB允许发出多个功能调用给USB系统,通过URB进行与USB设备的大多数交互。用户只需在相应的分发例程中构造URB块读取USB的描述表、选择配置和接口,并根据设备所支持的传输类型和设备自有的命令字将其通过USBDI发送下去,由USB类驱动程序处理所有的低层I/O,从而实现对USB设备的控制。USB总线驱动程序由操作系统提供,它位于USB功能驱动程序的下面,负责与实际的硬件打交道,实现烦琐的低层通信。USB功能驱动程序由设备开发者编写,位于USB总线驱动程序的上面,不与实际的硬件打交道,而是通过向USB总线驱动程序发送包含URBREQUESTBLOCK,USB请求块的IRPI/OREQUESTPACKET,IRP请求包,来实现对USB设备信息的发送或接收。采用这种分层驱动程序的方法有两辽宁科技大学毕业设计(论文)第26页26个优点1多个USB设备可以通过USB总线驱动程序来协调它们的工作2编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。整个驱动程序模型如图311所示。图311USB设备驱动程序的调用辽宁科技大学毕业设计(论文)第27页27第4章方案设计的分析及本研究的创新策略41方案的可行性、实验过程、数据的处理及分析411系统硬件设计分析89C52通过P14和读、写控制线来控制转换器的模拟输入通道地址锁存、启动和允许输出。编程时注意启动AD0809后,EOC在一定时间才能变成低电平。89C52的ALE和PD12的ALE相接,表示采用单独地址和数据总线配置。其AO脚接高电平用于控制命令或数据输入到PDIUSBDI2,也就是编程中OUTPORTCMD和OUTPORTDATA函数。此外89C52的多位地址/数据复用总线PO可直接与PDIUSBD12的数据总线相连,CLKOUT时钟输出为89C52提供时钟输入。在该数据采集系统中,用ADC0809采集05V的电压信号,经A/D转换后将数字量存入预先设定的缓冲区里,利用接口芯片D12将数据送至USB总线上。设备应用程序从缓冲区里取数据显示,通过数值说明USB接口的采集速率比一般的串行总线速度高。当前端的电压信号不断变化的同时,在PC上可以观察到数据的变化,这就表明利用USB接口在数字采集系统中进行数据传输是能够实现的,而且能够很好的实现。412系统软件设计分析在编写PDIUSBDI2固件程序时需要注意1单片机的中断应设置为电平触发中断后一定要读上次传输状态寄存器命令4045H,以清除中断寄存器中的中断标志。这样,PDIUSBD12的中断输出才能变回高电平

温馨提示

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

评论

0/150

提交评论