(物理电子学专业论文)usb接口技术与应用研究.pdf_第1页
(物理电子学专业论文)usb接口技术与应用研究.pdf_第2页
(物理电子学专业论文)usb接口技术与应用研究.pdf_第3页
(物理电子学专业论文)usb接口技术与应用研究.pdf_第4页
(物理电子学专业论文)usb接口技术与应用研究.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

摘要 u s b 总线由于支持即插即用和热拔插,以及速度快、易于扩展、总线供电等优点, 目前己成为p c 机与外部通信的主流接口,并迅速在自动化测试等许多领域中得到应用, 以满足对数据通信更高的要求。 本文以a t m e l 单片机和p d i u s b d l 2 构成u s b 设备控制端,对u s b 相关技术、 硬件电路设计、固件编程以及驱动程序的编写进行研究。 u s b 设备的开发,大体可分为设备端开发和主机端开发两部分。在设备端,本文选 用p h i l i p s 公司的p d i u s b d l 2u s b 芯片和a t m e l 公司的a t 8 9 s 5 1 单片机,采用多路 地址数据总线复用方式。设备端驱动程序是设备端开发的核心,它主要完成设备初始化、 u s b 协议标准请求处理以及其它应用程序等。设备端驱动程序采用前台主循环和后台中 断服务的方式,利用全新w i n d o w s 集成开发环境uv i s i o n 3 0 编写程序。它的底层硬件 驱动程序以及u s b 协议和应用层程序用k e i lc 单片机c 语言编写。 主机端开发,主要是在w i n d o w s 下开发u s b 设备驱动程序。驱动程序遵循w i n 3 2 驱动程序模型( w d m ) ,利用d d k 、d r i v e r s t u d i o 工具开发、编写。 本文的研究成果、开发步骤和方法也可用于其他更复杂的u s b 外部设备的开发 关键词:u s b ,固件,设备驱动程序,p d i u s b d l 2 ,w i n d o w s 设备驱动程序模型 a b s t r a c t w i t ht h ea d v a n t a g e so f s u p p o r t i n gp n p ( p l u ga n dp l a y ) a n dh o tp l u f _ a sw e l la sh i g h l ys p e e d e d , e a s i l y e x t e n d e da n db e np o w e rs u p p l y , t h eu s b ( u n i v e r s a ls e r i a lb e n ) i sb e c o m i n gt h em a i ni n t e r f a c eb e t w e e n p ca n dp e r i p h e r a lc o m m u n i c a t i o n w h i c he x t e n d si t sa p p l i c a t i o n st oa u t o m a t i cm e a s u r e m e n tm a n yf i e l dt o s a t i s f yh i g h e rr e q u i r e m e n tf o rd a t at r a n s f e r t h i s t h e s i s t a k e s a i m e l c h i p m i c r o c o m p u t e r a n d u s bc h i p s e t p d i u s b d l 2a s t h ec o r e o f c o n t r o l f i n g d e v i c e ,a n dm a k e sas y s t e m i cs t u d yo f u s br e l a t e dt e c l m i q u e s 、h a r d w a r ee l e c t r i cc i r c u i td e s i g n 、f i r m w a r e p r o g r a 删a n du s bi n t e r f a c ed r i v e r t h ed e v e l o p m e n tw o r k sf o ru s bd c 、,j c ec o n s i s t so ft w op a r t s :d e v i c ed e s i g na n dh o s td r i v e r a tt h e d e v i c ed e s i g n , t h es y s t e ma d o p t sp d l u s b d l 2c h i po fp h i l i p sa n da t 8 9 s 5 lc h i pm i c r o c o m p u t e ro f a t m e l , a n du s e sm u l t i p l a d d r e s s d a t ab u sm o d e u s bd e v i c ed r i v e rm a i n l yf u l f i l st h et a s ko fd e v i c e i n t a l i z a t i o n , u s bp r o t o c o ls t a n d a r dr e q u e s tl op r o c e s s , a sw e l l o t h e ra p p l i e dp r o g r a m s t h es t r u c t u r eo f d e v i c ec k i v e ri sf o r e g r o u n d sm a i a l o o pa n db a c k g r o u n d s1 s rw h i c hi sw r i t t e nb yt j l ei g et t v i s i o n 3 0 s u p p l i e db yw m d o w s t h eb o s o mh a r d w a r ed r i v e ra n dt h eu s bp r o t o c o l & c l i e n tl a y e ra p p l i c a t i o np r o g r a m a l ew r i t t e nb yk e i lc 5 1c h i pm i c r o c o m p u t e rc l a n g u a g e t h em a i nt a s ko fh o s td r i v ei st h ed e v e l o p m e n to fu s bd e v i c ed r i v e rj 丑w i n d o w s i ta d o p t sw i n 3 2 d r i v e r m o d e l o v d m ) ,a n d a s e d d k a n d d r i v e r s t u d i o d e v e l o p m e m t o o l s t o w r i t e t h er e s e a r c hr e s u t ,d e v e l o p m e n t s t e p a n d m e t h o d o f t h e p a p e r c a n a l s o u s e d f o r t h e d e v e l o p m e n t o f t h e o t h e rm o r ec o m p l i c a t e du s be x t e r n a ld e v i c e k e yw o r d s :u s b ,f t i n w a r e , d e v i c ed r i v e r , p d i u s b d l 2 ,w d m 独创性声明和论文使用授权说明 独创性声明 本人郑重声明:所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的 研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表或撰写的研究成果,也不包含为获得河南师范大学或其他教育机构的学位或证书 所使用过的材料。与我一一同工作的同志对本研究所做的任何贡献均己在论文中作了明确 的说明并表示了谢意。 签名: 囱女日期:驻生z :曼:! i 关于论文使用授权的说明 本人完全了解河南师范大学有关保留、使用学位论文的规定,即:有权保留并向国 家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权河南师 。 范大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩 印或扫描等复制手段保存、汇编学位论文。( 保密的学位论文在解密后适用本授权书) 签名:艏虬导师签名:盟酸垒日期:迦z :比 第一章绪论 1 绪论 1 1 课题来源 本课题为河南省科技厅科技攻关项目“面向应用的e s 教学实验系统研制”( 项目 编号:0 5 2 4 2 2 0 0 7 4 ) 的一部分。本人主要完成u s b 接1 3 的硬件电路设计及w i n d o w s 环 境下驱动程序的编写。 1 2 课题研究的目的 随着计算机技术的飞速发展,计算机的应用日益普及,计算机外设的种类也越来越 多,例如打印机、鼠标,键盘、扫描仪、游戏杆、音箱等。由于每个外设都需要通过一 个接口和计算机相连接,因此大量外设对计算机提出了新的要求。而传统计算机接口在 速度上具有缺陷,使其难以满足当前计算机迅速发展的需要。如何设计出一款高性能的 计算机接口是非常重要的。 近几年,国外开发了许多带有u s b 的外设,但在国内市场上,自主开发的u s b 产 品较少,使用u s b 接口的智能仪器更是少见。究其原因,主要是u s b 的技术核心来自 国外,其结构对用户不透明,掌握u s b 编程和开发的技术难度较大,需要长时间的学 习投入和潜心研究。因此,国内实际掌握u s b 驱动程序编写和硬件开发技术人才稀少, 也影响了我国u s b 产品的自主研制。 为了解决上述问题,本人决定在读研期问对u s b 标准、协议和相关技术进行系统 研究。研究对象为以a t m e l 公司单片机为核心,具有u s b 接口的外设,重点解决在 w i n d o w s 下对p c 机u s b 和外设接口的驱动程序的编写,以及外设硬件系统选择设计。 1 3 课题研究的意义 u s b 总线具有低成本、使用简单、支持即插即用【”、易于扩展等优点,被广泛地应 用在p c 机及各种嵌入式系统中。本课题结合单片机实验教学系统数据传输的需要,进 行基于u s b 接口技术的软硬件开发,这对于推广u s b 总线的应用有着重要的意义。 1 4u s b 的发展历史 u s b ( u n i v e r s a l s e r i a lb u s ,通用串行总线) 作为一种新的外设连接技术,最初是由 c o m p a g 、d e c 、i b m 、i n t e l 、m i c r o s o f t 、n e c 和n o r t h e r n t e l e c o m 等七大业内巨头共同 1 第一章绪论 开发的。该技术着眼于简化计算机与外设的连接过程,着眼于低速和高速的兼容,从而 解决串行设备和并行设备与计算机相连的争论,为用户提供一种可共享的,可扩充的使 用方便的串行总线【2 l 。 随着p c 机向各层次的发展与渗透,外围设备与p c 的连接与扩充变得越来越重要。 1 9 9 4 年,m i c r o s o f t 公司提出p l u g & p l a y ( 即插即用) 方案,旨在把p c 外设和扩充电路 板连接起来,实现系统对中断和端口等资源的自动分配,而无需用户干预。1 9 9 6 年, c o m p a g 、i n t e l 和m i c r o s o f t 三家厂商提出d e v i c eb a y ( 设备插架) 概念【3 】,其目的是实 现热插拨和高度的扩充性。 1 9 9 6 年1 月1 5 日,u s b 白皮书1 0 版本【4 1 公布。1 9 9 8 年1 0 月公布u s b l 1 版本【5 】, 修改了以前所有章节,并增加中断输出这一新的传输类型。但当时最早提供u s b 支持 的只是w i d o w s 9 5 的o e ms e r v i c er e l e a s e2 ,之后还有两个修订版o s r2 1 和2 5 ,两者 都是面向p c 零售商的,而不是直接面向用户的。随着1 9 9 8 年6 月w m d o w 9 8g o l d 和 w i n d o w 9 8s c ( s e c o n de d i t i o n ) 的发布,u s b 真正迎来了发展的好机会,两者对u s b 的支持使u s b 外设陆续出现 6 1 。从1 9 9 9 年1 0 月起,陆续发布u s b 2 0 ( d r a f t 0 7 9 ) 、u s b 2 0 ( d r a f t0 9 1 和u s b2 0 7 1 。u s b 2 0 于2 0 0 0 年4 月2 7 日发表,是一种高速模式的版本, 传输速度提高4 0 倍,达到4 8 0 m b s ,而又同时与u s b l 1 兼容,一个连接到一个低速外 设的2 0 版集线器将把接受到的数据从新的速度翻译为此外设的较低速度。 1 5u s b 总线的性能特点 u s b 的规范能针对不同的性能价格比要求提供不同的选择,以满足不同的系统和部 件及相应不同的功能,其主要特色可归结为以下几点 s l : 终端用户的易用性: 为连接电缆和连接头提供了单一模型; 电气特性与用户无关; 自我检测外设,自动地进行设备驱动设置; 可动态连接、动态设置外设。 广泛的应用性: 适应不同设备,提供低速传输( 1 5 m b p s ) 和全速传输( 1 2m b p s ) ; 支持对多个设备地同时操作; 2 第一章绪论 可同时操作1 2 7 个物理设备; 在主机和设备之间可以传输多个数据和信息流; 支持多功能的设备; 利用底层协议,提高了总线利用率。 同步传输带宽: 确定的带宽和低延迟适合电话系统和音频的应用; 同步工作可以利用整个总线带宽。 灵活性: 可以选择一系列大小的数据包,允许对设备缓冲器大小进行选择; 通过指定数据缓冲区大小和执行时间,支持各种数据传输率; 通过协议对数据流进行缓冲处理。 健壮性: 出错处理差错恢复机制在协议中使用; 对用户感觉而言,热插拔是完全实时的; 可以对有缺陷设备进行认定。 与p c 产业的一致性: 协议的易实现性和完整性; 与p c 机即插即用体系结构的一致性; 对现存操作系统接口的良好衔接。 成本低廉: 以低廉的价格提供1 5 兆比特率的子通道设施; 将外设和主机硬件进行了最优化的集成; 促进了低价格的外设的发展; 廉价的电缆和连接头; 运用了商业技术。 1 6 主要研究内容 本课题首先开发u s b 接口系统,通过其硬件电路上指示灯( l e d 显示) 对p c 机 的u s b 响应过程来了解u s b 通信的传输机制;在p c 机端用v c 编写应用程序实现主 3 第一章绪论 机端与u s b 设备的通信。 本文主要研究内容为: 第一章简要阐述了本课题的来源、研究目的和意义,介绍了u s b 的发展概况,最 后给出本文的内容和组织体系。 第二章重点研究与本文研究内容相关的u s b l 1 协议,包括拓扑结构、u s b 接口特 性、编码方式与传输出类型、数据域及数据封包格式等内容。说明数据传输的各层次和 四种数据传输类型。 第三章至第五章是本论文的重点和难点,包括硬件电路设计和软件设计。 第三章对u s b 系统进行硬件的设计。介绍了常用u s b 接口芯片的类型,p d i u s b d l 2 的一些特性。最后,给出了它的典型连接。 第四章详细讨论u s b 外设的积木式结构的固件编程。具体讨论了固件中主循环和 中断服务程序;结合u s b 协议中设备描述符的规定和p d i u s b d l 2 的命令,介绍了协 议层程序和p d i u s b d l 2 的接口函数;同时还介绍了硬件提取层的编程。 第五章研究了u s b 开发中驱动程序和主机端应用程序的设计。首先讨论了w i n d o w 操作系统下设备驱动方式,探究了w d m g l 设备驱动程序模型、设备驱动程序的开发工 具和u s b 设备驱动程序体系,然后重点讨论了用w d m 创建u s b 设备驱动程序的过程。 最后重点研究应用程序用到的几个关键的a p i 函数。 4 第二章u s b 基本结构与特性 2u s b 总线规范 u s b 实体包含有两条电源线( v c c ,g n d ) 和两条以差分方式传送的信号线( d + , d - - ) ,传输率可达1 2 m b p s ,一个主机可以连接高达1 2 7 个外围设备。u s b 是以令牌包 为主的通信协议,1 2 m b p s 的总线带宽被分割成l m s 的帧,所有任务以时分传输( t d m ) 来分享总线。 u s b l 1 协议共有2 6 7 页,另有人机接口设备( h i d ) 1 1 0 l 的类定义8 3 页。为了说明 问题,在此仅将u s b 协议的有关概念及技术要求简单介绍一下。 2 1 u s b 的拓扑结构 总线拓扑结构包括四个重要的组成部分:主机和设备,物理拓扑结构,逻辑拓扑结 构,客户软件层与应用层的关系。 2 1 1 总线的物理拓扑结构 u s b 系统中的设备与主机的连接方式采用阶梯式星形( t i e r e ds t a r ) 拓扑( t o p o l o g y ) 结 构如图2 - 1 所示【1 1 1 。 图2 1u s b 物理总线的拓扑 其中,u s b 集线器h u b 是一组设备的连接点,主机中有一个被嵌入的h u b 叫根h u b ( r o o t h u b ) 。主机端通常是指p c 主机或是另外再附加u s b 端口的扩充卡,主机通过根 h u b 提供若干个连接点。集线器除了扩增系统的连接点外,还负责中继( r e p e a t ) 上游 下游的信号以及控制各个下游端口的电源管理。 当p c 上电时,所有u s b 设备与h u b 都默认地址为0 ,p c 机启动程序向u s b 查询, 5 第= 章u s b 基本结构与特性 地址1 分配给发现的第一个设备,地址2 分配给第二个设备或h u b ,如此重复寻找并分 配地址,直到所有设备赋完地址,并加载相应的的驱动程序。 设备突然被拔除后,p c 机通过d + 或d 一的电压变化检测到设备被移除掉后,将其 地址收回,并列入可使用的地址名单中。 2 1 2 总线逻辑拓扑结构 在物理结构上,设备通过h u b 连到主机上。但在逻辑上,主机直接与各个逻辑设备 通信,如图2 2 所示【1 2 1 ,数据流的模式以逻辑连接为基本结构。 图2 - 2u s b 逻辑总线的拓扑 u s b 令牌包中含有7 个寻址位( 位于地址域,a d d r ) ,最多可寻址1 2 8 个设备,但是 由于0 0 0 0 0 0 0 0 b 地址是默认地址,并用来指定给所有刚连上的设备。所以u s b 最多能连 接1 2 7 个设备。 在令牌包中包含4 位的端点( e n d ,o i n t ) 地址( 位于端点域,e n d p ) 及一个输入 输出位,所以可对1 6 个输入输出端点( 共3 2 个端点) 寻址,并可将u s b 的令牌包定 义为i n ( 设备至主机) 或o u t ( 主机至设备) 两种类型的令牌包。 2 2u s b 接口的特性 2 2 1u s b 连接头 为了避免连接错误,u s b 定义了两种不同规格的星形u s b 连接头:a 型连接头b 型连接头,其中a 型连接头用来连接下游的设备,且为长方扁平的形状,b 型连接头用 来连接上游端口的设备或集线器,且为正方形。如图2 3 所示,为a 与b 型连接头的图 标。每个连接头内拥有4 个针脚:其中两个是用来传递差分数据的,另两个则用于u s b 设备的电源供给【协廿1 。 6 第二章u s b 基本结构与特性 厂i 、 l 固l i _ - _ _ _ _ _ _ _ 一 a 型连接头 b 型连接头 图2 - 3a 与b 型连接头的图标 2 2 2u s b 接口的电气特性 为了提供可靠的输入电压和适当的终端阻抗,在电缆的每一端都有一个带偏压的终 端,该终端可以发现任一端口上的u s b 设备的“插入”和“拔除”操作,并能区分全 速和低速设备。根据不同的u s b 设备的传输速度,改变在设备端的提升电阻1 5 x ( 1 5 ) k f l 的位置。这个提升电阻,也可视为设备端电阻。对应全速设备,就将提升电阻 接至d + 信号线与电源之间的位置,如图2 4 所示。如果是慢速设备,就将提升电阻接 至d 一信号线与电源之间的位置,如图2 5 所示。但对于u s b 2 0 的高速传输,这个提 升电阻被省略,改以自动切换的方式。d + 与d 一两条信号线在p c 主机的根集线器或集 线器端同时接上1 5 1 c o 的下拉电阻并连至地端。这些下拉电阻也可称为集线器端电阻。 图2 - - 4 全速设备与p c 主机之间电气特性的连接图 图2 5 低速设备与p c 主机之间电气特性的连接图 主机通过d + 和d 一上的电压变化来检测到设备的状态,当没有设备连接到u s b 端 7 第二章u s b 基本结构与特性 口时,d + 和d - - 线上的下拉电阻就将2 条数据线拉到近地,当检测到任一条数据线电压 接近v c c ,而其他保持近地电压,那么主机就知道该设备已经准备好了【1 4 1 。 2 2 3u s b 的电源管理 u s b 可以使用总线供电模式和自供电模式两种电源分配模式【1 5 1 ,完全依赖于u s b 电缆为其供电的u s b 设备称为总线供电设备( b u s - - p o w e r e dd e v t c e ) ,与之相对,那些 具有可替换电源供应的u s b 设备称之为自供电设备( s e l f - - p o w e r e dd e v i c e ) 。总线供电 又可再区分为低功率和高功率两种。此外,根据u s b 规范,所有的集线器或设备都必 须支持中止( s u s p e n d ) 模式,而且中止模式下的消耗电流不能超过5 0 0 卜a 。这是非常重 要的特性。 2 3u s b 编码方式与传输类型 2 3 1u s b 的编码方式 u s b 采用不归零翻转( n o nr e t u r nt oz e r oi n v e r t ,简称n r z i ) 编码方式,对于不同 步的脉冲信号也能产生同步的数据存取,能有效地解决u s b 缆线信号延迟产生的误差。 在该编码方案中,“1 ”表示电平不变,“0 ”表示电平改变。图2 6 【1 6 1 列出了一个数 据流及它的n r z i 编码。 011o1o1oo o1oo 11o 嘶司厂 r r r 厂 n 盟司厂广 厂 厂 图2 - 6n r z i 数据编码 为了确保信号发送的准确性,当在u s b 上发送一个包时,传输设备就要进行位插 入操作。所谓位插入操作就是指在数据被编码前,在数据流中每六个连续的1 后插 入一个0 ,从而强迫n r z i 码发生变化。 2 3 2 传输类型 u s b 上的数据传输有四种类型【1 7 1 :控制传输、中断传输、批量传输、实时传输。 不同的传输类型就会执行不同的数据交易。 8 第二章u s b 基本结构与特性 ( 1 ) 控制传输 控制传输是一种双向传输,用来发送与设备的能力和配置有关的请求和数据,也可 以传输任何其它用途的信息块。每个设备必须在端点0 的缺省管道中支持控制传输。控 制传输包含2 至3 个阶段:设置阶段、数据阶段( 也可能没有) 和状态阶段。每一个阶 段对应一个数据交易( 即事务) ,每个数据交易由令牌包、数据包和握手包组成。主机 控制器为了尽最大努力确保所有的控制传输尽可能快地进行而为控制传输保留了1 0 的u s b 带宽,若大部分时间不需要这些带宽,批量传输可使用剩下的部分。 ( 2 ) 批量传输 批量传输可以发送大量的数据而不会阻塞总线,它可以为其他的传输而延迟,并且 等到总线可用时再传,因此对传输时问不严格的数据传输很有用。只有全速设备可以使 用批量传输,打印机和扫描仪使用这种传输。一个批量传输由一个或多个i n 或o u t 事 务组成,每一个事务由令牌包、数据包和握手包组成。 ( 3 ) 中断传输 中断传输是一种单向传输,从设备输x , np c 机,作i n 的传送( 后在协议1 1 和2 0 中增加了o u t 的传送模式,从而使之成为准双向传输,也就是说,在两个方向传输数 据时,每个方向都需要一个独立的管道) 。注意,u s b 不支持通常意义上的硬件中断, 而靠主机周期性地“轮询”来知悉设备是否要传送数据给主机。为了保证数据不被丢失, 必须要有一个合适的轮询速度,或者说要有一个最大的潜伏期,以确保主机控制器在事 务之间不超过规定的时间间隔。中断传输用来支持那些偶然需要少量数据通信,但服务 时间受限制的人机接1 2 1 设备( h i d ) 。中断传输的事务组成同批量传输,事务的结构也是 三种。 ( 4 ) 实时传输 实时传输是一种保证大块数据迅速从繁忙的总线上通过的方法,它和中断传输组合 可以最多使用9 0 的u s b 带宽。实时传输时数据必须以一个恒定的速率或在规定的时 间内传输,每帧传输规定数量的字节数。由于传输必须遵循时间表,接收者在其很忙或 者检测到一个错误时不能要求重发。实时传输通过一个或多个连续的帧来实现,每帧由 一个i n 或o u t 事务组成,因为实时传输不支持对总线上的差错作出数据重传响应,所 以每个事务不具有握手包。实时传输也是单向的,欲在两个方向上传输数据,每个方向 要有独立的管道和端点。 9 第二章u s b 基本结构与特性 2 4u s b 接口通信协议 在u s b 总线上执行通信协议的基本单位是最下层的数据域。几个不同形式的数据 域位可以组合成一个封包,而由1 个、2 个或3 个不同形式的封包又可组成一个数据交 易。这些数据交易,可能涵盖于不同客户端的驱动程序所启动的输出输入请求封包( i o r e q u e s tp a c k e t ,简称i r p ) 中。 2 4 1 数据域格式 u s b 传输与一般串行传输一样,先送出最低位l s b ,最后送出最高位m s b 。不同 的令牌包类型,含有不同数量与类型的数据域。以下是几种常用的数据域规格与结构。 ( 1 ) 同步域( s y n c h r o n i z a t i o ns e q u e n c e ,s y n c ) s y n c 字段由8 位组成,作为每一个数据封包的前导,它是用来产生同步作用的, 它的数值固定为0 0 0 0 0 0 0 1 。 ( 2 ) 封包标识域( p a c k c ti d e n t i f i e r ,p i d ) 每一个u s b 都有一个p i d ( 包标识符) ,它是紧随s y n c 之后的字段,表示数据包 的类型,一个li d 由一个4 位的辨别符栏( p i d 3 p i d 0 ) 及一个互为补码的检查栏 ( p i d 7 p i d 4 ) 所组成。表2 1 列出了封包的类型。例如:s e t u p 包= 1 0 1 1 0 1 0 0 b = 0 x b 4 , a c k 包:0 1 0 0 1 0 l i b :0 x 4 b 。 表2 - 1 各种封包的类型与规格 封包类型 p i d 名称 p d 3 、p ) 2p ) 1 、p m 0 令牌 o u t0 00 1 令牌 i n1 00 1 s o f s o f 0 10 1 令牌 s 刖p 1 10 1 数据 d a i m 0 01 1 资料 d a i m 1 01 1 握手 a c k 0 01 0 握手 n a k 1 01 0 握手 s 1 :a l l1 1 1 0 特殊 p e r1 1 0 0 ( 3 ) 地址域( a d d r e s s ,a d d r ) 设备上的端点用设备地址( a d d r ) 和端点域( e n d p ) 两个域来确定。设备地址 域是由7 位所组成的,用来确定唯一的设备地址,可用来寻址最多1 2 7 个外围设备。 第二章u s b 基本结构与特性 ( 4 ) 端点域( e n d p o i n t ,e n d p ) e n d p 数据域由4 位所组成,用于确定设备上的端点号。通过这四个位,最多可寻 址3 2 个端点。仅用于i n 、o u t 与s e t u p 令牌包中。 ( 5 ) 循环冗余校验域( c y c l er e d u n d a n c yc h e c k s , c r c ) 根据不同的包类型,c r c 数据域由不同数目的位所组成。其中,最重要的数据封 包采用c r c l 6 的数据域( 1 6 个位) ,而其余的封包类型则采用c r c 5 的数据域( 5 个位) 。 ( 6 ) d a t a 数据域 仅存于d a t a 包内,根据不同的传输类型,拥有不同的字节大小,从0 - - 1 0 2 3 字节。 ( 7 ) 帧号域( f r a m en u m b e r ) 帧号码数据域由1 1 位所组成,仅存于s o f 封包内。 2 4 2 封包格式 上述介绍的各种封包数据域可以组成各种封包类型,进而执行一个完整的u s b 通 信协议。以下介绍各种封包类型。 ( 1 ) 令牌包( t o k e n ) 令牌包由p i d 域、地址域、端点域和5 位的c r c 循环冗余码校验域组成。其中地 址域和端点域唯一确定了某个设备上的某一个端点。只有主机才可以发出令牌包。令牌 封包的p i d 数据域中包含了o u t 、i n 、s e t u p 等3 种p i d 类型名称,即包含了o u t 令牌封包、i n 令牌封包、s e t u p 令牌封包。 ( 2 ) 数据包( d a t a ) 数据包由p i d 域、0 - 1 0 2 3 字节长度的数据域和1 6 位的c r c 检查域组成。有2 种类 型的数据包,根据不同的p i d :d a t a 0 和d a t a l 来识别。两种数据包p i d 是为了支持 数据切换同步而定义的。数据必须以整数的字节数发出。数据c r c 仅通过对包中的数 据字段计算而得到,而不包括p i d ,它有自己的校验字段。 ( 3 ) 握手信号包( h a n d s h a k e ) 握手包用来表示一个事务的完成状态。它的格式最简单,只有一个8 位的p i d 域。 握手包用来报告数据事务的状态,还能表示数据成功接收,命令的接收或拒绝,流控制 和停止条件。有3 种类型的握手包:a c k 表示数据包没有位填充或数据字段上的c r c 错,并且数据p i d 被正确收到;n a k 表示设备不会从主机接受数据( 对于输出事务) , 或者设备没有传输数据到主机( 对于输入事务) ;s t a l l 表示设备不能传输,或者接收 1 1 第二章u s b 基本结构与特性 数据,或者不支持一个控制管道请求。在任何条件下都不允许主机返回s t a l l 。 ( 4 ) 特殊前导包( s p e c i a lp r e a m b l e ) 特殊前导( s p e c i a lp r e a m b l e ) 封包拥有独自的p i d 类型名称p r e ,仅用于主机想要 从高速传输变成低速传输时,主机在想要送出低速的封包与低速设备通信之前,先送出 的p r e 包。 ( 5 ) s o f 包 s o f 包虽是令牌包的一种,但却具有独自的p i d 类型名称s o f 。通常目标设备都利 用s o f 包来辨别帧的起点,这个包常用于实时型传输,也就是在i r e s 的帧开始时,实时 型传输会利用s o f 启动传输并达到同步传输的作用。而在每一个帧开始时,s o f 会传 给所有连接上的全速设备( 包含集线器) 。因此s o f 封包并不使用于低速设备中。s o f 封包的帧号码是从0 到0 x 7 f f 之间。 2 5u s b 设备请求 u s b 设备请求是主机和设备之间遵守的特定命令格式。所有的u s b 设备在“设备 的缺省控制通道( d e f a u l tc o n t r o lp i p e ) ”处对主机的请求发出响应。这些请求是通过使 用控制传输来达到的,请求及请求的参数通过s e t u p 包发向设备,由主机负责设置s e t u p 包内每个域的值。 2 5 1s e t u p 包的格式 每个s e t u p 包有8 个字节。如表2 2 所示。 表2 _ 2s e t u p 数据包的格式 偏移值 字段名称字段长度字段取值说明 请求特性: d 7 :传输方向0 = 主机至设备1 一设备到主机 类型o = 标准1 = 类型2 = 厂商 0 b r a r e q u 8 t t y p e l位图 3 = 保留 接收方0 = 设备1 一接口2 ;端点 3 一其他4 3 1 = 保留 1 b r e q u e s t 1数值u s b 设备请求 2w v a l u e2 值根据不同的请求,以字节为单位来定义 字段编号 4w i n d e x2 根据不同的请求,以字节为单位来定义 索引 6 w l e n g t h 2 计数如果传输一组数据,指出要传输数据的字节数 第二章u s b 基本结构与特性 b m r e q u e s t t y p e 域,表明请求的特征。请求可被导引到设备、设备接口或某一 个设备端结点( e n d p o i n t ) 上。该域也指定了接收者。当指定的是接口或端结点( e n d p o i n t ) 时,w l n d e x 域指出那个接口或端节点。 b r e q u e s t 域,标识特别的请求。 w v a l u e 域,用来传送当前请求的参数,随请求不同而变。 w l n d e x 域,用来表明是哪一个接口或端结点,并表明了接口或端结点方向。 w l e n g t h 域,表明数据传送阶段的数据传输长度。传输方向由b m r e q u s t t y p e 域 的d 7 位指出。w i _ 七n g t h 域为0 则表明无数据传输。 2 5 2 标准设备请求 标准设备请求见表2 - 3 。表2 4 、2 5 分别列出了对应的标准请求码及描述表类型。 表2 - 6 是特性选择符,用来设置特性或使特性生效。 表2 3u s b 标准设备请求 请求类型设备请求值( 2 b ) 索引( 2 b )长度数据 1 0 0 0 0 。0 0 b 设备 设备、接口或端 1 0 。0 0 0 0 1 bg e t s “吡b0接口2 1 0 0 0 0 0 1 0 b 端点 点状态 0 0 0 0 0 0 0 0 b 设备 0 0 0 0 0 0 0 1 bc k wf e a t i 特性选择符接口0无 0 0 0 0 0 0 1 0 b 端点 1 0 0 0 0 0 0 0 b 设备 1 0 0 0 0 0 0 l b s e tf e a t t e 特性选择符接口 0 无 1 0 d 0 0 0 1 0 b 端点 0 0 0 0 0 ( x ) 0 bs e t a d d r e 盛设各地址 0 0无 1 0 0 0 0 0 0 0 b s e td c t m d p t o f 描述符的类型和索引0 或语言d描述符长度描述符 0 0 0 0 0 0 0 0 bg e td e s c r i p t i o n描述符的类型和索引 0 或语言d 描述符长度描述符 1 0 0 0 0 0 0 0 bg e tc o n f i g u r a t i o n001配置值 0 0 0 0 0 0 0 0 b s e tc o n f i g u r a t i o n 配置值 00无 1 0 0 0 0 0 0 0 bg e ti n t e r f a c e0接口i可选的接口 0 0 0 0 0 0 0 1 b s e ti n t e r r a c e 可选设置接口 0 无 1 0 0 0 0 0 1 0 bs y n d lf r a m e0端点2帧标号 清除特性( c l e a r f e a t u r e ) ,用来清除一个指定不存在的接口或结点号。 第二章u s b 基本结构与特性 取得配置( g e tc o n f i g u r a t i o n ) ,返回当前设备配置值。返回0 ,则表明设备未 配置。如果w v a l u e w l n d e x , w l e n g t h 的值与上面表中不同,设备响应无定义。 取得描述符( g e td e s c r i p t o r ) ,返回设备的描述符。 取得接口设置( g e ti n t e r f a c e ) ,返回所指接口设置,这个请求使得主机决定 当前设置。如果所指的接口不存在,返回请求错误。 取得状态( g e ts t a t u s ) ,返回接收者的状态。b m r e q u e s t t y p e 域的r e c i p i e n t s 位段表示出接收者。如果w v a l u e 或w l e n g t h 不是上表中值,或w i n d e x 在取设备状态请 求时非0 ,则设备响应无定义。一个g e t s t a t u s 0 请求返回信息的格式如表2 7 。 设置地址( s e t a d d r e s s ) ,设置设备存取的地址,w v a l u e 指出所要设置的地址值。 设置配置值( s e t,将设备设置成主机要求的配置值。域_ o n f i g u r a t i o n ) w v a l u e 的低字节指出配置,这个配置值必须为0 或与配置描述表中的一个配置相匹配。如果配 置值为0 ,设备置地址状态。w v a l u e 的高字节保留。如果w l n d e x , w l e n 垂h 或w v a l u e 的高字节非0 ,则设备对其的响应无定义。 表2 - 4 标准请求码 b r e q u e s t v a l u e g e t _ s t a t u s 0 c l e a r _ f e a t u r e 1 为将来保留2 s e t _ f e a t u r e 3 为将来保留 4 s e t a d d r e s s5 g e td e s c r i p t o r 6 s e td e s c r i p t o r 7 g e tc o n f i g u r a t i o n 8 s e t _ c o n h g u r a :n o n 9 g e t _ i n t e r f a c e 1 0 s e t _ i n t e r f a c e 1 1 s y n c hf r a m e1 2 表2 - 5 描述符种类 描述符种类数值 设备l 配置2 字符串 3 接口4 端点5 表2 - 6 特性选择符 l 特性选择符名称接收方数值 l 设备远程唤醒设备 l l 禁止端点 端点0 1 4 第二章u s b 基本结构与特性 表2 - 7g e t s t a t u s ( ) 发向设备时返回信息 d 7d 6d 5d 4d 3d 2d 1d 0 保留( 为零)远程唤醒自给电源 d 1 5d 1 4d 1 3d 1 2 d 1 1d 1 0d 9d 8 保留( 为零) 。设置描述表( s e td e s c r i p t o r ) ,主机发出该请求,要求设备更新或添加新的描 述表。w v a l u e 域的高字节指出了描述的类型,低字节指出了描述表索引。w i n d e x 域指 出了字串描述表的语言标识,对于其它描述表来说它为0 。w l e n g t h 指出从主机传向设 备的字节数。 设置特性( s e tf e a t u r e ) ,设置或使一个特性生效。w v a l u e 域中的特性选择符 必须跟接收者相配。s e t f e a t u r e 0 请求如果指出一个不存在的特性会使得设备在交换状态 阶段返回s t a l l 信号。 设置接口( s e ti n t e r f a c e ) ,主机为指定的接口选择一个设置。如u s b 设备在 接口配置中有互斥设置。此请求让主机选择所要的设置。 2 6 本章小结 在本章中,详细探讨了与本文研究内容相关的u s b l 1 协议,包括拓扑结构、u s b 接口特性、编码方式与传输出类型、数据域及数据封包格式等内容,这些内容是开发 u s b 设备应用的基础。实际应用中,这里的大部分工作由u s b 控制芯片完成。 第三章u s b 控制芯片及硬件电路构成 3u s b 控制芯片及硬件电路构成 在硬件设计中,首先要根据硬件系统的性能要求进行器件的选型,当然在选型时还 要充分考虑到供货能力、性能价格比、技术支持、使用经验等因素。本章主要讨论原理 图的设计、p c b 图的设计、硬件调试。 3 1 常用的u s b 接口芯片 目前,市场上供应的u s b 控制器主要有两种:带u s b 接口的单片机( m c u ) 或纯 粹的u s b 接口芯片。带u s b 接口的单片机从应用上又可以分成两类:一类是从底层设 计专用于u s b 控制的单片机,比如c y p r e s s 公司的c y 7 c 6 3 5 1 3 ( 低速) 、c y 7 c 6 4 0 1 3 ( 全 速) ,但由于价格、开发工具以及单片机性能有限等问题,所以一般不推荐选用。另一 类是增加了u s b 接口的普通单片机,例如i n t e l 公司的8 x 9 3 1 ( 基于8 0 5 1 ) 、8 x 9 3 0 ( 基 于高速,增

温馨提示

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

最新文档

评论

0/150

提交评论