《基于单片机和USB接口技术的高速数据采集系统的设计说明.doc》由会员分享,可在线阅读,更多相关《基于单片机和USB接口技术的高速数据采集系统的设计说明.doc(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于单片机和USB接口技术的高速数据采集系统的设计摘要数据采集系统是结合基于计算机的测量软硬件产品实现灵活的、用户自定义的测量系统。数据采集包括从信号源采集信号,将其进行数字化,存储分析并传递到个人PC上。通用串行总线(USB)作为一种新的微机总线接口规具有便捷、易扩展、低成本、低干扰等特点,非常适合作为主机和外设之间的通信接口。USB为数据采集设备/仪器与PC机之间的连接提供了一个费用低廉且简单易用的方案。USB通讯技术的出现,使高传输速度、强纠错能力、易扩展性、方便的即插即用,有机的结合在一起。USB技术虽然出现的时间并不长,但是由于它的种种优点,被越来越多的厂商和用户所接受.本次毕业设计
2、(论文)设计了一种基于单片机和USB的高速数据采集系统的硬件与固件PDIUSBD12程序设计方案。关键词 数据采集系统;usb接口;单片机4.7.8.9.10.11.14.26.27.31AbstractData acquisition uses a combination of PC-based measurement hardware and software to provide a flexible, user-defined measurement system. Data acquisition involves gathering signals from measurement
3、 sources and digitizing the signal for storage, analysis, and presentation on a personal computer (PC).As a new interface Specificationthe Universal Serial Bus (USB) has the advantages of convenient、expansibility、low cost and antidisturbance So it is fit for the communication interface between the h
4、ost and available peripherals USB delivers an inexpensive, easy-to-use connection between data acquisition devices/instruments and PCs. USB communication technology can enable high-speed, strong error-correcting capabilities, easy extensibility, plug-and-play convenience, combined with organic. USB
5、technology is not even in the face of a long time, but because of its many advantages, more and more accepted by manufacturers and users. This thesisintroduce to the hardware and software design for the high speed data acquisition system based on Single chip micro computer andUSB.Key wordsdata acqui
6、sition;universal serial businterface;Single chip micro computer目录摘要IABSTRACTII第1章 绪论11.1 研究的背景与目的11.2国外研究现状与已有成果11.3课题的研究方法和容2第2章 总体方案设计32.1 芯片比较32.1.1 单片机选型32.1.2USB接口芯片的选择32.2 系统的原理与其组成5第3章 系统的程序设计73.1 系统的硬件设计73.1.1 PDIUSBD12的性能特点和部结构73.1.2 PDIUSBD12的端点描述93.1.3 PDIUSBD12的指令集103.1.4 PDIUSBD12的管脚配置1
7、13.1.5 A/D与单片机接口电路133.1.6 PDIUSBD12与单片机接口电路143.2系统的软件设计143.2.1 PDIUSBD12的固件编程思想143.2.2PDIUSBD12固件编程的结构153.2.3PDIUSBD12固件编程的实现173.2.4 端点处理程序183.2.5 主循环MAINLOOP.C213.2.6 驱动程序开发工具的介绍223.2.7USB设备驱动程序设计233.2.8 USB设备驱动程序的调用24第4章 方案设计的分析与本研究的创新策略264.1 方案的可行性、实验过程、数据的处理与分析264.1.1 系统硬件设计分析264.1.2 系统软件设计分析264
8、.2 本次设计的创新与改进27结论29致30参考文献31附录A32附录B4344 / 47第1章 绪论1. 1研究的背景与目的信息技术与电子技术的迅猛发展,使得计算机和外围设备也得到飞速发展和应用。过去人们单纯追求计算机与外设之间的传输速度,现在纠错能力和操作安装的简易性也成为人们关注的目标。USB通讯技术的出现,使高传输速度、强纠错能力、易扩展性、方便的即插即用,有机的结合在一起。USB设备需要依据USB协议进行数据的解包与打包,底层硬件设备与操作系统之间需要以驱动程序为桥梁。驱动程序以WDM为模型,以DDK为开发工具,以IRP为消息传播载体,来实现与Windows系统底层核心机制向交互的功
9、能。随着控制系统的日益复杂,所要采集的量也会越来越多。因此寻求一种高速、安全、方便的通讯形式是十分必要的。USB技术虽然出现的时间并不长,但是由于它的种种优点,被越来越多的厂商和用户所接受,出现了USB打印机、摄像头等产品。随着pc机日益广泛的应用,其外设也逐日增多,但pc机接口的数量是一定的,这就限制了pc机挂接外设的数量。在很多应用场合,如工业数据采集,常使用采集板卡来完成工作,采用板卡不仅安装麻烦、易受机箱环境的干扰,而且受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备,而通用串行总线可以很容易的实现高可靠性、多点的数据采集。1. 2 国外研究现状与已有成果在国际和国,现代工业
10、生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在研究通用的高速数据采集卡一般多是PCI卡, AD卡与422、485卡或ISA卡,存在以下缺点:安装麻烦、价格昂贵、受计算机插槽数量、地址、中断资源限制、可扩展性差,同时在一些电磁干扰性强的测试现场,可能无法专门对其做电磁屏蔽,从而导致采集的数据失真。传统的外设与主机的通讯接口一般是基于总线、ISA总线或者是RS232C串行总线。PCI总线虽然具有较高的传输速度(132Mbps),并支持“即插即用”功能,但其缺点是插拔麻烦,且扩展槽有限(一般为56个),ISA总线显然存在同样的问
11、题。RS232C串行总线虽然连结简单,但其传输速度慢(56kbps),且主机的串口数目也有限。随着时代的发展,1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准,就是通用串行总线USB。该总线接口具有安装方便、高带宽、易于扩展、使用灵活等优点,已逐渐成为现代数据传输研究的发展趋势。基于单片机和USB的高速数据采集充分利用USB总线的上述优点,有效解决了传统高速数据采集的缺陷。在国外研究中,高速数据采集领域在很多方面均有应用,例如采用AVR单片机ATmegal28作为主控制器,通过基于CH375的USB接口实现数据传输。给出了高速模数转换与USB接口的电路原理
12、,实现USB数据传输的上、下位机的程序设计。经实验测试,该系统采集速度快,死时间小,计数率高。该系统采集速率最高可以达到5 MS/s,有软件触发、后触发、前触发三种采集模式,已成功应用到高速数据采集领域,它适用于作用大围场地的辐射监测系统。1.3 课题的研究方法和容本次设计主要基于单片机和USB接口的数据采集。控制系统的硬件模块主要是由A/D转换器、D/A转换器、微处理器、USB接口控制芯片、串行口控制芯片、放大器等组成。本数据采集和控制系统是以飞利浦 公司的 PDIUSBD12 作为系统的微控制器,管理和控制整个系统。该芯片集成度高,与51单片机兼容,有效的解决了传统高速数据采集的缺陷。本文
13、容安排如下:第一章对基于单片机和USB的高速数据采集进行了综合,首先介绍了粒子单片机和USB的高速数据采集研究背景与目的,接着对单片机和USB的高速数据采集的国外研究现状和相关领域中已有的研究成果进行了说明。第二章对本次毕业设计的总体方案与选择的论证进行了说明。首先介绍了单片机芯片和USB接口固件的选择,接着论证了总体设计方案。第三章对系统的硬件与软件部分进行了设计计算。包括对PDIUSBD12的多方面介绍、与单片机的连接,系统程序设计等等。第四章对研究设计进行分析,对容中的创新,改进与实际意义进行说明。第2章总体方案设计2. 1 芯片比较本文应用了单片机芯片和USB接口固件,下面对其进行介绍
14、。2.1.1 单片机选型当今单片机厂商琳琅满目,产品性能各异。常用的单片机有很多种:Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列、Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、国三星公司的KS57C系列4位单片机、义隆的EM-78系列等。我们最终选用了ATMEL公司的AT89C52单片机。AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随
15、机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统与8052产品引脚兼容,片置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C52单片机适用于许多较为复杂控制应用场合。本次设计选用AT89C52。2.1.2USB接口芯片的选择 基于USB的外置式硬件电路的设计核心是USB控制器的选择,在进行一个具体的USB设备开发之前,首先要根据具体要求选择合适的USB控制器,整个USB外围设备的设计将围绕该控制器展开。在选定USB控制器以后,如果是带USB接口的单片机,则是一般单片机应用系统的开发;若是USB外设接口芯片,就是US
16、B外设接口芯片与单片机应用系统的接口问题。一般USB接口芯片都支持多种并行总线结构(复用/非复用),可以方便地与多种单片机连接。 目前,市场上可供选择的USB接口芯片很多,按照功能基本上分为两类:一类是纯粹的USB接口芯片或通用USB外设接口芯片(也称USB设备器件);另一类是带有USB接口芯片的单片机(也称USB主控制器)。(1)带USB接口的单片机(USB主控制器)这类芯片主要有Cypress公司的CY7C63xxx/CY7C64xxx系列和EZ-USB, Intel公司的8X930/8x931,Philips公司的ISP 1161 (USB 1.1) / ISP I 561 (USB2.
17、0 ), Scanlogic的SL11R以与Motorola的MC68HC9088系列等。这种方案的最大好处在于开发难度较小,因为大多数这样的单片机芯片都是基于8051结构或者其它常见的结构,有自己的精简指令集,与单片机类似,熟悉单片机开发的开发者对系统结构和指令集非常熟悉,但其开发一般需要专用的仿真器,对于简单或低成本系统,价格高将会是最大的障碍。(2)纯粹的USB外设接口芯片(USB设备器件)这类芯片主要有NS公司的USBN9602/9603/9604, Scan logic的SUIT以与Philips公司的PDIUSBD11/PDIUSBD12 (USB1.1) /ISP1581 (US
18、B2.0)等。纯粹的USB外设接口芯片仅处理USB总线相关事务,必须有一个外部微处理器来进行协议处理和数据交换。这种方案的主要特点是价格便宜、接口形式多样、可靠性高、灵活性大,尤其适合于产品的改型设计,缺点是开发者需要非常熟悉USB协议,还必须用微处理器来控制USB外设接口芯片的工作。综合比较,PDIUSBD 12是一款性价比很高的USB器件,可使设计者选择最合适的微控制器,减少开发时间、风险与费用,是最实用最快捷的方法实现最经济的USB外设的方案。该芯片支持一个控制端点以与4个额外的端点地址。一个端点的缓冲区可以储存到128个字节,而双缓冲区可以到256个字节。PDIUSBD 12通常用作微
19、控制器系统中实现与微控制器进行通信的高速通用并千示接口,并支持本地DMA传输。PDIUSBD 12完全符合USB1.1规,并符合大多数器件的分类规格:成像类、海量存储器件、通信器件、打印设备以与人机接口设备。同样地,PDIUSBD 12还适用于打印机、扫描仪、外部存储设备和数码相机等等。另外,该芯片还集成了许多特性,包括SoftConnect, GoodLink、可编程时钟输出、低频晶振和终止寄存器集合,简化USB功能在外设上的应用。由于51系列的单片机是应用非常广泛的一种微处理器,在其基础上开发了大量的软件包,对其部结构和工作原理我们都非常了解,故本系统中我们采用8902进行核心程序的设计来
20、实现其所需的功能。A/D选用我们熟悉而且能满足要求的AD0809。而PDIUSBDI2能够完成将数据信号到符合USB规的信号的转换。为此,我们利用89C52中丰富的软件资源和USB总线技术即插即用、热插拔特性来完成高速数据采集系统。这样可以降低开发成本,缩短开发周期、降低风险。2.2 系统的原理与其组成基于USB的数据采集和控制系统的硬件模块主要是由A/D转换器、D/A转换器、微处理器、USB接口控制芯片、串行口控制芯片、放大器等组成。本数据采集和控制系统是以飞利浦 公司的 PDIUSBD12 作为系统的微控制器,管理和控制整个系统。该芯片集成度高,与51单片机兼容。 整个数据采集和控制系统的
21、总体结构框图如图2.1所示:图2.1 设计数据采集和控制系统原理图 从结构图中可知,模拟输入信号通过信号处理(放大和滤波)后,输出到A/D转换器,微控制器把经过A/D转换器转换后的数字信号通过USB控制芯片输出给计算机,同时可以在计算机上实现数据的显示和键盘控制;另一方面,经过A/D转换器采集到的数字信号可以通过算法实现控制后,经过D/A转换器输出,进而可以对其它设备进行控制;同时,该系统还可以作为一种USB和串行口的转接卡,通过串行口与USB接口实现数据之间的交互,充分利用了USB的快速性和RS-232远距离的优势,实现了资源优势互补,可以通过该板卡实现数据的远程控制和数据传输,既提高了传输
22、速率,又增加了传输距离。 而USB主机与显示部分则通过输出接口在PC机上显示,采用软件来模拟显示输入信号的波形。同时可以控制A/D转换器的启停、数据存取器的存取、USB外设芯片的工作、显示图形的放大和缩小等。 USB数据传输的硬件结构由以下三部分组成:通用USB控制芯片,微处理器,USB接口。它们构成了一个USB数据传输的最小系统。其功能为:USB收发器负责处理所有与USB总线事务有关的任务,如总线唤醒、数据接受/发送、打包、CRC校验等,但该收发器不负责解释这些数据的意义;微处理器负责处理数据、响应主机请求、以与控制USB收发器的工作;存负责存储和提供数据。其中,状态监视器是一个高速的单稳态
23、多频振荡器,用来实现掉电和恢复操作的,当系统连续3ms检测不到主机的请求时,系统就会进入挂起状态;当系统从挂起状态退出以后,状态监控器就产生一个正脉冲以复位/唤醒整个系统。第3章 系统的程序设计3.1 系统的硬件设计基于USB的数据采集和控制系统主要利用了A/D转换技术、D/A转换技术和USB技术,是伴随着USB技术的迅速发展与新的数据采集技术的发展而发展起来的。采集到的数据通过主机接口(USB口)发送到上位机并实时显示出来,其波形保真性能与A/D转换器的转换速率、分辨率与精度密切相关。A/D转换速率越高,复现的波形的分辨率也就越高;A/D转换器位数越多,精度越高,波形保真性越高。3.1.1
24、PDIUSBD12的性能特点和部结构PDIUSBD12集成了许多新的特性,包括可编程时钟输出、SoftConnet, GoodLink、低频晶振。(1)可编程时钟输出:不必考虑电路设计时使用高频晶振产生的EMI问题D12的CLKOUT引脚输出时钟信号,可用作MCU时钟,最低4MHZ,最高达48MHZ. D12部有倍频电路,外部只需6M晶振即可提供D12自身工作时钟(48MHZ)与输出时钟。(2)软连接(SoftConnet)技术:芯片集成有1.5 K的USB上拉电阻,连接此电阻将D+置为高设置为高速USB设备。连接的建立通过外部MCU发送命令来实现,这就允许设备在决定与USB总线建立连接之前完
25、成初始化时序。USB总线连接的连接可以重新初始化而不需要拔插USB电缆。(3)GoodLink技术:可提供良好的USB连接指示。在枚举中,LED指示根据通信情况间歇闪烁。当成功枚举和配置后,LED指示将一直点亮。USB支持两种信号速率。USB的最高速率是12Mb/s,但它可以工作在1. 5Mb/s的较低速率,同一个USB系统可同时支持这两种模式,但1. 15Mb/s低速率方式主要为了降低对速度要求不高的设备的成本,只支持少数像鼠标这样的低带宽要求的设备。 (4)可编程的时钟频率输出:集成320字节多结构FIFO存储器,具体组成如字节数端点0端点1端点320=16(IN)+16(OUT)+16(
26、IN)+16(OUT)+64(IN)+64(OUT) * 2(双缓冲)主端点的双缓冲配置增加了数据吞吐量,并轻松实现实时数据传输;(5)多中断模式实现批量和同步传输。端点可通过Set Mode命令配置为4种不同的模式,分别为: 模式0 Non-ISO模式(非同步传输) 模式1 ISO-OUT模式(同步输出传输) 模式2 ISO-IN模式(同步输入传输) 模式3 ISO-IO模式(同步输入输出传输)USB电缆可以允许使用不同长度的电缆,最长可达几米。为了提供可靠的输入电压和适当的终端阻抗,在电缆的每一端带偏压的终端。该终端可以发现任一端口上USB设备的“插入”和“拔除”操作,并能区分全速和低速设
27、备。图2指示了高速USB设备在集线器的终端位置与其所连的功能设备,从中可以看出在电缆的下行端的电阻Rpu是接在D+线上的,在低速设备中,Rpu电阻是接在 D-线上的。PD工USBD12的软连接(SoftConnet)技术使得在电路设计中可以省去此电阻,并可以通过软件设置。图3.1 PDIUSBD12的原理图(1)模拟收发器:集成的收发器接口可通过终端电阻直接与USB电缆相连。(2)电压调整器:片集成了一个3. 3V的调整器用于模拟收发器的供电,该电压还作为输出连接到外部上拉电阻。可选择D12提供的带有上拉电阻的软件连接技术。(3)倍频电路(PLL)片集成了6M到48M时钟乘法PLL,就可使用低
28、成本的6M晶振。(4) 位时钟恢复:位时钟恢复电路使用4X过采样规则,从进入的USB数据流中恢复时钟。它能跟踪USB规定围的抖动和频漂。(5)串行接口引擎(SIE):串行接口引擎实现了全部的USB协议层,完全由硬件实现而不需要固件的参与。该模块的功能包括同步模式的识别、并行/串行转换、位填充/解除填充、CRC校验/产生、PID校验/产生、地址识别和握手评估等。(6)存储器管理单元(ME)和集成RAM:在进行数据传输并与微处理器的并口相连时,MMU和集成RAM作为USB间传输的缓冲区,允许MCU以它自己速率对USB信息包读写。PDIUSBD12部结构框图如图3.2所示:6MHZD+ 3.3V 1
29、.5K电压调整器ANALOGTX/AXsoftconnectD-上行端口PLL位时钟恢复PHILIPSSIE内存管理单元集成RAM并行和DAM接口D+图3.2PDIUSBD12的部框图3.1.2 PDIUSBD12的端点描述端点(Endpoint)是一个USB设备唯一可以确认的部分,它是主机与设备之间的通信流终点。一系列相互独立的端点在一起构成了USB逻辑设备。 (1)端点0要求:所有USB设备都需要实现一个缺省的控制方法。这种方法将端点0作为输入端点,同时也将端点0作为输出端点。USB系统用这个缺省方法初始化与一般地使用逻辑设备(即设置此设备)。缺省控制通道支持了对控制的传送,一旦设备接上,
30、并加电,且又收到一个总线复位命令,端点0就是可访问的了。(2)非0端点要求:设备可以有除0以外的其它端点,这取决于这些设备的实现。低速设备在0号输入与输出端点外,只能有2个额外的可选端点。而高速设备可具有的额外端点数仅受限于协议的定义,协议中规定,最多15个额外的输入端点和最多15个额外的输出端点。非0端点在被配置前处于未知状态,在设备配置以后才能使用。 D12的端点适用于不同类型的设备,并可通过“Set Mode”命令配置为4种不同的模式:模式0(非同步模式),模式1(同步输出模式),模式2(同步输入模式),模式3(同步输入输出模式)。本设计中只用到了模式0配置,同步模式配置未使用。端点可用
31、来存放从主机接受到或者设备发送来的数据,每个端点都有属于自己的缓冲区。模式0配置下的端点缓冲区如表3.1所示。 端点2(主端点)是进行吞吐大数据量的主要端点,具有64字节双缓冲区结构,可以减轻传输大量数据的任务:(1)双缓冲。允许USB与本地CPU之间的并行读写操作这样就增加了数据的吞吐量缓冲区切换是自动处理的这导致了透明的缓冲区操作。(2)支持DMA直接存储器访问操作。可以和对其它端点的正常I/0操作交叉进行。(3) DMA操作中的自动指针处理。在跨过缓冲区边界时不需要本地CPU的干预。(4)可配置为同步传输或非同步批量和中断传输。表3.1 端点缓冲区配置(模式0)端点号 端点索 引传输类型
32、 端点类型 方向 缓冲区长度(字节)0 0 控制输出 默认 输出 160 1 控制输出 默认 输入 161 2 普通输出 普通 输出 161 3 普通输出 普通 输入 162 4 普通输出 普通 输出 642 5 普通输出 普通 输入 643.1.3 PDIUSBD12的指令集PDIUSBD12有自己的专用指令集,用于设置USB芯片、读取USB芯片的状态和控制USB总线传输。D12芯片有一系列的寄存器对应着这些指令,微处理器把要设置的值按字节写入D12的这些寄存器,或者从D12的这些寄存器中读出USB总线的状态。D12有三种基本的类型的命令:初始化、数据流和通用命令。(1)初始化命令初始化命令
33、在USB总线进行枚举处理时使用,这些命令用于使能端点的功能,还可用来设置USB分配的地址,包括:设置地址/使能、设置端点使能、设置模式(设置分频系数、软连接、端点模式以与中断模式等)、DMA设置等命令。表3.2 初始化命令指令集命令名 接收者 编码 数据设置地址使能器件 D0h 写1字节设置端点使能器件D8h写1字节设置模式器件F3h写2字节设置DMA器件FBh写/读1字节(2)数据流命令数据流命令用于管理USB端点和外部微控制器之间的数据传输,D12通过微控制器中断初始化大量的数据流。微控制器利用这些命令访问和决定端点的FIFO是否含有有效的数据。包括:读中断寄存器、选择端点、读最后处理状态
34、寄存器、读缓冲区、写缓冲区、使缓冲区有效、清除缓冲区、设置端点状态、应答建立等命令。如表3.4。(3)普通命令:包括发送恢复、读当前帧数目两个命令。表3.3 普通命令指令集命令指令集发送恢复F6h无读当前桢数F5h读1或2字节3.1.4 PDIUSBD12的管脚配置PD12共有28个管脚,具有S028和TSSOP28两种封装形式,管脚图如下图3.3所示:图3.3 PBIUSBBI2的管脚配置表3.4 数据流命令指令集数据流命令读中断寄存器 器件F4h 读2字节选择端点 控制输出 00h 读1字节(可选)控制输入 01h 读1字节(可选)端点1输出 02h 读1字节(可选)端点1输入 03H 读
35、1字节(可选)端点2输出 04h 读1字节(可选)端点2输入 05h 读1字节(可选)读最后处理状态 控制输出 40h 读1字节控制输入 41h 读1字节端点1输出 42h 读1字节端点1输入 43h 读1字节端点2输出 44h 读1字节端点2输入 45h 读1字节读缓冲区 选择的端点F0h 写n字节写缓冲区 选择的端点F0h 写n字节设置端点状态控制输出 40h 写1字节控制输入 41h 写1字节端点1输出 42h 写1字节端点1输入 43h 写1字节端点2输出 44h 写1字节端点2输入 45h 写1字节应答设置 选择的端点F1h 无缓冲区清零 选择的端点F2h 无使缓冲区有效 选择的端点
36、FAh 无3.1.5A/D与单片机接口电路ADC0809允许的最大时钟频率为1280kHz,主要管脚功能如下:INO-IN7: 8路模拟量输入端,可从这8个脚输入0V-5V待转换的模拟电压ADDA,ADDB,ADDC:管道地址输入端。通过编码的方式来实现管道地址的选择。CLOCK:时钟输入端。ADC0809只有在时钟脉冲信号的同步下才能进行A/D转换时钟频率越高转换得越快。典型时钟频率是640kHz。 ALE:地址锁存允许端。START:启动脉冲输入端。在时钟脉冲频率为640kHz时,START脉宽应大于100ns-200ns。EOC:转换结束信号端。在A/D转换期间,EOC=0表示转换正在进
37、行,输出数据不可信,转换完毕后立即使EOC=1表示转换已经完成,输出数据可信。D7-DO:转换所得八位输出数据,D7是最高位,而DO是最低位。OE:允许输出端。OE端控制输出锁存器的三态门。当OE=1时,转换所得数据出现在D7-D0脚,当OE-0时D7-DO脚对外是高阻抗。89C52通过P1.4和读、写控制线来控制转换器的模拟输入通道地址锁存、启动和允许输出。编程时注意启动AD0809后,EOC在一定时间才能变成低电平。 图3.4 ADC0809与89C52的接口电路3.1.6 PDIUSBD12与单片机接口电路图3.5 PDIUSBD12与89C52的连接电路PDIUSBD12与89C52的
38、连接电路如图3.5所示。89C52的ALE和PD12的ALE相接,表示采用单独地址和数据总线配置。其AO脚接高电平用于控制命令或数据输入到PDIUSBD I2,也就是编程中outportcmd()和outportdata()函数。此外89C52的多位地址/数据复用总线PO可直接与PDIUSBD12的数据总线相连,CLKOUT时钟输出为89C52提供时钟输入。在该数据采集系统中,用ADC0809采集0-5V的电压信号,经A/D转换后将数字量存入预先设定的缓冲区里,利用接口芯片D12将数据送至USB总线上。设备应用程序从缓冲区里取数据显示,通过数值来说明USB接口的采集速率比一般的串行总线速度高。
39、当前端的电压信号不断变化的同时,在PC上可以观察到数据的变化,这就表明利用USB接口在数字采集系统中进行数据传输是能够实现的,而且能够很好的实现,硬件电路原理图祥见附图B1。3.2系统的软件设计3.2.1 PDIUSBD12的固件编程思想PDIUSBD 12的固件设计成完全的中断驱动。当CPU处理前台任务时,USB的传输可在后台进行。这就确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试。后台ISR(中断服务程序)和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现。其原理图如图3.6所示图3.6 前后台工作原理 由于这种结构,主循环不关心数据是来自USB串口还是并口,它只检查
40、循环缓冲区需要处理的新数据。这个概念很重要,这样主循环程序专注于数据的处理而ISR能够以最大可能的速度进行数据的传输。相似的,控制端点在数据包处理时采用了同样的概念。ISR接收和保存数据缓冲区中的控制传输并设置相应的标志寄存器。主循环向协议处理程序发出请求。由于所有的标准器件,级别和厂商请求都是在协议处理程序中进行处理,ISR得以保持它的效率,而且一旦增加新的请求只需要在协议层进行修改。3.2.2PDIUSBD12固件编程的结构固件的积木式结构如图3.7所示,图中箭头表示数据传输方向。下面是事件标志“EPPFLAGS”和Setup包数据缓冲区“CONROL_ XFER”的结构体: /事件标志
41、typedef union_ epp_ flagsstruct_flags unsigned char timer:1; unsigned char bus-reset:1; unsigned char suspend:1; unsigned char setup_packet:1; unsigned char remote_wakeup:1; unsigned char in_isr:1; unsigned char control_state:2; unsigned char configuration:1; unsigned char verbose:1; unsigned char e
42、pl_rxdone:1; unsigned char setup_dma:1; unsigned char dma_state:2; bits; unsigned short valueEPPFLAGS;/USB设备请求寄存器typedef struct_ device_request unsigned char bmRequesetType; unsigned char bRequest; unsigned short wValue; unsigned short windex; unsigned short wLength;DEVICE_ REQUEST;/Setup包数据缓冲区typed
43、ef struct_control_ xfer DEVICE_ REQUSET DeviceRequest; unsigned short wLength unsigned short wCount; unsigned char*pData; unsigned char dataBufferMAX_ CONTROLDATA_ SIZE:CONTROL_ XFER;主循环:采集数据,发出USB请求,和处理USB总线事件和用户功能等等 MAINLOOP.C中断服务程序 ISR. C标准请求处理 CHAP 9. C厂商请求处理PROTODMA.CPDIUSBD12命令接口 D12CI. C硬件提取层
44、EPPHAL. C图3.7 固件结构和数据流向3.2.3 PDIUSBD12固件编程的实现中断服务程序-ISR.C这部分代码处理由PDIUSBD12产生的中断,它将数据从PD工USBD12的部FIFO取回到CPU存储器并建立正确的事件标志-通知主循环进行处理。在ISR的入口固件使用D12_ Read Interrupt Register( )来决定中断源,然后将进入相应的子程序进行处理。PDIUSBD12的固件完全由中断驱动ISR的流程图8如下所示:例如,在OUT数据阶段的建立包时,工SR将建立包和OUT数据都存入CONTROL_ XFER”缓冲区中,然后将“setup_packer”标志就到
45、主循环这将减少主循环不必要的服务时间,并且简化了主循环的编程。总线复位和挂起并不要求在ISR中进行特殊的处理。ISR只需在EPPFLAGS中设置“bus_ reset”或“suspends”标志位,然后退出即可。ISR与前台主循环通过事件标志EPPFLAGS和数据缓冲区CONROL_ XFER进行通信。主循环和ISR之间的任务分配是这样的:ISR从D12收集数据而主循环对数据进行处理。当工SR收集了足够的数据时,它只通知主循环己经准备好等待处理。3.2.4 端点处理程序控制端点:控制传输总是在SETUP阶段开始,之后为可选的DATA阶。然后在STATUS阶段结束。如图3.8所示为控制端点不同状态的转变。固件使用这3种状态来正确地处理控制传输。 无数据控制返回状态空闲接收发送输入输出Yyyy