基于USB总线的LED屏幕的仿真与实现.doc_第1页
基于USB总线的LED屏幕的仿真与实现.doc_第2页
基于USB总线的LED屏幕的仿真与实现.doc_第3页
基于USB总线的LED屏幕的仿真与实现.doc_第4页
基于USB总线的LED屏幕的仿真与实现.doc_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

基于USB总线的LED屏幕的仿真与实现 本课题“基于USB总线的LED屏幕的仿真与实现”是我校和上海三晟公司合作的项目。 LED由于其具有的寿命长、亮度高、功耗小、体格低等优点,正受到越来越多的关注,其应用也越来越广泛。目前LED屏幕显示图像的的两种方法中高端方法成本太高,而低端方法则显示画面过于单一。针对现状,上海三晟公司与我校合作开发LED屏幕动画,力争以低成本实现LED屏幕动画显示:通过上位PC机软件的配合,将动画的点阵数据转送至下位单片机以控制在LED点阵屏幕上动态显示。本文提供了一种低成本的LED屏幕显示图像、文字及手写图文的方法。以单片机扩展USB接口芯片,实现数据的高传输率,以替代即将淘汰的串行口;通过扩展行列电路及单片机控制程序,驱动LED显示屏;通过USB协议固件的开发及Windows 2000下USB设备的WDM驱动开发,实现 USB显示控制板设备与Windows2000系统的即插即用;上位机软件实现了与USB显示屏控制板的通信,可将图片(支持BMP, Jpeg, Gif格式)、Windows TrueType Font字符和手写体图形文字在计算机上混排编辑后,送至LED屏幕上动态显示,并可在计算机上仿真显示运行的结果。与现有系统相比较,本课题实现的系统具有以下优点:抛弃了过时的串口而改用可即插即用的USB接口;舍弃了硬件字模库而利用 Windows系统的TTF字库,理论上可显示任何国家的文字;手写体的实现可应用于LED屏幕显示签名服务;图片编辑功能可实现任意图形的动态显示组合,并可支持多种图片格式。经过实际运行检测,该系统的软件、硬件都工作良好,具有较为理想的显示效果。详细目录摘 要ABSTRACT第一章 绪论第二章USB简介第三章硬件电路设计第四章固件设计第五章驱动程序设计第六章应用软件设计第七章 总 结附录一 参考文献致谢中文摘要ABSTRACT第一章绪论1.1 课题的来源及意义1.2 本课题所研究的内容及所做的工作第二章USB简介2.1USB的特性及优点2.2USB的总线结构2.3USB数据流的模式及管道的概念2.4USB通信协议2.4.1包的构成2.4.2包的类型2.4.3传输类型2.4.4PC主机请求2.4.5枚举过程第三章硬件电路设计3.1器件介绍3.1.1PDIUSBD12简介及基本特性3.1.2PDIUSBD12端点描述3.1.3PDIUSBD12控制命令3.2电路设计3.2.1PDIUSBD12与USB总线连接电路3.2.2PDIUSBD12与微控制器接口电路及RAM扩展电路3.2.3LED点阵控制电路第四章固件设计4.1固件结构4.2硬件提取层4.3PDIUSBD12命令接口4.4中断服务程序4.5协议层4.6主循环第五章驱动程序设计5.1Windows 2000的系统结构5.1.1硬件抽象层(HAL)5.1.2内核(Kernel)5.1.3执行体(Executive)5.2WDM驱动程序和I/O子系统的协同工作机制分析5.3分层的设备驱动程序和即插即用设备栈5.3.1分层的设备驱动程序5.3.2即插即用设备栈5.3.3标准总线驱动程序和类驱动程序5.4WDM驱动程序的结构及主要例程5.4.1WDM驱动程序入口点和回调例程5.4.2I/O系统服务派发(Dispatch)例程5.5WDM驱动程序的工作流程分析5.5.1创建设备5.5.2硬件资源分配5.5.3驱动程序的分层调用5.5.4串行化处理5.5.5访问硬件5.5.6即插即用支持技术5.6USB设备驱动程序设计5.6.1USB驱动程序接口(USBDI)简介5.6.2USBDI的调用5.6.3设备对象和设备扩展5.6.4USB设备驱动程序入口回调例程5.6.5即插即用的实现5.6.6分发例程第六章应用软件设计6.1应用软件总体介绍6.2图像处理6.2.1设备无关位图及其自定义类6.2.2彩色图像灰度化6.2.3直方图6.2.4阈值分割6.2.5二值图像的LED显示转换6.3字符处理6.3.1TrueType字体简介6.3.2逻辑字体6.3.3图元存取6.3.4CCharactor类6.4手写原理6.5驱动程序设备接口第七章 总 结附录一参考文献附录二系统电路原理图附录三硬件系统实物图致谢摘 要 本课题“基于USB总线的LED屏幕的仿真与实现”是我校和上海三晟公司合作的项目。 LED由于其具有的寿命长、亮度高、功耗小、体格低等优点,正受到越来越多的关注,其应用也越来越广泛。目前LED屏幕显示图像的的两种方法中高端方法成本太高,而低端方法则显示画面过于单一。针对现状,上海三晟公司与我校合作开发LED屏幕动画,力争以低成本实现LED屏幕动画显示:通过上位PC机软件的配合,将动画的点阵数据转送至下位单片机以控制在LED点阵屏幕上动态显示。 本文提供了一种低成本的LED屏幕显示图像、文字及手写图文的方法。以单片机扩展USB接口芯片,实现数据的高传输率,以替代即将淘汰的串行口;通过扩展行列电路及单片机控制程序,驱动LED显示屏;通过USB协议固件的开发及Windows 2000下USB设备的WDM驱动开发,实现USB显示控制板设备与Windows2000系统的即插即用;上位机软件实现了与USB显示屏控制板的通信,可将图片(支持BMP, Jpeg, Gif格式)、 Windows TrueType Font字符和手写体图形文字在计算机上混排编辑后,送至LED屏幕上动态显示,并可在计算机上仿真显示运行的结果。 与现有系统相比较,本课题实现的系统具有以下优点:抛弃了过时的串口而改用可即插即用的USB接口;舍弃了硬件字模库而利用Windows系统的TTF字库,理论上可显示任何国家的文字;手写体的实现可应用于LED屏幕显示签名服务;图片编辑功能可实现任意图形的动态显示组合,并可支持多种图片格式。 经过实际运行检测,该系统的软件、硬件都工作良好,具有较为理想的显示效果。ABSTRACT The project “The Simulation and Implementation of the LED-array Display Based on USB Bus” is one we developed cooperating with Shanghai San Sheng Corporation. LED is paid more attention to for its character of longevity, high-brightness, low-power and low-price. And LED is used more and more. The LED display leads the market of large-screen display for its merit especially in outdoor display domain. There are two means to display animated picture in LED at present: the high-performance one whose price is too high, and the low-cost one whose structure is too simple. Based on this situation, Shanghai San Sheng Corporation has cooperated with our university to develop the LED animated display in low-cost; using the PC program to edit the picture and send the array data to the LED display controlled by MCU. This paper provides a low-cost method of LED to display picture, character and hand script. With MCU and USB interface chip, data can be transmitted in high speed; the LED display is driven by row-column scan circuits and programs of MCU; with the firmware of USB protocol and Windows 2000 WDM driver of USB device, the USB display control board can be plunged and played; the PC program can communicate with USB display control board, and can edit picture (support format: BMP, JPEG and GIF), Windows TrueType Font and hand script, then arrange them with each other and transfer them to LED display; the PC program also can simulate the screen of LED display in computer. Compared with other existed system, the system we developed has several merits: using the PnP USB interface but not old serial port; using TTF font of Windows system but not hardware character module, and any character in any country can be displayed in theory; hand script can be used to display sign service; the edit function of PC program can combine all kinds of graphics and can support several types of pictures. The hardware and software both work correctly and the effect of display is perfect in use.Key Word:LED Display, USB, Image Processing, Character,Hand Script, Simulation第一章 绪论1.1 课题的来源及意义 LED已经有近三十年的历史,广泛应用于指示灯、屏幕显示等。由于LED具有使用寿命长、能经受较强的冲击和震动、可靠性高、工作电流小、可与数字电路兼容等优点,一直受到研究开发人员的重视。近年来出现的高亮度、超高亮度的LED,生产成本降低,使用LED屏幕电子显示屏在国内外已被普遍采用。同其他显示媒体相比,它具有显示内容丰富、动态范围广、画面生动、以及无污染、寿命长、亮度高、效果好等显著优点,是目前性能价格比较高的显示媒体。目前的LED屏幕显示数字文字的应用很广泛,因为文字数字的点阵信息都有成熟的点阵模块。但LED屏幕显示在显示图像方面应用范围相对较小,主要原因是得到图像的点阵信息的成本较高,目前LED屏幕显示图像通常有两种方法:一是通过多媒体卡将视频信号转换成LED所需的图像信号,另一种是用继电器控制几幅较简单的图画,组成动画信号。第一种方法的成本很高,而第二种方法则显示画面过于单一。针对现状,上海三晟公司与我校合作开发LED屏幕动画,力争以低成本实现LED屏幕动画显示:通过上位PC机软件的配合,将动画的点阵数据转送至下位单片机以控制在LED点阵上显示动画。目前在PC机与单片机通讯方式主要是传统的串口,传统的串口使用至今已有二十余年,并且由于各方面的限制已经逐步被淘汰,而近年来生产的个人PC中,相当部分产品已经不再配置传统串口,因此,使用串口必将造成产品的使用周期缩短。取而代之是近几年出现的通用串行总线(Universal Serial Bus,简称USB),通用串行总线是由康柏、微软、IBM、DEC等公司为了解决传统总线的不足,而推出的一种新型串行通信标准。该总线接口具有安装方便、高带宽、易扩展等优点,已经逐渐成为现代数据传输的发展趋势。相比较传统串口而言,USB 具有更多优点:1、外设的安装十分简单。所有的USB外设安装过程高度自动化,既不必打开机箱插入,也不必考虑资源分配,更不用关掉计算机电源,即可实现热插拔。2、支持多设备连接,利用菊花链的形式对端口加以扩展,最多可在一台计算机上同时支持127种设备。3、提供内置电源。USB电源能向低压设备提供5V的电源,因此新的设备就不需要专门的交流电源,从而降低了这些设备的成本并提高了性价比。目前,LED屏幕较为广泛的应用是在字符显示方面,如火车站的列车时刻表、票价情况显示以及证券银行业的汇率、利率等的显示。而在图形图像显示方面则应用较少。目前国内外LED屏幕显示图像比较先进的技术是利用专业的计算机多媒体卡,将输入的视频信号或计算机显示卡上的信号转换为LED显示屏所需的数字信号,再经过光隔离通讯卡以每秒30帧以上的传送速率传输给显示屏,通过显示屏内的控制电路在LED显示屏上显示出来,显示内容与电视机或VGA显示器上所显示内容一致,适用与图像、动画及电视画面显示等。目前这种显示方法的成本较高,仅多媒体卡的成本就近万元。在通讯方面,目前USB已经发展到2.0版本,并且与之相近的还有另外一种串行传输标准IEEE1394。USB2.0的传输速率最高可达到480Mbps,这个速度是USB1.1版的40倍,也高于 IEEE1394的400Mbps。USB2.0具有向下兼容的特性,同样最高可支持127个设备,支持即插即用功能,更重要的是,在连接端口扩充的同时,各种采用USB2.0的设备仍可以维持480Mbps的最高速率。USB2.0适用于需要作连续大量数据传输的高速外设。目前, USB2.0已广泛应用于视频会议的CCD、移动硬盘、光盘刻录机以及扫描仪等设备上。IEEE1394是与USB相近的另一种串行传输方式,目前 1394b的传输速率为400Mbps,比USB1.1快33倍,最多可连接63个设备。在USB2.0推出以后,IEEE1394新一代的规范已经制定,其最高速率可达800Mbps。但IEEE1394与USB应用于不同的领域,IEEE1394主要应用于需要高速传输的消费性电子产品上,而USB 则可望成为未来的计算机外围产品的主要传输接口。1.2 本课题所研究的内容及所做的工作 本课题“基于USB总线的LED屏幕的仿真与实现”的完成提供了一种低成本实现LED屏幕显示图像、文字及手写图文的方法。以单片机扩展USB接口芯片,实现数据的高传输率,以替代即将淘汰的串行口;通过扩展行列电路及单片机控制程序,驱动LED显示屏;通过USB协议固件的开发及 Windows 2000下USB设备的WDM驱动开发,实现USB显示控制板设备与Windows2000系统的即插即用;上位机软件实现了与USB显示屏控制板的通信,可将图片(支持BMP, Jpeg, Gif格式)、Windows TrueType Font字符和手写体图形文字在计算机上混排编辑后,送至LED屏幕上动态显示,并可在计算机上仿真显示运行的结果。 该系统综合了电路设计、微机控制技术、通信技术及相应的软件技术等,所研究的内容包括:USB总线在单片机控制系统上的应用;基于USB总线的单片机系统的固件的开发及USB协议在单片机系统上的实现;服务于单片机控制系统的USB驱动程序的开发;计算机图像的处理及数据格式的转换,以及字符与手写体显示的实现;LED屏幕显示的计算机仿真。 本课题最终实现了预期所设定的目标,所完成的工作包括:完成了单片机控制系统的硬件设计;完成了基于USB接口的单片机控制系统的固件设计;完成了PC机中USB驱动程序的开发设计;完成了上位PC机的软件设计,包括图像、字符与手写体的处理;LED屏幕显示的计算机仿真;应用软件与硬件系统的通信等。根据最初设计的开发目标及最终实现的软硬件系统,本课题的关键技术主要体现在以下几个方面:硬件系统的设计;基于USB协议的单片机固件的开发; 基于USB协议的上位机驱动程序的开发;计算机图像、字符和手写体的处理;点阵信息的提取以及格式的转换;LED屏幕显示仿真技术。与现有系统相比较,本课题实现的系统具有以下优点:抛弃了过时的串口而改用可即插即用的USB接口;舍弃了硬件字模库而利用Windows系统的TTF字库,理论上可显示任何国家的文字;手写体的实现可应用于LED屏幕显示签名服务;图片编辑功能可实现任意图形的动态显示组合,并可支持多种图片格式。第二章USB简介2.1USB的特性及优点 Universal Serial Bus (USB)是由Compaq、IBM、Intel、Microsoft等七家公司于1995年所研发与规范出来的,随着近几年的推广与应用,USB已经成为个人计算机的标准的外设接口,并将逐步取代所有的各种传统外围接口,如串行端口、并行端口以及游戏接口等。相对于传统外围接口,USB具有诸多特性和优点:统一了各种接口设备的连接头、即插即用(plug and play)特性、“热插拨”(hot attach and detach)特性、具备 12Mbps的标准传输速率及更高的传输速率、最多可以连接127个设备、可由USB电缆供电而不需要附加电源、具有电源管理功能。由于USB具有以上的特性和优点,许多传统的外设接口已经转向的USB接口,而传统的串口将随即被淘汰,因此在新开发的设备中使用USB接口将符合时代潮流,将使产品的生命力更强,而不至于很快被淘汰。2.2USB的总线结构USB 的总线结构是采用阶梯式星形的拓扑结构,如图2.1所示。从图中可以看出USB的设备包含了两种类型:USB集线器和USB设备。位于最顶端的为 USB Host(主机端)。从Host的联机往下连接至Hub(集线器),再由集线器按阶梯式以一层或一阶的方式往下扩展出去,连接在下一层的设备或另一个集线器上。事实上,集线器也可视为一种设备。而其中最大阶层数为6层(包括计算机内部的根集线器)。主机端通常指PC主机。因主机端具有根集线器,因此也含有集线器的功能。而集线器是在USB规范中特别定义出来的外围设备,除了扩展系统的连接点外,还负责中继上游/下游的信号以及控制各个下游端口的电源管理。至于另一个设备,即是用户常见的外围设备,在USB规范中,称这类设备为“功能设备” (function devices),即此设备提供了某些能力,如具有键盘鼠标等功能。不同的外围设备可以具有不同的功能。通过这种阶梯式星形的连接方式,最多可以同时连接127个设备。PC主机通过以下方式对所有连接到主机端的外围设备加以区分并寻址:首先,PC一接上电源时,所有连接上USB的设备与集线器都会预设为地址0。此时,所有的下游的连接器都处于禁用且为失效的状态。然后,PC主机就会向整个 USB总线查询。若发现第一个设备,就将地址1分配给该设备。然后再往下寻找第二个地址,且目前仍为0的设备或集线器。若发现新设备,则将地址2分配给该设备,若为集线器,则激活其所扩充的第一个下游的连接器。而后再沿此连接器一直往下寻找第三个地址,且仍为0的设备或集线器。这样重复地寻找与分配地址,直到适于航行的外围设备都赋予了新的地址,或已达到127个外围设备的极限为止。 图2.1USB总线的阶梯式星形结构这种过程类似于将各个设备分别加以枚举的程序,称之为设备枚举。当然,主机在配置新地址的同时,PC主机还要为这个新设备或集线器加载所使用的驱动程序。若在此时一个新的设备被接上,PC主机就会预设此设备为地址0,且PC就会确认并加载其相应的驱动程序,并分配一个尚未使用的新地址给它。而一旦某个设备突然被拨离后,PC可经过D或D差动信号线的电压变化来检测到此设备被移除掉,然后就将其地址收回,并列入可使用的地址数值中。2.3USB数据流的模式及管道的概念在USB 规范标准中也定义了两种外围设备:(1)单功能设备,如鼠标等;(2)复合性设备,如数字照相机和音频处理器共享一个USB通信端口等。每个接口设备都具有“端点”(endpoint)地址,它是由令牌包内的4位字段(ENDP)所构成的。而主机与端点的通信,是经过“虚拟管道” (virtual pipe)所构成的。而一旦虚拟管道建立好之后,每个端点就会传回描述该设备的相关信息即描述符给主机。这些描述符包含了群组特性、传输类别、最大传输包大小与带宽等关于此设备的重要信息。目前USB的数据传输类别有四种类型:控制传输、中断传输、批量传输和同步传输。虽然在物理结构上,USB总线呈现阶梯式星形的结构,设备通过Hub连到主机上,但在逻辑上,主机是直接与各个逻辑设备通信的,就好像它们是直接被连到主机上一样。如图2.2所示,即为USB设备的逻辑连接。而数据流的模式则是以这些逻辑连接为基本的架构。虽然USB系统中的工作都是从逻辑角度来看待的,但主机必须对物理结构有个了解。例如,在处理Hub被移去的情况时,当一个Hub被移出,通过它与主机相连的设备也应一起被移去,这是由其物理结构决定的。图2.2USB设备的逻辑连接USB 系统的物理上、逻辑上的拓扑结构反映了总线的共享性。操纵USB应用设备的客户软件只关心设备上与它相关的接口,客户软件必须通过USB软件编程接口来操纵应用设备。这与另一些直接访问内存或I/O的总线(如PCI,EISA,PCMCIA等)不同。在运行中,客户软件必须独立于USB上的其它设备。这样,设备和客户软件的设计者就可以只关心该设备及客户软件与主机硬/软件的相互作用的细节问题。图2.3说明了在图2.2的逻辑结构下,一个设备设计者看到的客户软件与相应的USB功能的关系的视图。一个USB逻辑设备对USB系统来说就是一个端点集合。端点可以根据它们实现的接口来分类。接口即为功能的视图。USB系统软件通过一个缺省的控制通道来管理设备。而客户软件通过管道束(同端点集相关联)来管理接口。客户软件要求数据通过 USB总线在主机上的一个缓冲区和USB设备上的一个端点之间进行。主机控制器或USB设备(取决于数据传送方向)将数据打包后在USB总线上传输。由主机控制器同时也协调何时用总线访问在USB总线上传递数据包。图2.3客户软件和USB功能的关系一个端点是一个可唯一识别的USB设备的部分,它是主机与设备间通信流的一个结束点。一系列相互独立的端点在一起构成了USB逻辑设备。每个逻辑设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号。这个端点号是在设备设计时被给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两者不可兼得。一个端点的特性决定了它与客户软件进行的传送的类型。一个端点有以下特性:总线访问频率要求、总线延迟要求、带宽要求、端点号、对错误处理的要求、能接收或发送的包的最大长度、传送类型、端点与主机的数据传送方向 端点号不为0的端点在被设置前处于未知状态,是不能被主机访问的。所有USB设备都需要实现一个缺省的控制方法。这种方法将端点0作为输入端点,同时也将端点0作为输出端点。当USB设备接入PC系统时,USB系统用这个缺省方法初始化设备及以后一般地使用该逻辑设备。一个USB管道是设备上的一个端点和主机上软件之间的联系。体现了主机上缓存和端点间传送数据的能力。由两个0号端点组成的通道叫缺省控制管道,一旦设备加电并复位后,此管道即可使用。其它端点对应的管道只在设备被设置后才存在。USB系统软件在决定设备身份、设置要求和设置设备时使用缺省控制管道。当设备被设置后,这个设备的特定软件还可使用该管道。USB系统软件保留缺省控制管道的拥有权,协调其它客户软件对管道的使用。由于在令牌封包内,包含了4个位的端点地址(ENDP)以及一个位于端点描述符中的输入/输出方向位,所以在一个单独的USB设备中最多可对16个输入/输出端点寻址,即最多可有32个端点,相应地也就最多有32个管道。2.4USB通信协议2.4.1包的构成 在USB数据总线上通信的基本元素是包。一个包由3片组成:起始、信息和终止。 USB 总线采用两条差动的数据线(D与D)进行数据传输。一个闲置状态的全速率总线有D(高电平)、D(低电平)两种电平状态,即J状态。当D与D同时转换到相反的极性时,称之为K状态。一个包的起始以从J状态跳变到K状态作为标识。在接着的12M码位时间里,发送器发送6个跳变,以产生一个同步序列(SYNC)。接收器就使用这个同步序列来调节它的接收时钟,这样就可以确保包的信息部分的可靠接收。同步序列是8个码位的数据(KJKJKJKK),包的信息在第8个码位时间开始。 包信息长度从1个字节到1025字节之间可变。第一个字节是包标识符,即PID,它被用来决定其他的信息字节应该怎样解释。一个包标识符字节由4个码位和这4个码位的补码组成:这种冗余可以使接收器检查出错误的PID。这样的编码方案允许 16种可能的PID类型,目前定义了10个,其余6个为保留的。如表2.1所示。 包有四类。令牌包是用来设置数据包,它的接收由握手包(Handshake)来确认。还有一种特殊的包用来实现低速度连接。 一个包的最后是包结束标识符。用D和D在两个码位的时间同时为低电平表示包的结束。这不是一个差动信号,而是一个容易识别的单端零信号(SE0)。表2.1己定义的PID类型PID 分类PID 类型PID值描述令牌OUTINSOFSETUP0001B1001B0101B1101B在主机到功能部件的事务中有地址+端口号在功能部件到主机的事务中有地址+端口号帧开始标记和帧号在主机到功能部件建立一个控制管道的事务中有地址+端口号数据DATA0DATA10011B1011B偶数据包PID奇数据包PID握手ACKNAKSTALL0010B1010B1110B接收器收到无措数据包;接收设备部不能接收数据,或发送设备不能发送数据;端口挂起,或一个控制管道请求不被支持。专用PRE1100B主机发送的前同步字。打开到低速设备的下行总线通信。其他保留保留2.4.2包的类型开始帧令牌包(Start-of-Frame Token Packet) 根集线器每1.0毫秒传送一个SOF包。在两个SOF包之间的时间称为一个时间片(帧)。在一个时间片内,最多有(1.00ms/12MHz)= 12,000个理论上的码位时间或1500字节的数据。但是SYNC和EOP的开销实际上使每帧传送最多不超过1200字节数据。USB的信号方案具有强有力的差错检查。发送器会生成并发送循环冗余检查即CRC码,而接收器也根据接收的那些数据位产生一个CRC码,并且把这个码同收到的CRC码作比较,如果两者不同,这个包就被拒绝,并且不产生动作。 一个SOF包有8位PID、11位数据和5位的CRC差错检查,其中的 11位数据,是一个单调增加的帧数。它没有绝对值,但是实时设备要用它来同步数据传送。这个数每2048毫秒循环一次。任何设备接入总线,就能接收到 SOF包,并且可以用它作为一种规则的节拍信号,对于那些实时设备,如音频和视频设备,就依赖于这个规则的SOF包。SOF包是唯一没有目的地址的包,它广播到所有使用USB的设备,并且不需要得到确认。SETUP、IN和OUT令牌包 SETUP、IN和OUT三个令牌包的格式相同。其中包含8位PID、一个7位的设备地址、一个4位的端点地址和一个5位的CRC。 这三个令牌包用来在根集线器和特定的数据源或特定的设备中的数据接收者之间建立数据传输。这些数据源或数据接收者即USB设备的端点。 一个IN包用来建立一个从设备到根集线器的数据传送,一个OUT包用来建立一个从根集线器到设备的数据传送。IN包和OUT包可以对任何设备上的任何端点编址。 一个SETUP包是一个OUT包的特殊情况:它是高优先级的,也就是说设备必须接受它,即使是中止先前的操作也必须这样做。而且它总是指向双向控制的端点0。数据传送包 由SETUP、IN和OUT令牌包启动的数据传输是由DATA0和DATA1数据包来实现的。 一个数据传送包由8位PID、传送的负荷数据和一个16位的CRC组成。数据传送包负荷量可以从0变化到1023。有了两种数据包类型就可以提供错误检测。一个发送器可以交替地发送DATA0和DATA1包,而接收器则应该检查接收到的数据包是否为DATA0和DATA1交替。例如,如果连续收到两个 DATA0包,则说明丢失了一个DATA1数据包,是一个错误的情况。握手包 握手包是一个接收器用来表明令牌或数据包的接收是好的、坏的或不良的。 有三种类型的握手包:ACK、NAK和STALL。 一个握手包仅则PID组成,并且没有CRC,因为在PID中的冗余编码可以提供所需的错误检测。 一个ACK握手表示一个令牌或数据包接收成功。 一个NAK握手表示当前接收器太忙或没有资源来处理令牌或数据包。一个设备可以对除了SETUP令牌以外的所有事务处理作NAK握手,而根集线器则不允许对任何事务处理作NAK握手,因此在一个PC内的根集线器,必须始终有时间和资源来接收一个包,这样可以使一个I/O设备上的缓冲得到简化。 如果设备有严重问题,可以用一个STALL握手要求根集线器提供某种帮助。例如,一个I/O设备可以对它不能识别的所有命令产生一个STALL握手。此外,还有一个特殊的PRE包,该包是根集线器在用来警告下游的集线器,一个低速的事务处理正在到来。在根集线器为低速中断或控制事务处理而产生的所有其他令牌的前面,会预设一个PRE令牌。2.4.3传输类型在USB 的传输中,因不同的外围设备的类型与应用,定义了四种传输类型,分别是控制传输(Control Transfer)、中断传输(Interrupt Transfer)、批量传输(Bulk Transfer)以及同步传输(Isochronous Transfer)。表 2.2列出了各种传输类型的相关特性。表2.2各种传输类型及其相关特性类型重要属性最大数据量例子中断传输质量64(低速为8)鼠标、键盘批量传输质量64打印机、扫描仪同步传输时间1024扬声器、视频控制传输时间和质量64(低速为8)系统控制 中断传输在事务处理中大量使用中断传输。硬件设计者往往把中断设想为是对一个外部事件的立即响应。但是USB发生的中断传输并不是这样。与之相反,是由根集线器轮询I/O设备,判别它是否需要关注。根集线器会在第一时间处轮询一次,也就是每秒1000次。而对于许多机械或人机设备来说,即使是第10个时间片轮询一次,响应时间也已经是很宽裕了。如果你的I/O设备需要比1毫秒更快的响应,这时微控制器就要预先处理数据并且在本地先持有一个响应,而一个状态更新信息应该在此后的一个方便的时间向PC主机发送。一个从I/O设备到根集线器的成功的数据传送,数据负荷量的大小可以从0到64字节变化(低速设备为0到8)。ACK是对一个有效的数据传送的正面响应。在做到能快速响应,I/O设备必须有准备好的数据,并且等待IN令牌。如果I/O设备没有准备好的数据,它将产生一个NAK,而根集线器会在下一个时间片作重试。如果I/O设备从上次的轮询时间开始一直没有新的数据,它就会以NAK做出响应。这样就可以保持总线的带宽,而且事务处理在下一个预定的轮询间隔到来之前也不会做出重复测试。如果I/O设备发生混乱,它就会用一个STALL响应,根集线器也会向更高层的软件报警,以便对I/O设备的状况进行分析。 批量传输 用来实现批量传输的包和用于中断传输的包是同等的,其差别只在于允许传输的数据大小、系统调度以及对一个NAK握手的响应。USB能为批量数据提供优良传送。它的传输质量得到好的保证,不会丢失数据,但是传送时间没有保证。批量传输是在所有应该保证的传输已经被安排以后的一个时间片中进行的。这就是说在一个繁忙的USB总线上,如果有一个USB打印机要做一个长的打印,会花费更长的时间。在另一方面,如果在一个时间片中有很多时间可用于批量传输,PC主机就可以在一个时间片中安排多个传输到同一I/O设备。为了做差错检查,数据包会在DATA0和DATA1令牌之间交替。 如果一个I/O设备没有缓冲区空间存放传入数据,设备会对数据包做NAK响应。PC主机就会在下一帧重试传输。同步传输 用来实现同步数据传输的包和用于快传输的包相似,只是系统调度不同,而且不做确认。在PC主机支持向一个I/O设备或从一个I/O设备作同步数据传输之前,PC主机会作出一个保证数据传送的安排。同步传输在每一个时间片中进行,在同意建立连接之前,PC主机会确保在时间片中有可供使用的带宽。一旦连接建立起来,就会保证这个I/O设备在每一个时间片中有一片时间可用;但是这一片时间在时间片中的位置是不保证的,因此I/O设备必须对数据作缓冲存储,并且要允许传送时间的抖动。 同步包的数据传送都是没有握手包的。同步包是有时间性的,一个包传送迟了就成了无用包,象没有传送一样。因此坏包不会重传,而I/O设备一般会再次使用前一包的数据。使用DATA0令牌时的数据负荷量为0到1023字节。控制传输 控制传输是最复杂的。控制传输需要很多的系统协议总开销,以确保命令和数据被正确接收。但是这并不会对系统性能产生严重影响,因为这些传输一般只在枚举或命令初始化期间才发生。一个控制传输可分为3个阶段:建立阶段、数据阶段和状态阶段,每一阶段都要使用一些已定义的模块包。控制传输总是以一个建立阶段起始并以一个状态阶段结束,而数据传送阶段则是可选的。所有的控制传输的地址都是目标I/O设备上的端点0。 建立阶段包括一个SETUP包,一个DATA0包和一个握手包。DATA0包总是8个字节,数据的格式是预先定义的。握手包总是一个ACK,因为不容许I/O设备 NAK或STALL一个SETUP包。SETUP包总是必须被接收,即使这样做可能要放弃前一个控制传输请求的执行。 建立阶段将会说明是否要有一个数据阶段。有些建立命令用建立阶段中的8字节数据,就可以完全说明。也有一些则要求有更多的数据写入I/O设备或从其中读出。 有些建立命令要求从I/O设备读出很多数据,如果数据超出一个包的容量,I/O设备必须把数据放入多个数据包中。包的大小和实施有关,但是至少必须是8个字节。其他的合法的大小是16、32以及64。 如果根集线器要向I/O设备提供更多的数据,就必须在建立阶段加以说明。在这种情况下就要使用一个控制写数据阶段。 一个控制传输总是以一个状态阶段结尾。 如果没有数据阶段,I/O设备在接收到建立阶段以后就会确认。 如果数据阶段是一个控制读,根集线器在从I/O设备接收到所有的数据以后确认。 如果数据阶段是一个控制写,I/O设备在接收到所有的数据以后确认。 如果是由I/O设备提供状态,状态阶段是一个IN包,如果是由根集线器提供状态,状态阶段则是一个OUT包。一个零长度的数据包用来表示成功,一个NAK或STALL响应则表示出错。2.4.4PC主机请求 表2.3PC主机请求的字段及意义OffsetFieldSizeValueDescription0bmRequestType1BitmapCharacteristics of reguest:D7: Data transfer direction 0 = Host to Devide 1 = Device to HostD65: Type 0 = Standard 1 = Class 2 = Vender 3 = ReservedD40: Recipient 0 = Device 1 = Interface 2 = Endpoint 3 = Other 431 = Reserved1bRequest1ValueSpecific request2wValue2ValueWord-sized field that varies according to request4wIndex2Index or OffsetWord-sized field that varies according to request; typically used to pass an index or offset6wLength2CountNumber of bytes to transfer if there is a Data stage表2.4PC主机标准I/O设备请求请求要求的设备动作Get_Status返回当前状态Clear_Feature清除指定的特性Set_Feature设置指定的特性Set_Address存储唯一的USB地址并且从现在开始使用Get_Descriptor返回请求的描述符Set_Descriptor设置指定的描述符Get_Configuration返回当前配置,如果未配置则返回0Set_Configuration设置指定的配置Get_Interface返回当前的接口Set_Interface设置指定的接口Sync_Frame同步USB时间片数(异步的设备)表2.3列出了在控制传输请求中的一个8字节DATA0数据包的固定格式。 RequestType参数是一个位域,其中位7表示下一事务处理的传输方向。位6和位5是一个顶层的开关,它决定请求字节的偏移量1如何解释。低4位用来说明这个请求的目标;PC主机可以把请求送到一个设备、一个接口或一个端点。 表2.4列出了对一个设备的标准请求以及I/O设备要求的动作。2.4.5枚举过程 当还没有将设备插入USB总线时,USB总线的信号线D和D为低电平。在设备上有一个偏置电阻接连在Vcc与D或D之间。当USB电缆插入时,偏置电阻使D或D升高。这个电压差的改变被集线器识别,我们就会发现有一个电缆插入了。根据约定,如果设备的偏置电阻器是连接到D的,这就是向集线器说明设备是全速的(12Mbps),如果设备的偏置电阻器连接到D,则表示设备是低速的(1.5Mbps)。 I/O设备现进入加电状态。在发现新的设备以后集线器会更新STATUSCHANGE寄存器,并且在等待被告知要执行什么。 PC 主机控制着枚举过程,并且在这个阶段把请求发送到两个设备。确认有新的连接的设备的集线器会收到许多动作的请求,而最新连接的I/O设备也会收到这些请求。PC主机会有规则地轮询所有的接入的寻求工作的集线器,在大多情况下集线器会以NAK响应,如果集线器以STATUSCHANGE数据回答,则表示端口有了变化,这样基本PC主机的枚举过程就开始了。以下是枚举步骤(ToHub表示编址的设备是集线器,ToIO表示到新的I/O设备): (1)ToHub:Get_Port_Status:主机发现最新接入的设备。 (2)ToHub:Clear_Port_Feature:清除STATUSCHANGE寄存器中的标志,起动这个过程。 (3)ToHub:Set_Port_Featur:集线器的响应是发送一个reset到I/O设备。集线器维持这个reset至少10ms。然后更新 PORTCHANGE寄存器中的RESETCHANGE位,并且置位PORTSTATUS寄存器中的PORTENABLE位允许端口进行USB通信。PORTCHANGE寄存器的更新会使STATUSCHANGE寄存器更新。PC主机就会在下一个预定的轮询时注意到这一点。 (4)ToHub:Get_Port_Status:PC主机会发现复位已完成。 (5)T

温馨提示

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

评论

0/150

提交评论