精品基于USB的数据采集系统的研究与设计毕业论文设计.docx
《精品基于USB的数据采集系统的研究与设计毕业论文设计.docx》由会员分享,可在线阅读,更多相关《精品基于USB的数据采集系统的研究与设计毕业论文设计.docx(29页珍藏版)》请在冰点文库上搜索。
精品基于USB的数据采集系统的研究与设计毕业论文设计
数据采集系统USB接口的实现
自动化专业学生XXX
指导教师XXX
摘要:
USB通用串行总线是一种新型的微机接口规范,随着客户对系统的数据采集速度要求的不断提高,USB以其易于扩展、速度快、方便使用等优点越来越多的应用于数据采集系统中。
本文论述了一种基于USB总线的数据采集系统的设计方法,通过对USB协议和设备构架的充分理解,对以单片机AT89C52和USB接口芯片CH372为核心的数据采集系统进行了硬件设计,并在此设计的基础上给出相应的电路原理图。
硬件设计主要解决的是CH372、TLC549和TLC5620与单片机之间的接口电路问题;USB软件设计由USB设备固件程序、设备驱动程序以及主机应用程序三部分组成。
本系统充分展现了USB总线安装方便、使用方便、功能齐全等优点。
关键词:
USB通用串行总线;单片机;数据采集系统
RealizeofDataAcquisitionSystemBasedonUSB
StudentmajoringinAutomationXXX
TutorXXX
Abstract:
USBUniversalSerialBusisanewtypeofcomputerinterfacespecification.Withcustomersonthesystemdataacquisitionspeedrequirementscontinuetoincrease,moreandmoreUSBwasusedindataacquisitionsystemswithitseasytoexpand,fast,easytouse,etc..ThispaperdiscussedaUSB-baseddatabusacquisitionsystemdesignapproach,throughtheUSBprotocolanddevicearchitecturefullyunderstanding,AT89C52microcontrollerandUSBinterfacechipCH372asthecoreofthedataacquisitionsystemhardwaredesign,andthecorrespondingcircuitdiagramonthebasisofthisdesign.ThehardwaredesignismainlytosolvetheproblemoftheinterfacecircuitCH372,TLC549andTLC5620communicatedwithmicrocontroller;USBsoftwarewasdesignedbytheUSBdevicefirmware,devicedrivers,andthehostapplicationconsistsofthreeparts
ThesystemhastheadvantageofUSBbustoinstall,easytouse,full-featured,etc..
Keywords:
USBbus;Datacollection;MCU
1绪论
1.1课题背景和研究意义
在工业生产中,往往需要使用PC机进行各种数据采集和处理,如温度和压力。
数据采集系统的主要任务是数据信息的采集、A/D转换,然后通过PC接口总线将数据送到计算机中进行进一步的处理。
目前,以该系统为核心的设备在国内和国外已被广泛应用,如工业控制中现场数据采集设备;视频电话,家庭影院及其他多媒体设备。
数据采集卡与计算机外设一样,与主机通讯接口一般基于PC机上的ISA总线、PCI总线、RS-232总线等[1]。
虽然PCI总线具有更高的传输速率,并支持“即插即用”功能,但其缺点是插拔麻烦,而且由于PC扩展插槽一般5~6个,所以最多也只能有5~6个PCI数据采集卡同时使用在同一计算机,同时PCI插槽在主板上占用相当大的空间,这不利于小型化的计算机系统。
对于ISA总线也是存在同样的问题。
虽然RS-232C串行总线连接器简单,但其传输速度慢,且主机串口数目非常有限。
总之,这些传统接口的数据采集设备在使用上存在以下缺陷:
安装麻烦,受计算机插槽数量、中断资源、地址的限制,在一些强电磁干扰试验现场可能不会专门做出电磁屏蔽,从而会出现所收集的数据失真的情况。
通用串行总线USB很好地解决了这些问题。
USB总线接口的数据采集系统具有以下优点:
1.设备装配简单。
USB设备支持即插即用,无需打开机箱安装USB设备,无需再关闭计算机。
2.接口数目多,每个USB主机可以通过USB集线器同时挂接最多127个外围设备,可以有效的解决I/O口数目不够用的问题。
3.数据传输速度比一般的串行总线快,可以达到绝大部分多点数据采集系统的要求。
4.USB总线能够直接对设备进行供电[2]。
1.2USB的发展
USB(通用串行总线)作为一种新的外设连接技术,最初由康柏、DEC、IBM、英特尔、微软、NEC和北方电信等七大集团合作开发的。
这项技术的重点在于简化计算机和外围设备的连接过程,兼容低速和高速,从而解决串行设备和并行设备连接电脑的争论,为用户提供一个可扩展的、共享的、容易来使用的串行总线。
随着各级的发展和渗透,外设和PC连接与扩展已变得越来越重要。
1994年,微软公司的即插即用计划,重点在于PC外围设备和扩充电路板连接在一起,实现系统对端口和中断等资源自动分配,无需用户干预。
1996年康柏、英特尔和微软三家厂商提出设备托架的概念,其目的是实现高度的可扩展性[3]。
1.X版本在USB中首次引入,它的总线传输速率低,有12Mbps(全速)和1.5Mbps(低速)两种。
目前,它主要用在传统的PC外设,如键盘、鼠标、显示器等,移动存储设备,如U盘,以及新兴的消费类电子产品,如移动电话、MP3播放器、MP4、MP5等。
USB2.0于2000年4月公布,是一个高速模式的版本,它的数据传输速度可达480Mbps,同时保持USB1.1优势的前提下,保证了向下兼容性,可以完全支持USB1.1产品。
不过,如果要使用高速传输,则必须使用兼容USB2.0的主机软件和主机控制器,这意味着这台主机的操作系统必须安装USB2.0的补丁,同时安装支持USB2.0主机控制器或PCI扩展卡。
随着USB设备急剧增长,设备和设备之间的直接数据传输变得越来越重要,在2001年12月底USBOTG技术应运而生,开发设备上给予双重身份。
作为主机的同时也可以作为一个设备,其实质是在设备加一个嵌入式计算机来执行主机任务。
这项技术使USB设备来摆脱对电脑的依赖,USB应用的范围大大扩展。
1.3国内外现状
国外公司纷纷推出了很多以适应不同精度,不同条件要求的USB数据采集产品。
典型的是美国NI公司开发了一系列的USB数据采集卡,NI公司于2006年6月推出了两款最新的采样率高达1.25MB/s的USB2.0总线M系列数据采集设备。
这些新器件不仅能提供最高速率的数据采集功能,更是一种强大的测量服务软件,以简化编程工作和系统设置。
新设备包括一个免费的USB2.0高速交互式数据记录软件进行分析。
但是,该公司的USB数据采集卡系列产品的价格是非常昂贵的。
近年来,国内也有不少公司也都纷纷推出了USB数据采集卡,而这些产品大多是基于USB1.1协议规范,数据传输速度远低于基于USB2.0协议规范数据采集卡,因此限制了采集速度。
目前,USB接口的开发和应用在广度和深度上远远不如传统的串行端口、并行端口以及各种总线插卡,其应用主要局限于制定一些标准的PC外围设备,如U盘、键盘、鼠标。
这主要是因为作为一个新的技术和新的标准,USB规范是更复杂的,相应的技术支持比较少,应用程序开发人员都不是很了解,USB接口作为通用I/O接口使用有一定硬件和软件的开发难度。
USB2.0接口具有低成本、灵活方便、高性能以及可靠稳定的特点,将会逐步成为计算机的主要输入和输出方式。
总体来看,目前国内USB数据采集设备的发展已经取得了较大的进步,但与国外在开发和应用的深度和广度而言,还有一定的距离,在一些现场数据采集的要求相对高的场合还是较多的采用外国产品。
因此,随着电脑对USB接口的普及和数据采集卡的实际应用增加,使用USB2.0协议规范开发符合各种场合的数据采集系统,以及推进产品的国产化已成为急需解决的现实问题[4]。
1.4本设计研究的主要内容
设计一款自适应的USB接口的数据采集系统,能够通过通用的串行总线接口替代传统的数据采集板槽式应用。
此设计包括硬件系统和软件系统的设计。
数据采集系统的硬件系统包括A/D转换电路、D/A转换电路、接口芯片与USB连接图以及周边电路的设计。
软件系统包括固件程序、驱动程序以及用户程序的设计来完成数据的采集及显示工作。
2硬件系统的设计
2.1硬件方案的选择
在芯片方面处理器采用功能强大的AT89C52,因为其适用于许多较复杂系统控制的应用场合;A/D转换器及D/A转换器分别采用TLC549及TLC5620;由于CH372具有灵活省事的外置盒内置双重固件模式,内置了USB通讯中的底层协议,所以接口芯片采用CH372。
2.1.1芯片的选择本设计采用51单片机中的AT89C52为主控制器件。
AT89C52是美国ATMEL公司生产的低电压,高性能8位CMOS单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,可灵活应用于各种领域。
AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在硬件组成、引脚排列、指令系统和工作特点等方面兼容。
其主要工作特性是:
片内程序存储器内含8KB的Flash程序存储器,擦写寿命可达到1000次;片内数据存储器内含256字节的RAM;具有32根可编程的I/O口线;具有3个可编程的定时器;中断系统是具有8个中断源、6个中断矢量、2级优先权的中断结构;具有一个数据指针DPTR;低功耗工作模式有空闲模式和掉电模式;AT89C52工作电源电压典型值为5V[5]。
CH372具有灵活省事的内置和外置两种双重固件模式,内置了USB通讯中的底层协议。
在外置固件模式下,所有USB请求由外部单片机根据需要自行处理,从而实现符合各种USB类规范的设备。
在内置固件模式下,本地端单片机只负责数据交换,端点0的所有事务由CH372自动处理默认,单片机程序非常简洁[6]。
2.1.2硬件系统设计方框图
图2-1总体设计方案模块关系方框图
16路模拟信号经A/D转换器转变成数字信号送入微处理器,再由D/A转换器转变为16路开关信号送出;开关量信号经过开关输入电路读入微处理器进行处理,处理后的结果经74LS273锁存输出;8路脉冲信号由脉冲输入电路输入微处理器经处理后送出;整个过程计算机通过接口芯片CH372对微处理器进行控制;微处理器由电源直接供电。
2.2A/D转换和D/A转换
2.2.1TLC549芯片电路设计TLC549是TI公司生产的一种高性能、低价位的8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,最大转换速率为40KHZ,4MHZ典型内部系统时钟,电源为3V至6V。
它能很好的采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统[7]。
TLC549的其他特点包括可在微处理器控制下控制片内采样-保持电路或自动工作;具有差分高阻抗基准电压输入端、易于实现比率转换的高速转换器;整个开关电容逐次逼近转换器电路的设计允许以不大于±0.5的误差在0-17µs的时间范围内实现最低有效位精度的转换。
TLC549中REF-接地,REF+接VCC,具体电路设计如图2-2所示:
图2-2A/D转换电路
TLC549内部包含控制逻辑电路,数据寄存器以及采样,内部系统时钟和保持。
器件有两个控制输入:
芯片选择和I/OCLOCK,这是为了提高访问速度和灵活性。
这些控制输入与TTL兼容的3态输出易于与微处理器或小型计算机实现串行通信。
器件可在17µs甚至更短时间内完成转换。
TLC549重复一次输入-转换-输出周期为25µs。
I/OCLOCK和内部系统时钟独立使用且不需要任何二者之间的相位关系或特定的速度。
由于这种独立性和系统时钟的内部产生,控制软件和硬件只需关心利用I/O时钟读出先前转换结果和启动转换,从而简化了器件的软件和硬件控制任务。
内部系统时钟以这种方式驱动转换电路以便控制,硬件和软件不需要涉及此项任务。
2.2.2TLC5620芯片电路设计TLC5620I和TLC5620C是带有高阻抗缓冲输入的4通道8位电源输出数模转换器集合。
这些转换器可以产生单调的、1至2倍于基准电压和接地电压差值的输出。
器件内集成上电复位功能,确保启动时的环境是可重复的。
TLC5620中GND接地,REFA-D连接+5V电源,VDD接+5V电源及0.1µf电容,具体电路图如图2-3所示:
图2-3D/A转换电路
对TLC5620I和TLC5620C是通过一根简单的3路串行总线来实现数字控制的。
该总线兼容CMOS,并易于向所有的微处理器和微控制器设备提供接口。
REFA-D四个引脚分别表示DACA-D基准电压输入。
11位的命令字包括1位范围位、2位DAC选择位和8位数据位,范围位用来选择输出范围是1倍还是2倍。
DAC寄存器采用双缓存,允许设备中写入一整套新值LDAC实现了对DAC输出值的同时更新。
输入则采用了史密斯触发器,从而避免了高噪声。
2.3USB接口芯片
CH372是CH375芯片的功能简化版和CH371的升级产品,它是一个USB线的通用设备接口芯片。
CH372可以方便的挂接到MCU/DSP/MPU/单片机等控制器的系统总线上,它在本地端具有8位数据总线和中断输出以及写、读、片选控制线;在PC系统中,CH372的配套软件提供的操作接口简洁易用,这使得本地端的单片机与该芯片的通讯方便得就如同读写文件一般。
CH372需与上位机及下位机连接来完成数据交换,下面详细介绍其连接电路的设计。
2.3.1CH372和上位机连接电路设计
图2-4CH372与USB总线连接图
如果CH372的电源电压为3.3V,则应该将V3引脚与VCC引脚短接,共同输入3.3V电压,并且电容C3可以省掉。
图2-4中,在电源断电后将电解电容C4中的电能及时释放掉会用到可选电阻R2,使VCC及时下降到0V,确保在下次通电时CH372能够可靠地上电复位。
为使CH372能够可靠复位,电源电压从0V上升到5V的上升时间应该少于100mS,所以电容C4的容量和电阻R3的阻值都不能太大。
2.3.2CH372与下位机连接电路设计
图2-5CH372与单片机连接电路
在没有外部扩展总线的单片机系统中,单片机也可以用普通的I/O引脚模拟出8位并口时序操作CH372芯片。
在普通的MCS-51系列简化单片机的典型应用电路中,CH372的固定为低电平,一直处于片选状态,U5的P1端口作为8位双向数据总线,在单片机程序中,可以控制各个I/O引脚模拟并口时序与CH372进行数据交换。
2.4周边电路设计
由于系统要求必须由16路开关量以及8路脉冲信号输入,因此周边电路的设计包括开关量输入电路、脉冲输入电路以及多路开关电路,完成信号的输入处理及输出工作。
2.4.1开关量输入电路设计74LS244为三态输出的八组缓冲器和总线驱动器。
由于系统要求有16路开关量输入,因此,开关量输入电路由2片74LS244组成。
开关量输入电路如图2-6所示:
图2-6开关量输入电路
2.4.2开关量输出电路设计74LS273是带有清除功能的8D触发器。
低电平清除,上升沿锁存。
满足所需建立时间的D输入信息在时钟脉冲正边沿作用下传送到Q输出端,时钟触发发生在一个特定的电平上,它不直接和正脉冲的过渡时间有关。
当时钟输入为高电平或低电平时,D输入信号对输出无影响。
触发器保证对0到30M的时钟频率范围响应,而最高时钟频率的典型值是40M。
对于273每个触发器的功耗典型值为39mW,对于LS273为10mW。
由于系统要求有16路开关量输出,因此,开关量输出电路由2片74LS273组成。
电路如图2-7所示:
图2-7开关量输出电路
2.4.3脉冲输入电路设计8253是可编程的定时器/计数器,其内部有三个独立的16位定时器/计数器,每个通道都可以按二或十进制计数,并且每个通道都可按6种不同的方式工作。
其GATE0~GATE2是门控脉冲输入端,CLK0~CLK2是计数器0~2的时钟脉冲输入端,OUT0~OUT2是输出端。
当8253做外部事件计数器时,在CLK端所加的计数脉冲由外部事件产生,这些脉冲的间隔可以不相等。
这时,8253所能实现的定时时间决定于计数脉冲的频率和计数器的初值,即定时时间=预置的计数初值n×时钟脉冲周期t[8]。
由于系统要求有8路脉冲量输入,因此,脉冲量输入电路由3片8253组成。
电路如图2-8示:
图2-88路脉冲输入电路
2.4.4多路开关电路设计CD4051是单8通道数字控制模拟开关,有三个二进制控制输入端A0、A1、A2和INH输入,具有低导通阻抗和很低的截止漏电流。
这些开关电路在整个VDD-VSS和VDD-VEE电源范围内具有极低的静态功耗,与控制信号的逻辑状态无关。
当INH输入端为1时,所有的通道截止。
三位二进制信号选8通道中的某一通道,可连接该输入端至输出。
系统要求有16路模拟量输入及输出,模拟量输入输出信号分别经过2片CD4051选择。
多路开关图如图2-9所示:
图2-9多路开关电路
其中A0-A3为地址,S0-S15为模拟信号,IN/OUT为总输入输出。
CD4051带有三个通道选择输入端A、B、C和一个禁止端INH。
当CBA为000~111B时,可产生8选1控制信号,使8路通道中的某一通道的输入与输出接通。
当INH为0时,允许通道接通;当INH为1时,禁止通道接通。
改变CD4051的IN/OUT0~7及OUT/IN的传递方向,可用做多路开关和反多路开关[9]。
使用禁止端INH,可以很方便地实现通道数的扩展。
本系统使用两片CD4051组成16路的多路开关。
当通道选择码取0000~1111B之一时,便唯一地选中这16路通道中的某一通道。
3软件系统的设计
基于USB的数据采集系统软件部分总共分为三块:
采集设备固件程序、采集设备驱动程序和用户应用程序。
采集设备固件的作用是辅助硬件,任何基于微处理器及外围电路的功能设备正常工作都离不开固件的参与;驱动程序采用基于WDM模型的驱动程序;对于基于USB的数据采集系统,用户应用程序也是必须存在的,功能是开启、关闭USB设备,检测USB设备,显示分析数据等。
下面对软件的设计详细介绍。
3.1USB固件程序设计
所有基于微处理器及其外围电路的功能设备保证正常工作都离不开固件的参与,固件的作用就是辅助硬件,即控制硬件来完成预期的功能,若没有固件的控制和参与,硬件设备只是简单的芯片堆砌,无法达到预期的功能。
因此,用户必须编写固件程序去辅助硬件完成USB的通信任务。
具体如下:
(1)初始化。
设置一些特殊寄存器的初始值,以实现所需的设备功能或属性,例如使能端点、开中断、配置端口等。
(2)辅助硬件完成设备的重新枚举过程。
包括模拟设备的重新连接与断开,对收到的设置包进行判断分析,从而对主设备的请求做出适当的响应,完成对设备的配置任务。
(3)对中断的处理。
(4)数据的接收发送。
(5)外围电路的控制[10]。
固件程序采用模块化设计设计成中断驱动模式,其总体结构如图3-1所示。
图3-1固件程序结构和数据流向
各模块主要功能如下:
主程序:
完成USB接口芯片及数字信号处理器的初始化、数据接收/发送标志位的判断和中断请求等待。
中断服务程序:
固件程序设计的重中之重就是中断服务程序。
首先读取中断寄存器的值判断所发生中断的类型,然后根据具体的中断类型进入相应的处理子程序或设置相应的标志位。
请求处理程序:
USB标准请求处理程序来负责处理枚举阶段主机发给设备的标准请求,以及正常工作时主机发送的厂商的请求。
固件接收第1个SETUP中断开始,就进入USB枚举的过程,枚举过程是由主机发出一系列的请求并要求及时得到设备的响应,如果不需要操作,也必须指示出一个空响应,使主机能为其准备所请求的资源,建立好主机和设备之间的信息沟通机制[11]。
数据接收/发送程序:
当用户通过主机端应用程序向设备发送或索要数据时,数字信号处理器调用数据接受/发送的子程序完成数据的接受/发送。
数据的接收和发送过程如下:
图3-2发送数据过程
图3-3接收数据过程
硬件接口访问程序:
硬件接口程序负责完成数字信号处理器对芯片的读写操作,它是整个固件程序中的最底层,同时也是使用最频繁的部分。
3.2驱动程序的设计
Windows环境下驱动程序有3种模型:
KMD模型、VXD模型、WDM模型。
WDM模型是全新的驱动程序模型,现在主流操作系统基本上都是采用基于WDM模型的驱动程序[9]。
WDM模型的为分层体系结构,具体如图3-4所示:
图3-4WDM结构图
这里首先介绍两个概念IRP及URB。
IRP即I/O请求包。
它是驱动程序的核心。
I/O管理器接收到一个I/O请求,然后把它传递到设备驱动程序之前,分配并初始化一个IRP。
URB即USB请求块。
USB设备驱动程序在向设备发送一个请求之前,必须首先创建一个URB,然后把URB送到总线驱动程序,这样设备驱动程序才会得以运行。
对于USB设备,其WDM驱动程序分为USB功能驱动程序和USB底层驱动程序。
USB底层驱动程序由操作系统提供,负责与硬件打交道,实现底层通信。
USB功能驱动程序由设备开发者编写,不对硬件进行操作,而是通过向USB底层驱动程序发送包含请求块URB的IRP,以实现对USB设备信息的发送和接收[12]。
3.3用户应用程序设计
3.3.1操作流程一般用户应用程序必须的功能是采样数据读取、采样控制以及数据显示,其他功能(例如数据分析、数据存储)可以根据应用系统的需要进行定制。
根据功能划分,应用程序可以细化为以下几个模块:
主框架、设备访问模块、采样设置模块和数据显示模块,模块之间的关系如图3-5所示:
数据显示模块
采集设置模块
主框架
设备访问模块
图3-5应用程序模块结构图
数据显示模块、设备访问模块和采样设置模块都只与主框架进行通信。
数据显示模块负责数据的波形显示,采样设置模块负责采样参数的配置,设备访问模块负责与下层设备的通信,整个系统以主框架为中心。
采样设置模块,主要用于配置采样参数,包括通道、各通道的量程和总的采样率。
在Win32系统中,可以把每个设备都抽象为文件,此时的应用程序只需要几条简单的文件操作API函数,就可以实现与驱动程序中的某个设备通信。
API函数及对应关系如表3-1所示:
表3-1API函数与驱动程序例程对应关系
API函数
IRP
说明
CreateFile
IRP_MJ_CRETE
打开设备
ReadFile
IRP_MJ_READ
从设备获取数据
WriteFile
IRP_MJ_WRITE
向设备发送数据
CloseHandle
IRP_MJ_CLOSE
关闭设备
DeviceI/OControl
IRP_MJ_DEVICE_CONTROL
控制设备