毕业设计(论文)基于usb数据采集系统设计

上传人:e****s 文档编号:194338251 上传时间:2023-03-13 格式:DOC 页数:43 大小:825.50KB
收藏 版权申诉 举报 下载
毕业设计(论文)基于usb数据采集系统设计_第1页
第1页 / 共43页
毕业设计(论文)基于usb数据采集系统设计_第2页
第2页 / 共43页
毕业设计(论文)基于usb数据采集系统设计_第3页
第3页 / 共43页
资源描述:

《毕业设计(论文)基于usb数据采集系统设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于usb数据采集系统设计(43页珍藏版)》请在装配图网上搜索。

1、天津职业技术师范大学2010届本科生毕业设计摘 要信息技术与电子技术的迅猛发展,使得计算机和外围设备也得到飞速发展和应用,在科学研究领域和许多生产场合中常用到数据采集技术,并且对数据采集的各种要求也越来越高。传统的通信方式由于传输速度慢、抗干扰能力弱、安装麻烦等原因严重阻碍了数据采集设备的发展,新一代通用串行总线(Universal Serial Bus,简称USB)具有传输线少、速度快、支持热插拔以及易于扩展等优点,很好的解决了以上问题,因此串行总线技术在计算机系统及通信设备中迅速得到了广泛的应用。文中分析了USB总线的体系结构和特点,针对传统总线不足之处,在此基础上研究了基于USB的数据采

2、集系统,根据系统应该达到的技术指标,从而确定系统的整体框架和各个分芯片的选择。整个系统包括硬件设计和软件设计两部分,实现数据高速转换和采集、数据显示、数据保存以及数据打印等功能。 系统硬件部分实现数据采集功能,并将采集的数据送至USB控制器,再通过USB接口将数据传送给PC机。硬件设计部分主要包括USB2.0主控制器(C8051F320)外围电路设计与模数转换器AD0809的连接、电源设计部分等。硬件设计中的各个芯片的选择都以技术指标为依据,每个部分之间的连接以芯片的工作模式和系统要实现的功能来决定。文章每个部分都给出了芯片选择的理由和硬件连接的原理图。系统软件部分包括USB固件程序、设备的驱

3、动程序和用户界面程序。USB固件程序在keil C中完成,实现C8051F320的初始化;设备驱动程序为用户界面程序提供了软件和硬件平台连接的通道,它由WindowsXP DDK和DriverStudio来开发;用户界面程序采用VB语言完成,在VB中调用驱动函数中的句柄来对硬件设备进行操作,实现数据的接收、保存、和显示功能。最后以函数发生器为对象对系统进行测试,从测试的结果中可得出此系统性能良好,能达到设计的预期效果。 关键词: USB;数据采集;C8051F320;上位机;固件ABSTRACT With the development of information technology an

4、d electronic technology,computers and other electronic devices also develop fast and be applied widely. Data acquisition technology is used in the science research field and lots of manufacture occasion which require every parameter of data acquisition higher and higher. Traditional communications s

5、tyle is strongly restricted the development of data acquisition devices because of slow transmitting rate、weak anti-jamming ability、inconvenient installation and so on. New generation Universal Serial Bus has the advantages of small transmission line、quick transmitting rate、sustaining hot-plug and p

6、ull、easy extensibility and so on which solved the problems of traditional communications style well. So Universal Serial Bus technology gains wide application in the computer system and communications devices. This thesis analyses system configuration and characteristics of Universal Serial Bus. Aim

7、ing at the shortages of traditional bus,it puts forward the system of Data acquisition based on USB . This system has the advantages of quick transmitting rate、Plug and Play、convenient taking and so on. The Whole system contains two Parts that are hardware design and software design. It realizes fun

8、ctions of data acquisition、data transition、data saving、data display and data Printing. The hardware of the system realizes data acquisition function, which sends data To the USB controller,and then USB controller sends data to PC by USB interface. The hardware design mainly includes the periphery ci

9、rcuit design of the USB2.0 Controller (C8051F320)、the connection between the C8051F320 and the A/D 0809 and the Power supply design. Each chip is choose based on the Technology index in the hardware design,and the ports communicate corroding to The mode of the chips and the system function. The pape

10、rs descript the reasons to choose the chips and the principle chart of the hardware connection. The software of system include USB firmware programme、device driver programme and the user programme. The USB firmware programme is accomplished in Keil C ,realizing the initialization of C8051F320;The de

11、vice dirver programme provides the channel to the software and the hardware platform for the user programme, which is developed by Windows XP DDK and DriverStudio; The user programme finishes with VB Language,operating the hardware device through calling the handle of drive function in VB,and realiz

12、es the data receiving,saving,and displaying functions.Lastly,it tests the system using the function generator as the object. The system Performs well from the testing results,reaching the expect effects.Key Words:USB;;Data Acquisition;C8051F320;VB;Firmware目 录1绪论1课题研究的背景及意义1USB技术发展趋势及优缺点分析1 国内外应用现状及发

13、展趋势1USB的优势和局限性2课题研究的主要内容32基于USB总线数据采集系统的整体设计4USB数据采集系统的性能指标4USB总线数据采集系统的硬件构成4USB数据采集系统的软件设计53USB 数据采集系统的硬件设计7多通道A/D转换电路的设计7USB2.0 主控芯片的选择及介绍7常用控制芯片介绍7控制芯片选型及优点分析8USB控制芯片C8051F3208通用串行总线控制器9USB控制芯片及其外围电路设计10显示模块11LCD概述11基本特性11引脚定义12基本电路图与时序图12电源模块134USB数据采集系统的软件设计15固件程序的设计15固件基础15C8051F320 USB固件程序19驱

14、动程序设计23WDM和USB驱动程序的介绍24驱动程序的源代码分析25用户界面程序的设计27用户界面程序的整体构想27主界面的生成29数据接收29数据保存31数据显示315基于USB数据采集系统的软件测试33数据接收测试33数据显示及打印功能测试33本章小结33结 论34参考文献35附录一: 封面样例37致 谢38V天津职业技术师范大学2010届本科生毕业设计1 绪论1.1 课题研究的背景及意义数据采集系统是结合基于计算机的测量软硬件产品来实现灵活的、用户自定义的测量系统,它主要完成数据信息的采集、A/D转换、压缩处理,然后通过PC接口总线将处理后的数据送入计算机作进一步处理。随着计算机技术的

15、飞快发展和普及,以数据采集系统为核心的设备也迅速在国内外得到了广泛的应用,现代工业生产和科学研究对数据采集的要求越来越高,如在工业控制中现场数据的采集,温度、压力等数据的采集,在比较重要场所安装的监控设备,还有视频会议、可视 等场合中,都需要进行高速数据采集。现在常用的采集方式是数据采集板卡,常用的有A/D采集卡以及422、485等总线板卡,采用板卡不仅安装麻烦,价格昂贵,容易受到机箱内环境的干扰,通讯过程中极易产生错误,而且由于计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备,在一些电磁干扰性强的测试场所,可能无法专门对其作电磁屏蔽,从而导致采集的数据失真,针对上述问题,急需采用新的

16、技术解决。 通用串行总线(Universal Serial Bus)的出现,很好的解决了以上这些问题。它是由Compaq、Hp、Intel、Lucent(朗讯)、Microsoft、NEC和Philips七家公司联合推出的新一代标准口总线,该总线是一种连接外围设备的机外总线,最多可连接127个设备,为微机系统扩充和配置外部设备提供了方便,不仅解决了I/O插口不够的问题,而且建立了一条连接和访问外设的方法,这些方法可以有效的减少总体成本,减少硬件冲突。因此,我们能够利用USB总线接口比较容易的实现低成本、高可靠性的多点数据采集系统。由于USB的种种优点,被越来越多的厂商和用户所接受,出现了USB

17、打印机、摄像机等产品。尽管目前USB接口的应用主要集中在电脑的周边外设,但是USB产品进入工控领域将是必然的趋势,所以本课题的研究是具有一定的现实意义和经济意义的。1.2 USB技术发展趋势及优缺点分析 国内外应用现状及发展趋势USB设备的应用目前在国外处于高速发展阶段,国外有些企业也已经推出了很多能适应不同条件、不同精度要求等情况的USB数据采集系列产品。典型的是美国国家仪器(National Instruments,Nl)公司研制的一系列USB数据采集卡,Nl于2005年8月推出了八款最新USBZ.O高速数据采集设备,从而扩展了其业界领先的高性能USB数据采集设备USB一9000系列产品,

18、实现了高达800ks/s的采样率。此后新推出的USB2.0高速设备包含免费的交互式数据记录软件,以供分析之用,可以实现数据记录,并将输出结果导入像Microsoft Excel的电子数据表程序。凭借总线驱动、即插即用的连接功能,该系列新款设备使得NIUSB一9000高品质的USB数据采集设备系列如虎添翼,但是Nl公司的USB数据采集卡系列产品的价格都比较昂贵。 USB设备在国内的应用己经起步,并速度快,水平不断提高.在几年前,对于国内大多数普通的计算机用户来说,USB还是个新鲜的名词,那时,市面上能够买到的USB设备是非常有限的,基本局限于常用的计算机外设,比如说USB光驱、打印机等。随着US

19、B体系结构的逐步完善,USB被越来越多的厂商所支持和推崇,也将应用到更广的领域,市场上国内的主要产品有北京优采公司UA300系列、四川拓普公司的UDAQ、UBOX、UCARD等系列。国内在USB数据采集、USB工业控制等领域已经取得了一定的成果,在现实中得到成功的应用。USB2.0协议,数据传输速率高达480MbPs,如此高的传输速率能用于1.O的传输速率所无法满足的地方,如高实时性要求的工业设备控制、动态图像实时传输等,随着时代的进步和技术的发展,USB必将在更广阔的领域得到更深层次的应用。国内有一些厂商为USB设备的研发提供软硬件支持,这在很大程度上降低了开发难度,减少了开发时间,提高了开

20、发质量和效率USB2.O接口凭借低成本、高性能、可靠稳定、方便灵活的特点,将逐步成为微型计算机的主要输入输出方式。总而言之,目前国内对USB数据采集设备的研制己经取得了可喜的发展,但是与国外相比,在开发和应用的深度和广度而言,还有一段距离,现场数据采集要求比较高的场合多是采用的国外产品。因此,随着计算机对USB接口的普及和实际应用中对数据采集卡要求的提高,利用USB2.0协议规范开发符合多种场合的数据采集系统,以及此领域内先进产品的国产化等都成了巫待解决的现实问题。1.2.2 USB的优势和局限性 USB支持各种PC与外设之间的连接,还可实现数字多媒体集成。现在的PC几乎都配备了USB接口,很

21、多操作系统都增加了对USB的支持,USB总线具有以下优势: 1)设备安装和配置容易。USB设备支持即插即用,安装USB设备不必开机箱,加减已安装过的设备,完全不用关闭计算机。所有USB设备支持插,系统对其进行自动配置,不再占用中断资源或者DMA资源,彻底抛弃去的跳线和拔码开关设置。USB为接缆和连接头提供了单一模型,解决了越来越多造成的插槽紧张问题。 2)接口数目多。每个USB主机通过USB集线器,可以同时挂接最多个外围设备,有效地解决了多点数据采集系统I/O口不够用的问题。 3)数据传输速度比一般串行总线(如RS232,RS485等)快。USB1.1的接口最快可以达到12MbPs,可以满足绝

22、大多数多点数据采集系统的要求,键盘、鼠标、Medem、游戏手柄以及摄像头等设备的要求。在PC主机和采统都具备支持USB2.0标准的接口芯片时,最快可以达到48OMbPs,可以满速数据采集的要求。4)有总线电源保护。系统连续3ms没有总线活动,USB自动进入挂起状态。5)性价比的优势。具有廉价的电缆和连接头,并以低廉的价格提供传率为1.5Mb/s的子通道,将外设和主机硬件进行了最优化的集成,促进了低外设的发展。6)支持四种传输模式。这四种传输模式分别为:中断传输、批量传输、步传输和控制传输。尽管USB的应用领域越来越宽,但是它也有其发展的局限性,其局限要表现为: 1)距离的限制。USB协议规定单

23、条USB的长度不能超过sm,同时可过集线器的方法将其进行连接,最多可以接入5个集线器将线缆距离延30m。对于一般的应用场合,这一距离已经基本能够满足用户的需求,但USB接口引入特殊的应用场合时便显得有些力不从心。2)协议复杂,开发难度大。3)测试困难大。1.3 课题研究的主要内容鉴于USB总线的发展以及它的诸多优点,本课题主要研究数据采集系计算机通过USB接口通讯的基本方法。在课题研究结果的基础上,可以形何形式的USB数据采集系统。主要内容如下:l)掌握USB总线的协议及USB总线系统的组成结构。2)研究USB总线接口硬件实现的方法、需要的芯片及硬件电路。设计要求的USB系统,并在USB系统的

24、基础上形成基于USB接口的多点数据系统。3)完成USB固件程序的开发,研究基于USB总线接口的设备固件程方法。完成数据采集系统及USB接口的固件编程。4)掌握计算机USB外围设备驱动程序开发工具及编程方法,完成用于数据通讯的USB设备驱动程序。5)完成用户界面程序的编写,并对系统的软件进行测试。3天津职业技术师范大学2010届本科生毕业设计2 基于USB总线数据采集系统的整体设计基于USB总线数据采集系统包括两部分:系统的硬件设计和软件设计。硬件部分完成数据采集功能,并将采集的数据送至USB控制器,再通过USB接口将数据传送给PC机;软件部分包括USB固件程序、设备的驱动程序和用户界面程序。整

25、体设计思路为:用户通过主机端的应用软件下载USB固件代码,并向采集系统发出读写命令以及对A/D的设置数据;采集系统收到命令后,根据所接收的设置开始对外部的模拟信号进行A/D变换,转换后的数据由USB传输至计算机,在用户程序中实现数据现的接收、存储和显示。下面以USB数据采集系统须达到的技术指标来分别介绍这两部分的设计构想和原理。2.1 USB数据采集系统的性能指标(一) 接口方式:USB总线接口(支持USB2.O接口标准、可热插拔、即插即拔);(二) 输入通道:8个通道(在此设计中每次选中一个通道);(三) 测量信号:工业现场各类传感器的输出电压、电流信号;;(四) 信号的输入范围:0-5V

26、;(五) A/D分辨率:8Bit;(六) 用户程序要实现数据的接收和显示功能;2.2 USB总线数据采集系统的硬件构成 基于USB总线数据采集系统的硬件部分主要由以下几部分组成:A/D模数转换芯片、USB2.0主控器、电源设计。实现多通道数据采集,多通道输入数据经过A/D的多通道数据选择并转换,由USB接口控制芯片的IN端点读入缓冲区,再由其OUT端点输出至PC机。其系统的数据采集结构图如图2.1所示:系统的工作流程为:通道1至通道8的采集信号经多路转换器进行选择,被选中的通道信号输入模数转换器(AD0809)转换为数字信号,用C8051F320的I/O引脚来控制AD0809,进行读数据。PC

27、的用户应用程序发出接收数据的请求,并有设备发出相应的响应决定是否开始传输数据。当系统上电后,系统自动识别设备后加载驱动程序,USB控制器的固件程序通过USB电缆从主机自动下载到其内部程序RAM中,并经过列举和重列举后开始正常工作,计算机可以通过用户软件取得系统的各种配置信息。2.3 USB数据采集系统的软件设计USB数据采集系统的软件部分一共包括三部分:芯片的固件程序、设备的驱动程序和用户界面程序,这三部分的层次关系如图2.2所示:图2.2 系统软件的层次图 USB固件程序是USB数据采集系统中处于最底层的设备端。它主要完成对USB芯片C8051F320、A/D转换以及整个电路的初始化,将采集

28、的数据送入C8051F320的缓冲区发给PC机,接收并执行PC发送的指令。它负责处理PC机发来的各种USB设备请求,并与外围电路进行数据传输。USB驱动程序给用户界面程序提供了软件和硬件平台连接的通道。USB驱动程序的开发工具有DDK(Driver Development Kit)和DriverWorks,系统中的USB驱动程序是DriverWorks开发的,利用VC+6.0的强大编程平台,为用户界面程序提供了控制USB接口芯片的句柄。应用程序也称为用户界面程序。应用程序的功能主要是对采集的数据进行显示,并根据采集的数据进行曲线图的绘制,显示某指标的动态曲线。开发用户界面程序可以选择不同的开发

29、软件,如VC+6.0,VB,Delphi,C+Builder等等,本系统中的应用程序软件是用VB开发的,其特点是软件安装和操作都很简便。3 USB 数据采集系统的硬件设计本章主要完成USB数据采集系统的硬件电路的设计,硬件电路设计部分主要包括多通道A/D转换电路、USB2.O主控制器(C8051F320)外围电路设计C8051F320与模数转换器AD0809的连接、电源设计部分等。3.1 多通道A/D转换电路的设计 多通道A/D转换电路是把8个通道的信号进行选择,每次只选中一个通道的信号传送至AD0809中,在此设计中采用的是单片机的3个I/O口,与AD0809的三个地址口(A,B,C)相连,

30、用这三个引脚来控制选择哪一路通道;IN0IN7共8个数据源与8个通道相连,D0D7与单片机的I/O口连接,其中74F74给AD0809提供转换脉冲。其电路连接图如3.1所示:图3.1 多通道A/D转换电路图3.2 USB2.0 主控芯片的选择及介绍3.2.1 随着USB的应用日益广泛,各个开发商也相继推出了各自的符合USB相应协议的USB控制器芯片,尽管各种芯片都是严格遵循USB的相关协议,但不同的商推出的产品还是有着一定的性能和用途差异,各种USB控制器芯片的结构可分成3种: 1)专为USB设计的芯片。这类控制器是为USB应用专门设计的芯片,能够使USB的应用达到最优化。 2)与现有的芯片兼

31、容。这类控制器芯片与现有的芯片兼容,这样开发者己经熟悉现有的芯片结构和开发指令,因此开发起来会比较容易。最常见的USB控制器都是与8051微处理器兼容。3)需要外部微处理器接口的芯片。这类USB控制器只处理USB通信,而且必须由外部的微处理器来控制,因此这类控制器需要两个芯片,而其他种类的USB控制器则只需一个芯片(MCU和USB控制器在同一个芯片上)。3.2.1根据设计的需要,在此选用的USB控制芯片是silicon的C8051F320芯片。符合USB规范版全速(12Mbps)或低速bps) 集成时钟恢复电路;无需外部晶体支持8个端点1KB USB缓存集成收发器;无需外部电阻,该芯片性价比较

32、高。另外C8051F320提供了设备的“软”解决方案,使得设备可以无限制的配置和升级。开发包提供的硬件和软件己经为开发者做了大量开发工作,开发者只需在特定的地方加入自己的功能相关的代码即可,开发极为方便。3.2.2 USB控制芯片C8051F320高速8051微控制器内核: 流水线指令结构;70%的指令的执行时间为一个或两个系统时钟周期 速度可达25MIPS(时钟频率为25MHz时)扩展的中断系统 存储器: 2304 B内部数据RAM(1K+256+1K USB FIFO)-16KB FLASH;可在系统编程,扇区大小为512字节 数字外设: 25/21个端口I/O;均耐5V电压,大灌电流硬件

33、增强型SPI、增强型UART和SMBus串口4个通用16位计数器/定时器16位可编程计数器/定时器阵列(PCA),有5个捕捉/比较模块使用外部时钟源和 PCA 或定时器的实时时钟方式 时钟源: 内部振荡器:0.25%的精度(时钟恢复被使能时)。支持USB和UART操作 外部振荡器:晶体、RC、C、或外部时钟 可在运行中切换时钟源,适用于节电方式。3.2.3 通用串行总线控制器通用串行总线控制器(USB)符合USB2.0规范,可以全速或低速工作,集成了收发器和端点FIFO RAM。 共有8个端点: 一个双向控制端点 (端点0) 和三对输入/输出端点 (端点1-3 输入/输出)。 XRAM中有1K

34、B的存储块被专门用作USB FIFO空间。该FIFO空间被分配给端点0-3;端点1-3 的FIFO可以被配置为输入(IN)、输出(OUT)或输入/输出(分割模式)。最大的FIFO大小为512字节(端点3)。USB可以工作在全速或低速方式。 片内4倍时钟乘法器和时钟恢复电路允许使用内部高精度振荡器作为USB时钟源,实现全速和低速通信。外部振荡器也可以与4倍时钟乘法器配合使用来产生USB时钟。CPU时钟源与USB时钟相互独立。 USB收发器符合USB2.0规范,并包含内部匹配和上拉电阻。上拉电阻可以被用软件使能/禁止,可以根据软件选择的速度设置(全速或低速)出现在D+或D-引脚。图3.4 USB控

35、制器原理框图3.2.4 USB控制芯片及其外围电路设计图 USB控制器电路图3.3 显示模块显示系统是单片机不可或缺的环节,它为单片机提供了直观的观察环境。单片机显示模块应该能够做到快速简练,并且有语义明确,这对使用单片机具有很关键的作用。本实验系统涉及到两种显示方式,液晶显示和LED数码管显示,这两种显示方法在生活中被广泛的应用,学习这两种显示方法对于单片机系统的开发与设计有很大的意义。3.3.1 LCD概述带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*1

36、6点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。3.3.2 基本特性 低电源电压(VDD:+3.0-+5.5V) 显示分辨率:12864点 内置汉字字库,提供8192个1616点阵汉字(简繁体可选) 内置 128个168点阵字符 2MHZ时钟频率 显示方式:STN、半透、正显 驱动方式:1

37、/32DUTY,1/5BIAS 视角方向:6点 背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10 通讯方式:串行、并口可选 内置DC-DC转换电路,无需外加负压 无需片选信号,简化软件设计 工作温度: 0 - +55 ,存储温度: -20 - +603.3.3 引脚定义LCD12864模块的20个引脚定义如下:1.Vss逻辑电源地2.VDD逻辑电源正5v3.V0 LCD驱动电压4.RS 数据/指令选择:高电平为数据,低电平为指令5.R/W读/写选择:高电平为读数据,低电平为写数据6.E读写使能,高电平有效,下降沿锁定数据7.DB0数据输入输出引脚8.DB1数据输入输出引脚9.D

38、B2数据输入输出引脚10.DB3数据输入输出引脚11.DB4数据输入输出引脚12.DB5数据输入输出引脚13.DB6数据输入输出引脚14.DB7数据输入输出引脚15.CS1片选择号,低电平时选择前64列16.CS2片选择号,低电平时选择后64列17.RET复位信号,低电平有效。18.VEE输出15v电源给V0提供驱动电源19.A背光电源LED正极20.K背光电源LED负极3.3.4 基本电路图与时序图 基本连接电路图如下图3.6图3.6 串行连接时序图图3.7第一字节:作用是控制数据:其格式是:11111ABC。其中:A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD

39、;B为数据类型选择:H表示数据是显示数据。L表示数据是控制指令;C固定为0第二字节:表示数据的高4位,格式是DDDD0000第三字节:表示数据的低4位,格式是0000DDDD3.4 电源模块图3.8在此系统中,一共需要两种大小不同的供电电源,一个是AD0809需要+5V供电电源,在此我们选用效率比较高的LM2576-ADJ的芯片来设计电路电源,电路如图。同时电路中USB模块也可直接利用USB总线上的+5V电源,不需要转换;C8051F320芯片的工作的电压是+3.3V,而系统使用总线供电,因此就需要电源转换,以满足系统中各个部分所需要的电源,下面介绍由+5V转换为+3.3V电源的设计。电路中采

40、用AS1117-3.3的LDO芯片,能提供最大500MA的电路,完全可以满足电路的基本功能。为了保证C8051F320的芯片中模拟与数字地分开,在电源的输入端用2欧姆的电阻,来分隔电路的电源部分为了保证电路中采用外部电源供电,由于电源电压可以超过5V,采用短路帽P1隔开两部分电源。图3.94 USB数据采集系统的软件设计 USB数据采集系统的软件部分一共包括三部分:芯片的固件程序、硬件的驱动程序和用户界面程序,本章具体介绍这三部分的内容。4.1 固件程序的设计4.1.1 固件基础 对于主机驱动和人机接口设备(HID)通信,设备必须使用相应的固件程序来满足一定的要求,通过固件程序的调度,主机才可

41、以得到设备的描述符以及完成端点数据的传输。 (1)固件与报表设备的描述符必须识别设备为一个HID设备,除了缺省的控制流程,固件必须支持中断IN端点。另外,固件程序中要包括设备描述符,它定义了传送和接收设备数据的格式。要发送数据,固件必须支持Get_Report控制传输和中断IN传输;要接收数据,固件必须支持Set_report控制传输和中断OUT传输。HID设备传输的数据必须有一个定义过的报表格式,在报表里描述了数据的大小和内容。HID设备可能支持一个或多个报表。报表中的一个值定义该报表为一个输入报表、输出报表或特征报表。输入报表发送数据到主机,输出报表从主机接收数据,特征报表可以在两个方向传

42、输数据。特征报表总是使用控制传输。识别HID设备 由表4.1 HID描述符 表4-1给出了HID描述符。报表描述符是一种类描述符。主机通过发送Get_Descriptor请求来获取这个描述符,默认的报表数值为00H。它定义了执行设备功能的数格式和使用方法,需要有足够的灵活度,其格式应该简单,这样当传输数据时就不会占用太多的存储空间和总线时间。报表描述符的内容和长度随设备而不同,可以而简洁,也可长而复杂。 (3)HID特定请求HID除了能支持11个标准控制请求,还支持6个特定请求。表4.2列出了些请求。所有的HID必须支持Get_RePort请求,所有引导设备都必须支持Get_Protocol和

43、Set_Protocol请求,其他请求是可选的。但是,如果设备没有中断OUT端点,则需要支持Set_Report来从主机接收数据。不支持特征报表的设备只使用中断传输来发送数据,设备可能不会用到Get_Report请求,但为了遵循协议,必须支持这个请求以防止主机可能使用Get_Report。表4.1 HID描述符偏移量字段大小(B)描述0bLength1描述符表示的长度1bDescriptor121h表示HID类2bcdHID2HID规范发布号4bCountyCode1识别本地硬件的数字化表示5bNumDescriptor1支持的从属类描述符的数目6bDescriptorType1类描述符类型7

44、wDescriptorType2报表描述符的长度9bDescriptorType2识别描述符类型的常数。对于有多于一个描述符的设备是可选的11wDescriptorLength2描述符的长度,对于有多于一个描述符的设备是可选的 表4.2 HID特定请求请求号请求数据源值指针数据长度数据是否需要01hGet_Report设备报表ID中断报表长度报表是02hGet_Idle设备报表ID中断1闲置时间否03hGet_Protocol设备0中断1协议引导设备需要04hSet_Report主机报表ID中断报表长度报表否05hSet_Idle主机闲置时间中断0无否06hSet_Protocol主机协议中断

45、0无引导设备需要(4)数据传输 当枚举完成以后,主机识别设备为HID设备,建立支持端点的流程,并知道了发送和接收数据所使用的报表格式。主机使用控制传输来发送和接收包括其他配置数据或其他没有严格时间要求的数据特征报表。主机使用中断传输,在输入和输出报表里发送和接收周期或低延迟的数据。设备固件代码必须有补充的代码来对主机的请求做出响应。当传输数据到主机时:在一个中断或控制传输中,发据。对中断做出响应,设备固件需要在它的传输缓冲区里放好请求的数据,然后配置成响应中断水请求。在设备收到一个中断IN请求时,它就把数据传输给主机,同时,新的待传输的数据也将被送入缓存区中,等待下一次传输。如果设备没有数据要

46、发送,则发送一个NAK来响应请求。当从主机接收数据时:芯片的结构和描述符决定了设备的中断OUT流程是否可用。主机总是用Set_Report控制请求来发送特征报表。如果设备有一个中断OUT端点并需要接收低延迟数据的话,那么端点应该配置成接收报表数据。当新的数据到达时,中断通常会通知设备这个事件,固件的中断服务程序做相应的处理工作。如果设备没有中断OUT端点,则固件必须检测Set_Report控制请求并处理请求里的报表数据。芯片也必须做同样的工作来接收特征报表。使用控制传输比中断传输要复杂。(5)固件的执行 对于所有的USB人机接口设备似ID)来说,它们的应用都遵循着同样的启动过程,这个过程如图4

47、.1所示。 l)设备的接入 当USB总线设备连接到总线上时,它虽然被供电了,但这时它并不起任何作用,而是在等待着总线复位。 2)总线复位 当有新的USB总线设备接入时,主机检测到这个新USB总线设备并复它。总线复位过程见图4.2所示。 3)枚举主机发送一个后跟创包的SETUP包,这个包从地址O读取设备描述符。当主机收到描述符后,它就会给该设备分配一个新的USB地址。然后设备与主机进行通信,同时主机继续从设备描述符、配置描述符及其他的描述符中得知设备的信息。通过从设备返回的信息,主机能知道该设备支持的端点数。这时,枚举过程就完成了。具体过程见图4.3所示。4)数据的传输USB总线通过位于同主机上

48、的客户软件相对应的缓存区和USB总线设备上的端点之间的管道来传送数据。在消息管道中传输的数据具有USB总线定义的结构,但是USB总线也允许在消息数据负载中传送某个特定设备结构的数据。USB总线规定对于任一种管道类型,数据经过总线时要进行分组,但是最终对一个总线操作的数据负载中传送的数据进行分析和解释工作则要由客户软件和使用该管道的功能模块来完成。4.1.2 C8051F320 USB固件程序fw.c是固件运行的主程序文件,负责处理主机发出的各种USB设备请求,里面包含着函数的实现的代码。程序首先是全局变量的初始化,如下:/初始化全局状态变量Sleep=FALSE; /使睡眠状态无效Rwuen=

49、FALSE; /使远程唤醒无效Selfpwr=FALSE; /使自供电无效GotSUD=FALsE; /清除得到装载数据标志位然后初始化设备,代码如下:/初始化用户设备TD_Init();USB的描述符的定位代码,因为没有外部程序存储器,描述符重定位代码:/下面的代码是分配描述表PDevieeDser=(WORD)&DevieeDser;PDevieeQualDser=(WORD)&DevieeQualDser;PHighSPeedConfigDser=(WORD)&HighSPeedConfigDser;PFullSPeedConfigDser=(WORD)&FullSPeedConfigD

50、ser;PStringDser=(WORD)&StringDser;设备描述符重新定位以后,CY7C68O13循环调用源代码,如果有Setup包则执行相应的处理函数,否则执行数据传送函数。如下:Whlle(TRUE) /主循环if(GotSUD) /等待SUDAVSetupCommand(); /指向setup指令GotSUD=FALSE; /清除SUDAV标志位 下面分别介绍主程序中的两个函数:TD_Init()函数和TD_Poll()函数l)TD_Init()函数TD_Init()是C8051F320的初始化程序,它是在重新枚举和开始任务分配前调用的。其初始化工作主要完成以下内容:设置的C

51、PU的时钟频率和slaveFIFO接口时钟频率,均为48MHz设置传输方式为BULK方式,并设置相关的端点的传输方向其程序代码如下:Void TD_Init(void) /开始时调用 /设置CPU的时钟为48MHzCPUCS=(CPUCS&bmCLKSPD)/bmCLKSPDI); /设置slaveFIFO接口时钟为48MHzIFCONFIG=0x40;EP1OUTeFG=oxAo; /EP1为bulk传输方式,方向:输出EPImCFG=OxE2; /EP1为bulk传输方式,方向:输入SYNCDELAY;EPZCFG=oxE2; /EP2为bulk传输方式,方向:输入,双缓冲SYNCDELA

52、Y;EP4CFG=0x20; /EP4未使用SYNCDELAY;EP6cFG=0xA2; /EP6为bulk传输方式,方向:输出,双缓冲SYNCDELAY;EPSCFG=0x20; /EP8未使用SYNCDELAY;EPZBCL=0x80;SYNCDELAY;EPZBCL=0x80;SYNCDELAY;AUTOPTRSETUP=0x01; /使能双缓冲自动指针Rwnen=TRUE; /使能远程唤醒2)TDPoll()函数TDPoll()函数是用户自己要实现功能函数,在这个函数中,系统实现了将数据写入输出端点缓冲区内,等待PC机的读取。在USB循环调用的过程中不断执行用户程序,不断进行数据的传输

53、。其程序代码如下:Void TD_Poll(void) /当设备闲置时重复调用Int i;BYTExdata*addr;Addr=MEMORY;Read_data(void);if(!(EP2468TAT&bmEP2FULL) /检查EPZ数据是否满AUTOPTRHI“MSB(&EP2FIFOBUF):AUTOPTRLI=LSB(&EP2FIFOBUF); /通过自动指针将EPZIN缓冲区的数据传送给EP6OUTfor(i=Ox0000:i512;i+)addri=IN2BUFi;OUT6BUF11=addri;EP2BCH=MSB(512);SYNCDELAY;EP2BCL=LSB(512)

54、; /重新配置EP2在TD_poll()函数中执行读取数据传输程序,首先判断缓冲区是否满标志,如果不满,则开始读取8位数据,也就是刀D的数据,并把缓冲区的地址指针加1,保证数据不会被后来的数据覆盖,并保存在下一个地址中。读完512个数据后,缓冲区满,这时,可以开始传送数据,由于USB总线上是以字节为单位传输数据,而数据是按照字来记数,因此,把读取的数据记数器放大两倍,然后把字节数变量的高字节和低字节分别赋给端点2的传输字节计数器EPZBCH和EPZBCL,完成该过程之后,程序根据主机单位请求,开始自动传送数据。3)数据读取函数在硬件电路中采用USB控制的方式读数据,即用C8051F320的PA

55、3引脚来控制C8051F320的OE引脚,OE引脚为低电平时AD0809将转换结果锁存,C8051F320则可读取转换结果;OE引脚为高电平时无效。数据读取函数名Read_data(void),主要完成C8051F320将AD0809转换好的数据读进来,其程序为:Read_data(void) /读AD的转换结果. PA3=0; /将PA3引脚置为低电平Int i;BYTExdata*addr;Add=MEMORY;if(flag!=512) /检查EPZ数据是否没满AUTOPTRHI=MSB(&EP2FIFOBUF);AUTOPTRLI=LSB(&EP2FIFOBUF);addrflag=P

56、B;IN2BUFflagl=addrflag*2一5; /将数据乘以2减5Flag=flag+2:elseflag=O; /标志设为0EP2BCH=MSB(512);SYNCDELAY;EP2BCL=LSB(512); /重新配置EPZPA3=1;flaga=0;4.2 驱动程序设计主机与外设通过USB接口的通信是通过驱动程序来实现的。在Windows环境中,定义了Windows设备驱动程序模型,其中设立了两种模式,即用户模式和内核模式。应用程序只能工作在用户模式下,而驱动程序大多运行在内核模式下。驱动程序采用了分层结构。USB总线设备驱动程序必须遵循由Microsoft为Windows98及

57、其以后版本所定义的Win32驱动程序模型。这些驱动程序就是WDM(Windows Driver Model),其扩展名一般为.sys。由于它是内核态程序,采用了分层处理的方式,因此,不需要自接和硬件打交道。与其他的底层驱动程序一样,WDM驱动程序负责在一个特权层实现应用程序和操作系统的通信。一个WDM驱动程序可以允许或否定一个应用程序对一个设备提出的访问。例如,一个游戏杆的驱动程序可以允许任一个应用程序来使用一个游戏杆,或者它可以为某个应用程序而保留以供其独占使用。Windows为其他底层设备驱动程序和WDM驱动程序所保留的能力还包括对硬件中断的响应和DMA传输。Windows系统提供了PCI

58、、PnPISA、USB和IEEE1394总线驱动程序。PCI总线驱动程序枚举和配置PCI总线上的设备。PnPISA总线驱动程序对可以使用即插即用配置的ISA设备进行枚举和配置。USB总线驱动程序则用于枚举和控制USB总线。主控制器驱动程序是访问两种类型的USB总线设备的标准。USB总线客户驱动程序可以通过使用IOCTL,由USB类驱动程序来访问USB总线设备。IEEE1394总线驱动程序用于枚举和控制IEEE1394高速总线。USB总线设备驱动程序使用标准Windows系统USB类驱动程序访USBDI(USB驱动程序接口)。USBD.sys文件就是Windows系统中的USB类驱动程序,它使用

59、UHCD.sys来访问通用的主控制器接口设备,或者使用OpenHCI.sys访问开放式主控制器接口设备。USBHUB.sys是根集线器和外部集线器的USB总线驱动程序。在PCI枚举器发现了USB总线主控制器之后,它会自动装入相关的驱动程序。这也就是本章第一节中所要说明的,只要启动了主板CMOS中的USB总线功能,就会在设备管理器中见到“通用串行总线”的标记和字样。4.2.2 WDM和USB驱动程序的介绍WDM(Windows Driver Model)是微软提出的视窗操作系统的驱动模型,支持分层管理和面向对象。图4.3是WDM分层结构的示意图。图4.3 WDM分层结构示意图 在示意图中,处于最

60、底层的是总线驱动程序。总线驱动程序由硬件厂商提供,管理总线上设备的识别和操作,如PIC总线。设备驱动程序中可以有下层过滤器驱动层,也可以有上层过滤器驱动程序,他们是可选的,可以实现特定的操作如防火墙就是一种过滤器驱动程序,它可以对外部系统的访问进行限制。功能驱动程序就是通常意义上所说的设备驱动程序。驱动程序间的访问是通过IRP(I/O Request Packet)来传递的。I/O管理器给最上一层驱动程序发送IRP,该驱动程序若能处理就直接返回,否则将其传给下一层,以次类推,最后到达总线驱动程序。Windows2000是基于对象管理,每一个驱动对应于一个设备对象。有设备堆栈,设备堆栈指导着如何一层一层向下传递IRP。WDM驱动程序的入口例程是DriverEntry,这是需要实现的第一个例程。在驱动程序加载后就会马上执行例程DriverEntry。DriverEn

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!