(计算机应用技术专业论文)基于单片机的usb设备的研究与设计.pdf_第1页
(计算机应用技术专业论文)基于单片机的usb设备的研究与设计.pdf_第2页
(计算机应用技术专业论文)基于单片机的usb设备的研究与设计.pdf_第3页
(计算机应用技术专业论文)基于单片机的usb设备的研究与设计.pdf_第4页
(计算机应用技术专业论文)基于单片机的usb设备的研究与设计.pdf_第5页
已阅读5页,还剩96页未读 继续免费阅读

(计算机应用技术专业论文)基于单片机的usb设备的研究与设计.pdf.pdf 免费下载

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

文档简介

摘要 u s b 是通用串行总线( u n i v e r s a ls e r i a lb u s ) 的缩写,它最初是由微软和英特尔公 司倡导发起,其最大的特点是支持热插拔( h o tp l u g ) 和即插即用( p l u ga n dp l a y ) 。当设 备插入时,主机自动枚举( e n u m e r a t e ) 此设备并加载所需的驱动程序,即可和计算机进 行通信,因此,它的使用远比p c i 和p s 2 总线方便。u s b 的出现主要也是为了简化 个人计算机与外围设备的连接,增加易用性。u s b 的即插即用p n p ( p l u ga n dp l a y ) 的 特性将使计算机变得更易用、更大众化。u s b 还具有很多优点,例如容易使用、方 便携带、传输速度快、可扩展性强、标准统一、价格便宜等等。只要是能和计算机相 连的设备,就基本上可以通过u s b 来实现,由此,足见u s b 功能的强大,研究u s b 设备的相关设计有着十分重要的意义。 本文实现了利用单片机s t c l1 f 3 2 x e 和u s b 驱动芯片p d i u s b d l 2 来组成设计 u s b 设备所需要的主要硬件电路,利用该系统电路研究并设计了多媒体u s b 键盘、 u s bm i d i 设备和自定义的u s b 存储设备这三个具体的u s b 设备,给出了u s b 设备 设计的具体方法和流程。对于硬件的设计,需要掌握相关外围电路的设计方法,包括 单片机和u s b 驱动芯片p d i u s b d l 2 的电路设计。在设计的过程中把重点放在了电 路的稳定性和可靠性上。在软件的设计过程中需要深入研究u s b 相关协议和u s b 设 备固件的开发,给出了u s b 设备的固件设计方法及流程。对于自定义的u s b 存储设 备,不可避免地要开发自己的u s b 设备驱动程序。因此,必须深入研究基于w d m 型的u s b 驱动的开发方法和技巧。该驱动程序的设计主要是利用v c + + 6 0 、d r i v e r s t u d i o 和d d k 来实现的,给出了驱动框架创建的步骤和基于此框架的驱动程序的主 要函数的实现。另外,为了实际的应用和调试的方便,进一步研究并设计了适合自己 设备的上位机应用程序。 本系统成功地实现了多媒体u s b 键盘、u s bm i d i 设备和自定义的u s b 存储设 备。通过实际的测试,各个设备工作稳定可靠,抗干扰能力强。自定义u s b 设备的 驱动程序和上位机应用程序运行稳定可靠、应用性强,完全可以应用到实际的相关项 目的开发过程中。这几个u s b 设备的成功实现为其他u s b 相关设备的设计奠定了扎 实的基础,同时也提供了十分有价值的参考。 关键词:u s b ,固件,驱动程序,h i d a b s t r a c t u s bi sa l la b b r e v i a t i o no fu n i v e r s a ls e r i a lb u s i ti so n 粤n a l l yl a u n c h e db yi n t e la n d m i c r o s o f t ,i t sb i g g e s tf e a t u r ei sh o t - p l u ga n dp l u ga n dp l a y ah o s te n u m e r a t ead e v i c ea n d l o a dt h en e c e s s a r yd r i v e r sw h e nt h ed e v i c ei sp l u g g e d ,i tc a nc o m m u n i c a t ew i t hac o m p u t e r i m m e d i a t e l y , s oi t i sc o n v e n i e n tt h a nt h eu s eo fp c ia n dp s 2b u s e s u s ba p p e a r s p r i m a r i l yt os i m p l i f yt h ec o n n e c t i o no fp e r s o n a lc o m p u t e r sa n dp e r i p h e r a ld e v i c e s ,t o i n c r e a s ee a s yu s e t h ep l u ga n dp l a yo fu s bw i l lm a k ec o m p u t e r sb e c o m em o r ea c c e s s i b l e a n dp o p u l a r u s ba l s oh a sm a n ya d v a n t a g e s ,s u c ha se a s i l yu s e ,e a s i l yc a r r y , h i g h t r a n s m i s s i o ns p e e d ,h i g hs c a l a b i l i t y , s t a n d a r d i z a t i o na n dc h e a p a sl o n ga sad e v i c ei s c o n n e c t e dw i t hc o m p u t e r s i tc a nb ea c h i e v e dp r a c t i c a l l yb yu s b s ou s bf u n c t i o ni s e v i d e n ts 仃o n ga n dt h er e s e a r c ho fr e l a e dd e v e l o p m e n t so fu s bd e v i c e si sv e r ys i g n i f i c a n t i nt h ep a p e r , t h es y s t e mm a i nh a r d w a r ec i r c u i ti sb a s e do nt h em c us t c11f 3 2 x e a n dt h eu s bd r i v e rc h i pp d i u s b d l 2w h i c hb eu s e dt od e s i g nu s bd e v i c e s ,u s e si tt o r e s e a r c ha n dd e s i g nam u l t i m e d i au s bk e y b o a r d ,au s bm i d id e v i c ea n dac u s t o mu s b s t o r a g ed e v i c e ,t h es p e c i f i cm e t h o d sa n dp r o c e s s e so ft h ed e s i g nu s bd e v i c e sa r eg i v e n f o rh a r d w a r ed e s i g n ,n e e dt om a s t e rt h er e l e v a n t e x t e r n a lc i r c u i td e s i g n , i n c l u d i n gt h e c i r c u i td e s i g no fm c ua n du s bd r i v e rc h i pp d i u s b d12 i nt h eh a r d w a r ed e s i g np r o c e s s , f o c u so nt h es t a b i l i t ya n dr e l i a b i l i t yo ft h ec i r c u i t i nt h es o f t w a r ed e s i g np r o c e s s ,s t u d yi n d e p t ht h er e l e v a n tu s bp r o t o c o la n dt h ed e v e l o p m e n to fu s bf i r m w a r e ,u s bd e v i c e f i r m w a r ed e s i g nm e t h o d sa n dp r o c e s s e sa r eg i v e n f o rac u s t o mu s bs t o r a g ed e v i c e ,a u s bd e v i c ed r i v e ri s i n e v i t a b l yd e v e l o p e d t h e r e f o r e ,n e e d t o s t u d yi nd e p t ht h e d e v e l o p m e n to fm e t h o d sa n dt e c h n i q u e so fu s bd r i v e rb a s e do nw d m t h ed e s i g nd r i v e r m a i n l yu s e sv c + + 6 0 ,d r i v e rs t u d i oa n dt h ed d k t oa c h i e v e ,t h es t e p st oc r e a t et h ed r i v e r f r a m e w o r ka n dt h em a i nf u n c t i o n sa c h i e v e m e n tb a s e do nt h i sf r a m e w o r ka r eg i v e n i n a d d i t i o n ,f o rp r a c t i c a la p p l i c a t i o na n dt h ec o n v e n i e n c ed e b u g ,f u r t h e rs t u d yt h ed e s i g no f t h es u i t a b l ep ca p p l i c a t i o n t h es y s t e mh a ss u c c e s s f u l l ya c h i e v e dt h eam u l t i m e d i au s bk e y b o a r d ,t h eu s b m i d id e v i c ea n dt h ec u s t o mu s bs t o r a g ed e v i c e i na c t u a lt e s t ,t h e s ed e v i c e sc a ns t a b l y a n dr e l i a b l yr u na n dh a v es t r o n ga n t i - i n t e r f e r e n c ea b i l i t y t h ec u s t o mu s bd e v i c ed r i v e r a n dt h ep ca p p l i c a t i o nc a ns t a b l ya n dr e l i a b l yr u n ,c a nb ea p p l i e dt ot h ea c t u a l d e v e l o p m e n tp r o c e s so fr e l a t e dp r o j e c t s t h e s es u c c e s s f u ld e s i g n so fu s bd e v i c e sl a ya s o l i df o u n d a t i o nf o ru s bd e v i c e sd e v e l o p m e n t ,a n dp r o v i d eav a l u a b l er e f e r e n c e k e y w o r d s :u s b ,f i r m w a r e ,d r i v e r s ,h i d 目录 1 引言1 1 1 论文选题背景1 1 2 国内外现状及研究目的2 1 3 课题主要研究内容和主要工作3 2u s b 的标准4 2 1u s b 概述4 2 2u s b 的拓扑结构5 2 3u s b 的电气特性7 2 4u s b 的描述符及相互间的关系8 2 5u s b 设备的枚举过程1 0 2 6u s b 通信包的结构1 1 2 7u s b 的传输类型1 3 2 7 1u s b 事务1 3 2 7 2u s b 批量传输1 3 2 7 3u s b 中断传输1 4 2 7 4u s b 等时传输1 4 2 7 5u s b 控制传输1 4 3 系统硬件设计方案1 6 3 1 系统总体需求1 6 3 2 微处理器模块1 6 3 2 1s t c l1 f 3 2 x e 单片机概述1 7 3 2 2s t c l l f 3 2 x e 单片机引脚1 7 3 3u s b 接口通信模块1 8 3 3 1p d i u s b d l 2 概述1 9 3 3 2p d i u s b d l 2 特性1 9 3 3 3p d i u s b d l 2 引脚功能2 0 3 3 4p d i u s b d l 2 与单片机的连接2 2 3 4 辅助设计模块2 2 4u s b 固件程序的研究与设计2 4 4 1 固件的定义及设计概述2 4 4 2u s b 中断的处理2 4 4 3 读取端点0 数据的实现2 6 4 4 设备描述符的实现与返回2 8 4 5 设置地址请求的处理3 1 4 6 配置描述符集合的实现与返回3 3 4 7 字符串描述符及语言i d 请求的实现3 5 5 多媒体u s b 键盘的研究与设计3 7 5 1 人机接口设备概述3 7 5 2 设备描述符的实现3 7 5 3 配置描述符集合的实现3 8 5 4 u s bh i d 的报告描述符3 9 5 5 报告描述符的实现4 2 6u s bm i d i 设备的研究与设计4 7 6 1 乐器数字接口简介4 7 6 2m i d i 原理4 7 6 3u s bm i d i 设备的数据流模型4 8 6 4u s bm i d i 的描述符的实现4 8 6 4 1 设备描述符及配置描述符集合4 8 6 4 2 音频控制接口描述符4 9 6 4 3 类特殊音频控制接口描述符4 9 6 4 4m i d i 流接口描述符4 9 6 4 5 类特殊m i d i 流接口描述符5 0 6 4 6 端点描述符和类特殊端点描述符5 1 6 5u s bm i d i 设备数据的返回5 2 7自定义u s b 存储设备的研究与设计5 5 7 1 系统设计目的和总体需求5 5 7 1 1 系统设计目的5 5 7 1 2 系统总体需求5 5 7 2 描述符的实现5 6 7 3 自定义u s b 设备的驱动设计5 6 7 3 1 基于w d m 型的u s b 驱动程序结构5 6 7 3 2u s b 驱动开发编程环境的建立5 8 7 3 3u s b 驱动创建方法及步骤5 9 7 3 4u s b 设备驱动程序的编程设计6 4 v ; 7 3 5 驱动程序的安装6 7 7 4 上位机应用程序的研究与设计7 0 7 4 1 获取指定类的所有设备信息集合的函数7 0 7 4 2 从设备信息集合中获取一个设备接口信息的函数7 1 7 4 3 获取指定设备接口详细信息的函数7 1 7 4 4 打开设备的函数7 2 7 4 5 应用程序访问驱动程序7 3 7 4 6 应用软件的使用7 5 8u s b 设备的测试7 7 8 1 多媒体u s b 键盘的测试7 7 8 2u s bm i d i 设备的测试8 0 8 3 白定义u s b 存储设备的测试8 3 8 3 1 数据量的测试8 3 8 3 2 速度的测试8 4 9 结论8 6 参考文献8 7 致谢8 9 附录:基于单片机的u s b 设备研究与设计部分电路原理图9 0 作者简介9 2 攻读学位期间发表的论文9 3 1引言 1 1 论文选题背景 随着计算机技术的飞速发展,越来越多的电脑外部设备相继出现,打印机、移动 硬盘、摄像头、数码相机等逐渐步入家庭,随之而来的是现有的一些外部输入输出 接口显得入不敷出,拥挤不堪。为了解决总线的传输速度和易用性的问题,i b m 、 c o m p a q 、i n t e l 、m i c r o s o f t 和n e c 等七家公司联合推出了一种新规格的外部输入输 出接口一7 s b ( u n i v e r s a l s e r i a lb u s ) 接口,即通用串行总线。u s b 总线与传统的总 线相比,具备了一些它们无法相比的先进优点【1 1 。 在1 9 9 6 年出现的第一代u s b l 0 速度只有1 5m b p s ,两年之后升级为u s b l 1 , 速度也被大大提高到了1 2m b p s ,至今在部分旧的设备上还存在这种标准的接口,然 而在当时市面上众多的设备也存在一个显著的缺点,那就是这些u s b 设备的传输速 度较慢。随后,c o m p a q 、n e c 和p h i l i p s 等7 家厂商联合制定的u s b 2 0 的产品给 出了新的希望。u s b 2 0 将设备之间的数据传输速度增加到了4 8 0 m b p s ,快过u s b l x 近4 0 倍。u s b 2 0 的高速传输意味着用户可以应用许多需要高带宽的外部设备,而 且具有多种速度的接口设备都可以被连接到该线路上,高带宽使得更多的设备无需担 心数据传输时发生速度瓶颈效应。另外,u s b 2 0 在高速的前提下保持了和u s b l x 一 样的优点,更是保证了向下兼容【2 】。然而,u s b 2 0 的速度现在在某些方面也已经无 法满足应用的需要,因此,u s b 3 0 也就应运而生了,它的最大传输带宽高达5 0g b p s , 也就是6 2 5m b s ,并且在使用a 型的接口时,保证了向下兼容。 正是看到了u s b 接口的先进性,世界各地的计算机相关厂商纷纷开始推出基于 u s b 接口的各种设备,比如移动硬盘、摄像头、鼠标、m o d e m 、游戏杆、扫描仪等 以前插在串行或并行等外部扩展接口上的部件,甚至电脑内部扩展槽上的设备都开始 以u s b 接口界面的形式出现。不仅仅是硬件厂商,一些软件厂商如m i c r o s o f t 、l i n u x 厂商等也在其软件的最新版本中增加了对u s b 接口的支持,并对以前的版本给出补 丁程序 3 】。随着u s b 3 0 的问世,输入输出的带宽得到了显著地扩展,从而也将会进 一步刺激u s b 外设的发展。 u s b 设备之所以会被大量应用,主要具有以下优点【4 : 连接非常简单,只需插入计算机上任意一个u s b 接口,它就可在不关闭计算机 的情况下支持“即插即用; 具有更大的带宽,有1 5 m b p s 的低速、1 2 m b p s 的全速和4 8 0 m b p s 的高速这三种 传送方式,比标准串行端口快1 0 0 多倍,比标准并行端口快1 0 多倍,符合了今 后中低高带宽的数据传送要求; 支持多达1 2 7 个设备,两个外设之间最长通信可以距离5 米; u s b 设备内置5 v 电源,因此,u s b 设备不再需要专门的电源线,可降低设备成 本,减少连线的复杂程度。 1 2 国内外现状及研究目的 从长远来看,u s b 接口技术作为一种全新的技术,必将取代传统的总线技术, 而采用u s b 接口的设备也必将成为未来计算机外围设备市场的主力,这是谁都不能 否认的事实。目前,u s b 接口已经取代了当时流行的串行端口和并行接口,成为了 计算机上最成功的外围连接接口。 从全球市场发展的规模而言,u s b 的产品出货量已经从2 0 0 4 年的七亿套成长至 2 0 0 9 年的二十一亿一千万套,年复合成长率为2 4 9 。从产品的应用类型来区分,在 u s b 的市场应用方面,主要分为计算机相关、消费性电子与通讯三大类,目前,最 大应用市场为计算机相关产品。远在几年前的2 0 0 5 年时,u s b 在计算机相关的应用 比重就已经占整体应用的6 9 9 ,而在消费性电子产品与通讯产品的应用则分占 2 0 6 与9 5 。在计算机相关领域中,由于计算机产业的微利趋势,免授权费的u s b 接口和i e e e1 3 9 4 接口相比,可以说是占尽了优势。而在u s b 2 0 推出后,它的速度 达达到了4 8 0 m b p s ,这种传输速度己能符合目前计算机与外围传输的需求,在成本优 势与合理效能下,目前,u s b 已是计算机相关外围的主流规格。而在消费性电子产 品方面,以应用在非实时性的静态影像或档案传输为主,如数字相机、m p 3p l a y e r 等 产品,消费者可利用u s b 接口将数字相机所摄取的数字元影像传至计算机上储存或 打印,或是透过计算机将音乐档案下载至m p 3p l a y e r 。至于在通讯方面的应用,包含 了外接式的缆线调制解调器( c a b l em o d e m ) 、d s l 调制解调器与r o u t e r 等。随着 u s b 3 0 的成功出现,计算机相关、消费性电子与通讯三大类设备将会在u s b 的应用 中所占的比重将会逐年升高,成为几乎所有产品的主流接口【3 】。 综上所述,计算机相关应用向来是高速传输接口的主要应用,随着个人计算机逐 渐迈向娱乐化,消费性电子产品与计算机之间的连接成为高速传输接口的重要应用, 高速传输接口在消费性电子产品上的出货量逐年增加。就高速传输接口u s b 而言, 其在计算机相关应用上占有优势,至于在消费性电子产品的传输应用上,则偏重非实 2 时性的静态影像或档案【3 1 。 1 3 课题主要研究内容和主要工作 本文设计了多媒体u s b 键盘、u s bm i d i 设备和自定义的u s b 存储设备这三 个具体的设备,研究并给出了这三种u s b 设备的设计的具体方法。对于硬件的设计, 需要掌握相关外围电路的设计方法,包括单片机和u s b 驱动芯片p d i u s b d l 2 的电 路设计等。在设计的过程中要把重点放在电路的稳定性和可靠性上。在软件的设计过 程中需要深入研究u s b 相关协议和u s b 设备固件的开发。对于自定义的u s b 存储 设备,不可避免地要开发自己的u s b 设备驱动,因此还要深入研究u s b 驱动的开发 方法和技巧,另外,为了实际的应用和调试的方便,又进一步研究和设计了适合自己 设备的上位机应用程序。 通过上述分析,各章节的内容安排如下: ( 1 ) 第一章介绍了本课题的研究背景、研究现状和目的以及课题的主要内容; ( 2 ) 第二章给出了u s b 的相关标准,包括u s b 的拓扑结构、电气特性和通信包等; ( 3 ) 第三章给出了系统硬件设计方案,尤其是处理器和u s b 接口通信模块的设计; ( 4 ) 第四章详细介绍了u s b 固件程序的设计方法,详细介绍的各种描述符的实现; ( 5 ) 第五章介绍了多媒体u s b 键盘的研究与设计,特别给出了h i d 的相关设知识; ( 6 ) 第六章介绍了u s bm i d i 设备的设计,给出了音频设备设计的特殊接口的实现; ( 7 ) 第七章介绍了自定义的u s b 存储设备的设计,包括固件、驱动和应用程序的设计; ( 8 ) 第八章给出了所设计的u s b 设备的相关测试,包括设备的性能、数据的测试; ( 9 ) 最后是对本文的总结。 2u s b 的标准 2 1u s b 概述 u s b 是通用串行总线( u n i v e r s a ls e r i a lb u s ) 的简写,从诞生后发展到今天,已有 十多年的历史。u s b 的出现大大简化了个人计算机与外围设备的连接,增加了易用 性。总的来说,u s b 是一种高效、快速、性价比高、扩展性强、良好的兼容性、体 积小及支持热插拔的新型的串行通信接口。它支持多个外部设备的连接和通信,尤其 是即插即用的特点可以让用户在不重启计算机的情况下直接可以和计算机通信。目 前,u s b 已经逐步取代了一些老式通信接口,比如串口、并口和p s 2 接口等【4 】。表 2 1 列出了一些常用计算机接口的比较。从该表中明显可以看出u s b 总线所具有的其 他总线无法相比的优点【5 1 。 表2 - 1 常用计算机接口比较 。 在u s b 协议中出现过的版本有u s b l 0 、u s b l 1 和u s b 2 0 ,u s b 3 0 也即将面 世,投入使用。u s b 是基于主从模式的,也就是说设备与设备之间、主机与主机之 间不能互连,为了解决这个问题,扩大u s b 的使用范围,于是出现了u s bo t g ( o nt h e g o ) 。u s bo t g 的做法是,同一个设备,在不同的场合下可以在主机或从机之间切换。 在早期的u s b l 0 和u s b l 1 版本中,只支持1 5m b p s 的低速( l o ws p e e d ) 模式和 1 2m b p s 的全速( f u l ls p e e d ) 模式。在随后的u s b 2 0 中,又加入了4 8 0 m b p s 的高速( h i g h s p e e d ) 模式。目前,u s b 3 0 协议也已经颁布了,速度比u s b 2 0 的高速模式还要快 l o 倍,即达到5g b s 左右。 值得设计者特别注意的是,具有u s b 2 0 接口并不一定是高速设备,因为u s b 2 0 协议对设备的高速模式并不是强制的,而是可选的。例如驱动芯片p d i u s b d l 2 是 符合u s b 2 0 协议的,但是它不支持高速模式,只支持1 2m b s 的全速模式。 4 2 2u s b 的拓扑结构 从用户的角度来看u s b 系统,它是由u s b 设备、计算机( 主机) 和u s b 电缆线组 成。u s b 是一种主从结构。主机叫做h o s t ,从机叫做d e v i c e ( 也叫做设备) 。通常所说 的主机具有一个或多个u s b 主控制器( h o s tc o n t r o l l e r ) 和根集线器( r o o th u b ) 。主控制器 主要负责数据处理,而根集线器则提供一个连接主控制器与设备之间的接口和通路。 另外,还有一类特殊的u s b 集线器( u s bh u b ) ,它可以对原有的u s b 接口在数量上 进行扩展,因此,可以获得更多的u s b 接口。 一般计算机上会有多个u s b 主控制器和多个u s b 接口。每个主控制器下有一个 根集线器,根集线器下一般有一个或者多个u s b 接口。但是,当不同的u s b 设备都 需要较大的数据带宽时,可以考虑将它们分别接到不同的主控制器的根集线器上,以 避免带宽不足而带来的问题。 u s b 的数据传输只能在主机和设备之间进行,而主机和主机,设备和设备之间 是不能互连的。为了在物理上区分主机和设备,使用了不同的插头和插座。所有的数 据传输都由主机主动发起,而设备只是被动的负责应答。例如,在读数据时,u s b 主机先发出读命令,设备收到该命令后,才返回数据。在u s bo t g 中增加了一种 m i n iu s b 接头,比普通的4 线u s b 多了一个i d 表识线,用来表明它是主机还是设 备。一个设备可以在从机和主机之间切换,这样就可以实现设备与设备之间的连接, 大大增加了u s b 的使用范围。但这时依然没有脱离这种主从关系,两个设备之间必 然有一个作为主机,另一个作为从机。u s b 的拓扑结构为金字塔形,如图2 1 所示。 3 t i e r 4 图2 - 1u s b 的金字塔形拓扑结构 拓扑结构的最上面是u s b 主控制器要和根集线器,下面接入的是u s b 集线器, u s b 集线器将一个u s b 口扩展为多个u s b 口,因此,通过集线器可以获得更的u s b 接口。然而,在u s b 协议中对集线器的扩展层数是有限的,在u s b l 1 中,规定最 多为4 层,u s b 2 0 规定最多为6 层。理论上一个u s b 主控制器最多可接1 2 7 个设备, 5 这是由数据包中的7 位地址位决定的,但是实际上不能使用这么多的设备。一般所说 的一个u s b 主控制器可以连接多个u s b 设备,并不是直接简单的将多个设备并联或 者串联,而是要由集线器负责埠扩展,才能连接更多的设备。在个人的计算机上,也 有一个( 或者多个,视u s b 主控制器的个数而定) 集线器,它叫做根集线器,直接连在 u s b 主控制器上。在设备管理器中,可以看到u s b 主控制器和根集线器。图2 2 和 图2 3 分别给出了u s b 集线器和u s b 集线器的连接示意图【4 】。 下行端霹i下行端焉2 f 行端1 2 5f 行端n 4 图2 - 2u s b 集线器示意图 下 行 端 霸 3 图2 - 3u s b 集线器的连接示意图 一个完整的u s b 数据传输路径如下:u s b 主控制器发出数据包,该包通过根集 线器,再通过下面的集线器( 如果有扩展的话) ,再发给u s b 设备;然后设备返回应答 数据,交给它上层的集线器,上层的集线器再交给更上层的集线器,直到传输到u s b 主控制器为止。然后u s b 主控制器就会通过主板上的p c i 接口与c p u 进行通信了。 6 在w i n d o w s 中,u s b 由各种驱动程序负责管理,最后由驱动程序产生功能设备( f d o ) , 这就是所看到的实际设备了。应用程序就可以利用w i n d o w s 提供的各种a p i 函数访 问u s b 设备,例如c r e a t e f i l e ,r e a d f i l e ,d e v i c e l o c o n t r o l 等。 2 3u s b 的电气特性 标准的u s b 接口使用4 根线:5 v 电源线( v b u s ) 、差分数据线负( d ) 、差分数据 线正( d + ) 和地( g n d ) 。u s b 使用的是一种差分传输模式,主要使用两根数据线d + 和 d 。在u s b 的低速和全速模式中,采用的是电压传输模式。而在高速模式下,则是 电流传输模式。关于具体的高低电平门限值,可以参看u s b 相关协议。 u s b 使用的是n r z i 编码方式,在传输过程中的数据为o 时,电平翻转,数据 为1 时,电平不翻转,如图2 4 所示。为了防止出现长时间电平不变化( 这样不利于 时钟信号的提取) ,在发送数据前要经过位填充( b i ts t u f f i n g ) 处理。位填充处理的过程 是这样的:当遇到连续6 个数据为1 时,就强制插入一个数据0 。经过位填充后的数 据,由串行接口引擎( s i e ) 将数据串行化和n r z i 编码后,发送到u s b 的差分数据在 线。在接收端,刚好是一个相反的过程。接收端采样数据线,有s i e 将数据并行化( 反 串行化) ,然后去掉位填充( 反位填充) ,恢复出原来的数据。通常,使用现成的u s b 芯片,像位填充,串行化这些芯片内部的硬件已经帮做好了,因此通常并不用关心这 些细节。在设备接收数据时,芯片的串行接口引擎( s i e ) 会接收属于自己地址的数据, 并根据相应的埠号,放到相应的缓冲区内,并返回a c k 给主机进行确认,然后产生 中断请求,通知程序,已经收到数据包了。在还未处理完缓冲区的数据之前,如果再 收到对该端点的输出请求,u s b 芯片将会使用n a k 返回,告诉主机端点现在忙,主 机检测到n a k 后,过段时间会重试输出数据,直到超时为止;发送数据时,用户将 数据写入u s b 芯片的缓冲区,并通知u s b 芯片缓冲区内数据可用,然后u s b 芯片 检测到主机请求对应的端点输入时,它就会将数据返回,数据发送完毕并收到主机的 a c k 确认之后,产生中断请求通知应用程序数据已经发送完毕。如果u s b 芯片已经 收到了输入请求,但是用户程序还未填充好缓冲区,它也会用n a k 返回,告诉主机 数据还未准备好。主机收到n a k 后,过段时间会重试,直到超时为止【6 】。 在u s b 协议中规定,设备在未配置之前,可以从v b 璐上最多获取1 0 0 m a 的电流; 在配置之后,最多可从v b 惦上获取5 0 0 m a 的电流。v b u s 是5 v 的电压,具体的参数可 以参看u s b 相关协议。 7 燃蒯弋习:一: : :二产 , l 反转喜反转l 反转l 曩l 曩1 - n r z l 乏习厂r 厂一 2 gu s b 的描述符及相互间的关系 u s b 和其他总线一样,仅仅提供了一个数据通路而已。u s b 总线驱动程序并不 知道一个设备具体如何操作,有哪些行为。具体的一个设备实现什么功能,有由设备 自己来决定。那么,u s b 主机是如何知道一个设备的功能以及行为呢? 这就要通过 描述符来实现了。描述符中记录了设备的类型、厂商d 和产品i d 、端点情况、版本 号等众多信息【6 1 。 u s b l 1 协议定义的标准描述符有设备描述符( d e v i c ed e s c r i p t o r ) 、配置描述符 ( c o n f i g u r a t i o nd e s c r i p t o r ) 、界面描述符( i n t e r f a c ed e s c r i p t o r ) 、端点描述符( e n d p o i n t d e s c r i p t o r ) 及字符串描述符( s t r i n gd e s c r i p t o r ) 。u s b 2 0 协议中又增加了两个新的标准 描述符:d e v i c eq u a l i f i e rd e s c r i p t o r 和o t h e rs p e e dc o n f i g u a r a t i o nd e s c r i p t o r 。另外还 有一些特殊的描述符,例如类特殊描述符( 如h i d 描述符和音频界面描述符) 、厂商自 定义的描述符等 们。 一个u s b 设备有一个设备描述符,设备描述符里面决定了该设备有多少种配置, 每种配置描述符对应着配置描述符;而在配置描述符中又定义了该配置里面有多少个 接口,每个接口有对应的接口描述符;在接口描述符里面又定义了该界面有多少个端 点,每个端点对应一个端点描述符;端点描述符定义了端点的大小,类型等。如果还 有类特殊描述符,它们应该在相应的接口描述符之后。由此可以看出,u s b 的描述 符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是 界面描述符,再下面是端点描述符。在主机获取描述符时,首先获取设备描述符,然 后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口 描述符、端点描述符一起一次读回。对于字符串描述符,是单独获取的。主机通过发 送获取字符串描述符的请求以及描述符的索引号、语言d 来获取对应的字符串描述 符【6 】。 设备描述符主要记录的信息有:设备所使用的u s b 协议版本号、设备类型、端 点0 的最大包大小、厂商i d ( v i d ) 和产品i d ( p i d ) 、设备版本号、厂商字符串索引、 产品字符串索引、设备序列号索引、可能的配置数等。 配置描述符主要记录的信息有:配置所包含的接口数、配置的编号、供电方式、 是否支持远程唤醒、电流需求量等。 接口描述符主要记录的信息有:接口的编号、接口的端点数、接口所使用的类、 子类、协议等。 端点描述符主要记录的信息有:端点号及方向、端点的传输类型、最大包长度、 查询时间间隔等。 字符串描述符主要是提供一些方便人们阅读的信息,它不是必需的。 这里所说的设备,就是一个实实在在的u s b 设备,例如一个u s b 键盘。设备有 一个设备地址,u s b 主机依靠这个设备地址来访问设备。而在设备内部还会分得更 细。它会分出一些端点出来,例如端点0 、端点1 等。就是说,如果u s b 主机要和 u s b 设备通信,只有设备地址是不够的,还需要一个端点地址。有了设备地址和端 点地址,就能准确地对端点发送和读取数据了。比如你要去找9 号教学楼的5 0 6 教室, 9 号楼就是设备地址,而5 0 6 教室就是端点地址。对于配置和接口来说,它们是为了 更方便地管理端点而抽象出来的概念。一个设备可以有多个配置,但是同一时刻只能 有一个配置有效。每个配置下又可以有多个接口。当需要不同的功能时,只要选择不 同的配置即可。比如以教学楼来说,可以把它分成两个配置:平时上课用和期末考试 用。考试用时,全部的教室都拿来作考场( 即该配置下只有一个接口,接口下有很多 端点教室) ;而平时上课用时,分成两类( a p 该配置下有两个接口,每个接口下有 一些端点教室) :教师休息室和上课的教室。教师休息室和上课的教室是不能共 享的( 这在u s b 中也是如此,同一个端点号不能出现在同一个配置下的两个或多个不 同的接口中) 。但是平时用来做教室或者休息室的教室,考试时都可以拿来作考场。 具有多个接口来实现功能的设备把它叫做u s b 符合设备,例如一个u s b 音频设备, 它具有一个音频控制口,另外还可能具有一到多个音频流或m 1 d i 流接口。在主机端 会把u s b 复合设备的每个接口当作一个功能设备来看待。像常见的u s b 鼠标、u 盘 等,通常是单一的设备,即一个设备下只有一个配置描述符、一个接口描述符1 6 1 。 通过上述可知,由端点构成一个接口( 或者反过来说,接口是端点的集合) ,由接 口又构成一个配置( 反过来说,配置是接口的集合) ,再由配置构成一个设备( 设备是配 置的集合) 。 9 2 5u s b 设备的枚举过程 u s b 主机在检测到u s b 设备插入后,就要对设备进行枚举了。所谓的枚举就是 从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根 据这些信息来加载合适的驱动程序。调试u s b 设备,最重要的就是u s b 的枚举过程。 在设备的枚举过程中都是使用控制传输,这种传输在u s b 中是非常

温馨提示

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

评论

0/150

提交评论