VC编程实现与USB设备通信.docx
《VC编程实现与USB设备通信.docx》由会员分享,可在线阅读,更多相关《VC编程实现与USB设备通信.docx(50页珍藏版)》请在三一办公上搜索。
1、第1章绪论1.1USB简介USB是由世界著名计算机和通信公司等共同推出的新一代接口标准,全称为Universal Serial Bus(通用串行总线)1,是一种快速、灵活的总线接口。它是为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准。USB应用十分广泛,并具有下述优点:1、适用于多种外设,使它不需要为不同的外设准备不同的接口和协议;2、Windows能自动检测到USB设备的热插拔,并自动配置;3、PC机上的接口线非常紧缺,而USB设备并不需要用户设置端口故无论从用户使用方便性,或从对资源的占用方面看,USB都很优秀;4、当接入一个USB设备时,全速USB接口
2、可达12Mbit/s。考虑到状态、控制和出错信息,最大理论速度仍可达到9.6Mbit/s,这是其他串行接口协议所不能比拟的,且USB也支持1.5Mbit/s的低速传输。5、USB接口芯片价格低廉,这也大大促进USB设备的开发与应用。在USB出现之前,计算机典型接口有并行口、串行口、鼠标口、键盘口、显示器口,及各种卡式接口等,与这些接口对应的有各种不同的电缆,在传输速度方面,这些接口都存在速度偏低的问题。在技术方面,这种设计容易产生I/O冲突,中断不够用,以及对于每一种新的外设都必须设计新的接口卡等缺点。当今的计算机外部设备,都在追求高速度和高通用性。USB接口适应了这种要求,并以其速度快、使用
3、方便、成本低等优点,迅速得到了众多PC厂商和半导体厂商的大力支持,外设向USB过度成为必然趋势。1.2USB驱动程序的意义如果PC主机不知道如何与USB外设通信,那么这个USB外设一点用处都没有,人机接口设备(HID)2类是Windows完全支持的USB设备类型中的一种,应用程序可以使用操作系统内设置的驱动与HID通信,但与HID通信不像打开一个端口,设定几个参数,然后就可以读写数据那么简单,在应用程序能与HID交换数据之前,它先要找到设备,获取有关它的报告信息。为做到这些,应用程序必须通过访问通信API函数,使位于上层的应用程序与位于下层的设备驱动程序进行数据交换。应用程序可以使用任何能访问
4、API函数的程序语言,VC+是一种能访问API函数的功能强大的语言,因此,我们应用Visual C+6.0环境下编写与USB设备通信的Windows程序。1.3VC+软件的介绍应用基于MFC AppWizard的应用程序。MFC (Microsoft Foundation Class Library) 中的各种类结合起来构成了一个应用程序框架,它的目的就是在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft
5、Visual C+提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。1.4系统方案设计上位机界面应用VC+6.0软件来编写,为了简单适用,在创建工程时采用对话框类型。一个好的应用程序首先要有好的用户界面,看起来赏心悦目,使用起来简单、方便。显示界面上的各个元素需要和USB设备上的元件摆放位置相对应。把要完成的一系列功能的显示元素分成不同的模块来进行程序的编写,每一个模块分别完成一种功能,这样既方便检查程序,也方便在通
6、信发生错误时的对错误进行分析。为了实现PC机对USB设备的识别,上位机端需要有一个USB设备的驱动程序来识别和支持USB设备,否则PC机将无法识别USB设备。这里选用DriverStudio软件来编写,它能生成一个简单的驱动程序的框架,根据需要,可以在此基础上进行更深层的开发。1.5预期结果通过上位机软件和驱动程序的编写实现以下功能:1、完成上位机软件的编写,并可以在设备没有连接时显示连接错误。2、完成驱动程序的编写,实现上位机能发现USB设备,并使上位机能正确配置设备。同时在显示界面上显示出找到设备。3、实现双向传输。在上位机软件中可以控制USB设备中的相应显示,同时可以接收到USB设备传回
7、的消息,并在显示界面上显示。达到一个PC机与USB设备信息的交互,完成通信。4、利用VC编程实现对计算机底层硬件的操作,培养在此方面工程开发的能力。第2章USB协议2.1USB系统的使用分类及系统的描述USB设计的初衷是针对桌面电脑而不是应用于可移动的环境下的。软件体系通过对各种主机控制器提供支持以保证将来对USB的扩充3。USB是一种电缆总线,支持在主机和各式各样的即插即用的外设之间进行数据传输。由主机预定的标准的协议使各种设备分享USB带宽,当其它设备和主机在运行时,总线允许添加、设置、使用以及拆除外设。USB系统的描述:一个USB系统主要被定义为三个部分:USB的互连、USB的设备、US
8、B的主机。USB的互连是指USB设备与主机之间进行连接和通信的操作,主要包括以下几方面:(1)总线的拓扑结构:USB设备与主机之间的各种连接方式;(2)内部层次关系:根据性能叠置,USB的任务被分配到系统的每一个层次;(3)数据流模式:描述了数据在系统中通过USB从产生方到使用方的流动方式;(4)USB的调度:USB提供了一个共享的连接。对可以使用的连接进行了调度以支持同步数据传输,并且避免的优先级判别的开销。USB的设备如下所示:(1)网络集线器,向USB提供了更多的连接点;(2)功能器件:为系统提供具体功能,如ISDN的连接,数字的游戏杆或扬声器。USB设备提供的USB标准接口的主要依据:
9、(1)对USB协议的运用;(2)对标准USB操作的反馈,如设置和复位;(3)标准性能的描述性信息;USB传输方式:USB总线属一种轮讯方式的总线,主机控制端口初始化所有的数据传输。每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端
10、也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个通道。存在两种类型的通道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且通道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。USB中有一个特殊的通道缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。2.2USB物理接口的电器特性2.2.1USB物理接口USB传送信号和电源是通过一种四线的电缆,两根线是用于发送信号。存在两种数据传输率:图2.1USB物理接口(1)USB的高速信号的比特率定为12M
11、bps;(2)低速信号传送的模式定为1.5Mbps;电缆中包括VBUS、GND二条线,向设备提供电源。VBUS使用+5V电源。USB对电缆长度的要求很宽,最长可为几米。通过选择合适的导线长度以匹配指定的IR drop和其它一些特性,如设备能源预算和电缆适应度。为了保证足够的输入电压和终端阻抗。重要的终端设备应位于电缆的尾部。在每个端口都可检测终端是否连接或分离,并区分出高速,或低速设备。2.2.2电源主要包括两方面:(1)电源分配:即USB的设备如何通过USB分配得到由主计算机提供的能源。每个USB单元通过电缆只能提供有限的能源。主机对那种直接相连的USB设备提供电源供其使用。并且每个USB设
12、备都可能有自己的电源。那些完全依靠电缆提供能源的设备称作“总线供能”设备。相反,那些可选择能源来源的设备称作“自供电”设备。而且,集线器也可由与之相连的USB设备提供电源。(2)电源管理:即通过电源管理系统,USB的系统软件和设备如何与主机协调工作。USB主机与USB系统有相互独立的电源管理系统。USB的系统软件可以与主机的能源管理系统结合共同处理各种电子元件如挂起、唤醒,并且有特色的是,USB设备应用特有的电源管理特性,可让系统软件和控制其电源管理。2.2.3总线协议主机控制端口初始化所有的数据传输。每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送
13、一个描述传输运作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个通道。存在两种类型的通道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且通道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。
14、多数通道在USB设备设置完成后即存在。USB中有一个特殊的通道缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。事务预处理允许对一些数据流的通道进行控制,从而在硬件级上防止了对缓冲区的高估或低估,通过发送不确认握手信号从而阻塞了数据的传输速度。当不确认信号发过后,若总线有空闲,数据传输将再做一次。这种流控制机制允许灵活的任务安排,可使不同性质的流通道同时正常工作,这样多种流通常可在不同间隔进行工作,传送不同大小的数据包。1、USB设备的安装所有的USB设备都是通过端口接在USB上,网络集线器知道这些指定的USB设备,集线器有一个状态指示器指
15、明在其某个端口上,USB设备是否被安装或拆除了,主机将所有的集线器排成队列以取回其状态指示。在USB设备安装后,主机通过设备控制通道激活该端口并以预设的地址值给USB设备。主机对每个设备指定唯一的USB地址。并检测这种新装的USB设备是集线器还是功能部件。主机为USB设备建立了控制通道,使用指定的USB的地址和零号端口。如果安装的USB设备是集线器,并且USB设备连在其端口上,上述过程对每个USB设备的安装都要做一遍。如果安装的设备是功能部件,那么主机中关于该设备的软件将因设备的连接而被引发。2、USB设备的拆卸当USB设备从集线器的端口拆除后,集线器关闭该端口,并且向主机报告该设备已不存在。
16、USB的系统软件将准确进行处理,如果去除的USB设备上集线器,USB的系统软件将对集线器反连在其上的所有设备进行处理。3、总线标号总线标号就是对连接在总线上的设备指定唯一的地址的一种动作,因为USB允许USB设备在任何时刻从USB上安装或拆卸,所以总线标号是USB的系统软件始终要作的动作,而且总线标号还包括对拆除设备的检测和处理。4、数据流种类数据和控制信号在主机和USB设备间的交换存在两种通道:单向和双向。USB的数据传送是在主机软件和一个USB设备的指定端口之间。这种主机软件和USB设备的端口间的联系称作通道。总的来说,各通道之间的数据流动是相互独立的。一个指定的USB设备可有许多通道。例
17、如,一个USB设备存在一个端口,可建立一个向其它USB设备的端口,发送数据的通道,它可建立一个从其它USB设备的端口接收数据的通道。USB的结构包含四种基本的数据传输类型:(1)控制数据传送:在设备连接时用来对设备进行设置,还可对指定设备进行控制,如通道控制;(2)批量数据传送:大批量产生并使用的数据,在传输约束下,具有很广的动态范围;(3)中断数据的传送:用来描述或匹配人的感觉或对特征反应的回馈。(4)同步数据的传送:由预先确定的传送延迟来填满预定的USB带宽。对于任何对定的设备进行设置时一种通道只能支持上述一种方式的数据传输,数据流模式的更多细节在第四章中详述。5、控制数据传送当USB设备
18、初次安装时,USB系统软件使用控制数据对设备进行设置,设备驱动程序通过特定的方式使用控制数据来传送,数据传送是无损性的。6、批量数据传送批量数据是由大量的数据组成,如使用打印机和扫描仪时,批量数据是连续的。在硬件级上可使用错误检测可以保证可靠的数据传输,并在硬件级上引入了数据的多次传送。此外根据其它一些总线动作,被大量数据占用的带宽可以相应的进行改变。7、中断数据传输中断数据是少量的,且其数据延迟时间也是有限范围的。这种数据可由设备在任何时刻发送,并且以不慢于设备指定的速度在USB上传送。中断数据一般由事件通告,特征及座标号组成,只有一个或几个字节。匹配定点设备的座标即为一例,虽然精确指定的传
19、输率不必要,但USB必须对交互数据提供一个反应时间的最低界限。8、同步传输同步数据的建立、传送和使用时是连续且实时的,同步数据是以稳定的速率发送和接收实时的信息,同步数据要使接收者与发送者保持相同的时间安排,除了传输速率,同步数据对传送延迟非常敏感。所以同步通道的带宽的确定,必须满足对相关功能部件的取样特性。不可避免的信号延迟与每个端口的可用缓冲区数有关。一个典型的同步数据的例子是语音,如果数据流的传送率不能保持,数据流是否丢失将取决于缓冲区的大小和损坏的程度。即使数据在USB硬件上以合适的速率传送,软件造成的传送延迟将对那些如电话会议等实时系统的应用造成损害。实时的传送同步数据肯定会发生潜在
20、瞬时的数据流丢失现象,换句话说,即使许多硬件机制,如重传的引入也不能避免错误的产生。实际应用中,USB的数据出错率小到几乎可以忽略不计。从USB的带宽中,给USB同步数据流分配了专有的一部分以满足所想得到的传速率,USB还为同步数据的传送设计了最少延迟时间。9、指定USB带宽USB的带宽分配给各个通道,当一个通道建立后,USB就分配给它一定的带宽,USB设备需要提供一些数据缓冲区。若USB提供了更多带宽,则需更多的缓冲区。USB的体系要保证缓冲引导的硬件的延迟限定在几毫秒内。USB的带宽容量可以容纳多种不同的数据流,因此保证USB上可以连接大量设备,如可以容纳从1B+D直到T1速率范围的电信设
21、备。同时USB支持在同一时刻不同设备具有不同比特率,并具有一个动态变动的范围。2.3USB设备USB设备分为诸如集线器、分配器或文本设备等种类。集线器类指的是一种提供USB连接点的设备,USB设备需要提供自检和属性设置的信息,USB设备必须在任何时刻执行与所定义的USB设备的状态相一致的动态。2.3.1设备特性当设备被连接、编号后,该设备就拥有一个唯一的USB地址。设备就是通过该USB地址被操作的,每一个USB设备通过一个或多个通道与主机通讯。所有USB设备必须在零号端口上有一指定的通道,每个USB设备的USB控制通道将与之相连。通过此控制通道,所有的USB设备都列入一个共同的准入机制,以获得
22、控制操作的信息。在零号端口上,控制通道中的信息应完整的描述USB设备、此类信息主要有以下几类:(1)标准信息:这类信息是对所有USB设备的共同性的定义,包括一些如厂商识别、设备种类、电源管理等的项目。设备设置、接口及终端的描述在此给出。(2)类别信息:此类信息给出了不同USB的设备类的定义,主要反映其不同点。(3)USB厂商信息:USB设备的厂商可自由的提供各种有关信息,其格式不受该规范制约。此外,每个USB设备均提供USB的控制和状态信息。2.3.2设备描述主要分为两种设备类:集线器和功能部件。只有集线器可以提供更多的USB的连接点,功能部件为主机提供了具体的功能。USB设备可被划分三层:(
23、1)底层是传送和接收数据包的总线接口;(2)中间层处理总线接口与不同端点之间的数据路由端节点是数据的终结提供处或使用处,它可被看作数据源或数据接收端(Sink);(3)最上层的功能由串行总线设备提供,比如鼠标,或ISDN接口。2.3.3设备状态USB设备有若干可能的状态,其中一些对于USB与主机(host)来说是外置的,而另外一些对USB设备来说是内置的。(1)连接状态USB设备可被连接到USB接口上或从接口断开。(2)加电状态USB设备的电源可来自外部电源,也可从USB接口的集线器而来。电源来自外部电源的USB设备被称作自给电源式的(self-powered)。尽管自给电源式的USB设备可能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 编程 实现 USB 设备 通信

链接地址:https://www.31ppt.com/p-2077238.html