我学习USB设计的历程
[zz] 我学习USB设计的历程
-献给即将学习USB和对此感兴趣的朋友
作者:duoduo
最初想学习USB的原因在于当时非常非常想有一台通用编程器,商用的编程器虽然功能好,但是价格昂贵,仅仅为了编程几种芯片就去买一个似乎很可惜(我现在已经买了编程器了:))。
于是想自己做一个很简单的,用串口?并口?一想到要加个又大又笨的外置电源就不喜欢,用USB,不错,有总线供电,这点很吸引人,就是当时我对USB 一窍不通,那就找资料看看吧。
当时USB技术刚刚兴起,USB器件在电子市场上还是很少见,在网上逛了很多天,最后决定用Philips公司的PDIUSBD12作为USB控制器,主要原因是Philips提供的技术文档比较详细。
看了Philips公司的相关资料,似乎硬件电路并不难,于是自己画了原理图,检查了N遍,应该没问题了,然后制PCB,初步硬件调试,一切都很顺利。
接下来就是考虑软件怎么写。
一提到软件,这下头大了。
看了几天PDIUSBD 12的数据手册,天啊,这么多稀奇古怪的寄存器都是些什么呀,见鬼。
看来不了解USB的协议根本就无法去对PDIUSBD12进行程序设计。
于是只好去翻USB1.1规范,那可是200多页的英文哪,又不是74系列的手册那样几个参数一看就OK了,好在我的专业英语还不算太差,硬着头皮看吧。
当时看了近一个月,简直象进了迷宫一样,根本搞不清东西南北。
当时书店关于USB的书只有一本国防科大的USB总线接口开发指南,买回来回来仔细一看,天,简直是英文USB1.1规范的中文
简化版,有些英文的术语一翻译过来怎么着看都不舒服,而且省略了很多部分,一样看的不得其门而入,于是扔掉了书(冤枉国防科大的这本书了,后来讲USB的书满天飞,我都翻过,不敢说它们都是垃圾,但是我认为国大的书的编者言语之间对USB确实还是了解很深的,其他大多数书的编者/译者,有的竟然能把pullup resistor of collector翻译成“向上电阻收集器”,嘿嘿,我就不多说了),继续研究E文。
当时另外一个朋友在我的极力鼓吹下也跟我一起没日没夜热情高涨地研究了
很多天,可惜后来没有修成正果:)。
当时身边虽然博士教授们一大堆,可是没有人研究过USB,只好装上猎狗的鼻子,去网上四处搜索,倒是有一些线索,可是没有很有用的。
这时一个网友给了我一份传说是Philips的C51固件代码,我大喜过望,兴冲冲编译一下,天,无数的Error。
硬着头皮去改,发现源文件残缺不全,注释也非常的少,一点点地自己摸索着把代码补上来,这期间我把代码和USB规范结合着看,模模糊糊有些明白了,就这样磕磕绊绊地又搞了一个月,熬了无数通宵,程序终于编译通过了。
当我颤抖着手把我的板插上USB电缆的时候,奇迹竟然出现了,硬盘一阵狂响之后,Windows赫然蹦出一个发现新硬件的对话筐。
My God!我成功了也!!欢喜还没过去,装上Philips的驱动程序,想看看我的板上的开关呀、灯呀的动一动,这才发现我的硬件和Philips的不完全一样,所以和Philips的应用程序不能完全兼容,虽然驱动装上了,板子上的灯啊、开关呀却无法控制。
看来得改改程序了。
这一改程序才知道自己现在对USB协议不过仅仅是略懂了一些皮毛,当按照自己的理解去做了修改以后,PC根本就不能正确识别出我的设备。
然后我明白,没有真正理解USB协议,就不会真正地写出自己的程序,更谈不上开发USB接口产品。
好在这一段时间的摸索得到了一些经验,对USB也有了一些基本正确的认识,精神上受到了一些鼓舞,于是我继续研究USB E文规范。
一个月过去了,又一个月过去了,我感觉虽然理解了很多了,但是有些关键的地方仍然没有真正透彻理解,似乎只差薄薄的一层半透明的纸了,只要稍稍有人点拨一下就能顿悟了,可惜仙人没有出现,因此我的程序始终存在问题,此时我真的有些绝望了,USB开发暂时搁置。
不久我到一家公司从事USB方面的工作,接触到了一种SOC的U SB程序设计。
生存的压力使我不得不努力去克服对USB通讯的心理恐惧,仔细研读USB协议,此时USB的相关资料也渐渐丰富了,并且现在手边有了逻辑分析仪、高档示波器等设备,我甚至用逻辑分析仪仔细捕捉过USB通讯的协议实现的物理过程,也用Verilog HDL写过USB host的行为仿真模型提供给FPGA系统模拟。
两个月以后,我终于对USB的理解有了质的飞跃,对USB传输数据流过程已经很熟悉,对那片SOC,我可以仅用不到600字节的代码使PC发现新硬件。
后来我捡起从前的那块PDIUSBD12 USB板,按照自己对USB的理解完全重新做了程序设计,这次非常顺利,完成PC主机对USB设备的枚举过程已经是轻松的事情了。
但是要完全完成一个USB设备的
设计,这只是走过了第一个阶段,下一个艰苦的过程则是驱动程序的设计,没有驱动程序,用PC软件控制USB设备根本就是天方夜谈。
最初我用Windriver做了硬件诊断,一切都OK之后,可以选择用Windri ver生成一个驱动程序和测试台应用程序,但是Windriver的驱动程序安装方法让我觉得很别扭,我认为一个可以商用级的USB设备不应该采用这种方法。
另外,Windriver502版本似乎和Xilinx的ISE6.1软件冲突,ISE安装过程经常蓝屏,而且这个版本的Windriver在Win2K S P3以上系统中安装必定会导致系统黑屏。
另外有一个近于专业级的驱动程序开发工具DriverStudio,我看过一段时间,感觉它外表和Windo ws DDK完全不同,但是实际上它并没有把DDK做过于严实的封装,处处可以看到DDK的影子,掌握DriverStudio其实也同样需要对DDK 有较多的理解。
我选择了Windows DDK作为驱动设计工具,虽然我还没有计划做一个专业级的驱动程序设计者,但是在这方面多做一些深入的理解决没有坏处。
DDK有很多驱动程序的例子,其中有一个bulkus b的例子,仔细看过之后,其实把它修改一下就可以变成自己设备的驱动,这也正是Microsoft推荐驱动设计者开发设备驱动程序的方法。
DD K确实过于博大精深,我想,能够达到自己的设备驱动可以正常工作这个目的就可以了,没有必要搞清楚驱动程序设计中的每一个细节。
当时我也曾经花了很大的力气才终于达到这个目的,其中的艰难到读者自己去经历的时候就能够体会了(你可能会把Microsoft号称非常稳定的Win 2K整的死去活来:))。
好,现在是最后一个阶段了:设计应用程序。
这个应该是整个设计中最轻松的阶段了,通过驱动程序控制硬件设备,
VC++是很好的工具,当然这个并不是每个人都必然的选择。
当写完最后一句代码,运行程序,看到设备在鼠标键盘点动之间随心所欲受你的控制的时候,那种令人飘然的成就感真的是难以形容。
现在,带USB接口的器件很多了,而且有很多已经是USB2.0 Hig h speed设备了。
我有幸见识了许多USB器件的应用,感觉不论是U SB full speed还是High speed,也不管这个器件到底只是一个USB 控制器还是复杂的SOC,USB通讯部分其实大家都是大同小异的。
现在USB OTG技术经过几年有些沉默的发展之后终于柳暗花明,开发U SB OTG设备应该是USB通讯技术下一阶段的热点。
其间还曾出现了一类USB Host器件,算是弥补USB1.1和USB OTG之间暂时的空白吧。
也许我悟性太差,学习USB的历程真的是非常艰难,还有许多朋友也许会有和我一样的痛苦,我把自己的USB学习经历写出来,希望能够给后来者一些有益的启示,同时也希望能够给大家一些鼓舞:再大的困难,只要肯努力,也是能够克服的;USB通讯完全不同RS232,要能够硬着头皮看E文,要有懂USB的朋友指点,要有很好的参考代码,要自己肯动脑筋去思考,要有强烈的兴趣和恒心,这样的话,即使时间稍长一点,最终你也是能掌握USB的。
我不希望我的经历让想学习USB的朋友感到恐怖,在你学习USB 之前,先要给自己定一个将要达到的标准:如果你希望自己能够完全掌握USB通讯技术,达到能够设计USB physical和SIE部分的水平,那麽这就是USB硬件设计的至高境界了,不过只有IC设计公司集中若
干人力花费若干年时间投入若干经费才能够做得了的。
如果你想掌握硬固件编程、驱动程序设计,那么你需要准备吃点苦;如果你不需要关心USB通讯的具体过程,只是固件应用中和底层简单的进行数据交换,或者是PC应用程序设计,呵呵,恭喜了,你会发现USB通讯其实很简单。
usb设计调研报告
usb设计调研报告USB 设计调研报告一、引言随着科技的发展和信息技术的普及,USB(Universal Serial Bus,通用串行总线)已经成为了现代设备之间数据传输的标准接口。
为了了解USB的设计原理、应用范围和未来发展趋势,我们进行了一次USB设计调研。
本报告将从USB的起源、设计原理、应用和未来发展四个方面进行介绍和分析。
二、USB起源USB最早是由英特尔、微软和康柏三家公司共同推出的一种外部总线标准接口。
1996年,第一代USB 1.0规范发布,它的数据传输速率为1.5Mbps,用于连接个人计算机及其外部设备。
随着技术的发展,USB 2.0规范在2000年发布,数据传输速率提升到480Mbps。
目前,USB 3.0和USB 3.1规范已经发布,传输速率分别达到5Gbps和10Gbps。
三、USB设计原理USB的设计原理主要包括物理层、数据链路层、传输层和应用层。
物理层负责传输电源和数据信号,它采用了差分线对来减少电磁干扰。
数据链路层负责数据的传输和错误检测,它使用了数据包和差错校验码来保证数据的可靠性。
传输层负责数据包的重组和流量控制,它使用了令牌控制和唤醒机制来管理多个USB设备之间的数据传输。
应用层提供了一系列标准接口和协议,以便不同设备之间的互连和通讯。
四、USB应用范围USB的应用范围非常广泛,几乎遍及各个行业和领域。
在计算机领域,USB用于连接鼠标、键盘、打印机、扫描仪等外部设备;在消费电子领域,USB用于连接手机、摄像机、音响等设备;在工业控制领域,USB用于连接传感器、执行器、仪表等设备。
五、USB未来发展趋势USB的未来发展趋势主要包括提高传输速率、增加功耗管理功能和扩展应用领域。
随着技术的进步,USB的传输速率还将继续提升,以满足大数据传输和高清视频传输的需求。
此外,USB还将加强对设备功耗的管理,以提高电池续航时间和节省能源。
最后,USB还将拓展应用领域,例如在医疗设备、智能家居、无人驾驶等领域发挥更重要的作用。
USB系统结构与应用设计(1)
USB系统结构与应用设计(1)摘要:通用串行总线是一种简单的计算机外围接口标准。
它具有即插即用、扩展方便等优点,已成为计算机必备的一个接口。
本文简要介绍 USB总线的功能、拓朴结构及其数据传输过程,并举例说明USB接口的实际应用。
关键词:通用串行总线 USB接口外围接口标准一、USB接口背景在早期的计算机系统上常用串口或并口连接外围设备。
每个接口都需要占用计算机的系统资源。
无论是串口还是并口都是点对点的连接,一个接口仅支持一个设备。
因此每添加一个新的设备,就需要添加一个 ISA/EISA 或 PCI 卡来支持,同时系统需要重新启动才能驱动新的设备。
USB总线是INTEL、DEC MICROSOFTIBM等公司联合提出的一种新的串行总线标准,主要用于PC机与外围设备的互联。
USB总线具有低成本、使用简单、支持即插即用、易于扩展等特点,已被广泛地用在 PC机及嵌入式系统上。
二、USB总线优缺点1.优点(1)使用简单所用USB系统的接口一致,连线简单。
系统可对设备进行自动检测和配置,支持热插拔。
新添加设备系统不需要重新启动。
(2)应用范围广USB系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种传输方式。
一个USB系统最多可支持127个物理设备。
USB设备的带宽可从几 Kbps到几 Mbp& —个USB系统可同时支持不同速率的设备,如低速的键盘、鼠标,全速的ISDN、语音,高速的磁盘、图像等。
(3)较强的纠错能力USB系统可实时地管理设备插拔。
在 USB协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。
4)总线供电USB总线可为连接在其上的设备提供5V电压/100mA电流的供电,最大可提供 500mA的电流。
USB设备也可采用自供电方式。
( 5)低成本USB接口电路简单,易于实现,特别是低速设备。
USB系统接口 /电缆也比较简单,成本比串口 /并口低。
USB-Hub-的设计与生产-毕业实习报告
毕业实习报告题 目: USB Hub 的设计与生产科技学院信息工程系2010年10月05日姓 名:专 业:电子信息工程 班级学号: 指导教师:本次毕业实习地点为深圳市威鑫联电子有限公司,该公司是一家集专业设计开发、生产、销售各种精密连接器和接插件的专业厂商。
产品广泛应用于计算机主机板、液晶显示器、电讯卡、存储器、移动硬盘、读卡器、数码相机、MP3、PDA、液晶电视、交换机、汽车防盗器、可视电话、无线电话及各种通讯设备产品上.公司本着产品专一、专业、专注的特点为,主要与国内大中型知名企业和国际著名跨国公司合作,其产品远销欧美,日韩,新加坡及香港台湾等等国家和地区,分别于香港,台湾,上海,北京等地设立分公司。
公司自创建以下,积极倡导以人为本,科技创新的穞理念,积极追求产品的科技会计师和完美的产品质量,引进国外先进的生产设备和检测设备,拥有先进的模具设计、开发及制造能力。
公司目前已成为有资源保证和品质保障、技术力量雄厚、生产检测设备、实行现代企业管理制度、具有先进电子通讯信息和电子商务平台的外向型企业。
本着立足深圳放眼全球的信念,威鑫联人正以创新、诚信、务实的工作态度,以实行品牌战略为宗旨,竭诚为客户提供优质满意的服务。
第一章设备组成、工作原理及用途.。
.。
.。
...。
..。
.。
.....。
.。
...。
.。
......。
...。
...。
.。
..。
....。
..。
.。
3第二章产品的开发和生产工艺过程及产品结构.。
.。
.。
..。
....。
.。
.。
.....。
.。
.。
.。
.。
.。
.。
.8第三章毕业实习总结和体会。
..。
.。
..。
.。
....。
.。
.。
.。
...。
.。
...。
.。
..。
..。
.。
...。
.。
.。
.。
.。
.。
..。
.。
12第四章实习工作建议.。
.。
..。
.。
.。
.。
..。
....。
..。
.。
....。
...。
.。
...。
.。
..。
.. ...。
..。
.。
...。
.。
..。
.。
13第五章附录..。
学USB的经历
最初想学习USB的原因在于当时非常非常想有一台通用编程器,商用的编程器虽然功能好,但是价格昂贵,仅仅为了编程几种芯片就去买一个似乎很可惜(我现在已经买了编程器了:))。
于是想自己做一个很简单的,用串口?并口?一想到要加个又大又笨的外置电源就不喜欢,用USB,不错,有总线供电,这点很吸引人,就是当时我对USB一窍不通,那就找资料看看吧。
当时USB技术刚刚兴起,USB器件在电子市场上还是很少见,在网上逛了很多天,最后决定用Philips公司的PDIUSBD12作为USB控制器,主要原因是Philips提供的技术文档比较详细。
看了Philips 公司的相关资料,似乎硬件电路并不难,于是自己画了原理图,检查了N遍,应该没问题了,然后制PCB,初步硬件调试,一切都很顺利。
接下来就是考虑软件怎么写。
一提到软件,这下头大了。
看了几天PDIUSBD12的数据手册,天啊,这么多稀奇古怪的寄存器都是些什么呀,见鬼。
看来不了解USB的协议根本就无法去对PDIUSBD12进行程序设计。
于是只好去翻USB1.1规范,那可是200多页的英文哪,又不是74系列的手册那样几个参数一看就OK了,好在我的专业英语还不算太差,硬着头皮看吧。
当时看了近一个月,简直象进了迷宫一样,根本搞不清东西南北。
当时书店关于USB 的书只有一本国防科大的USB总线接口开发指南,买回来回来仔细一看,天,简直是英文USB1.1规范的中文简化版,有些英文的术语一翻译过来怎么着看都不舒服,而且省略了很多部分,一样看的不得其门而入,于是扔掉了书(冤枉国防科大的这本书了,后来讲USB的书满天飞,我都翻过,不敢说它们都是垃圾,但是我认为国大的书的编者言语之间对USB确实还是了解很深的,其他大多数书的编者/译者,有的竟然能把pullup resistor of collector翻译成“向上电阻收集器”,嘿嘿,我就不多说了),继续研究E文。
当时另外一个朋友在我的极力鼓吹下也跟我一起没日没夜热情高涨地研究了很多天,可惜后来没有修成正果:)。
USB系统结构与应用设计
USB系统结构与应用设计【摘要】USB系统结构与应用设计在现代科技中扮演着重要的角色。
本文通过对USB系统结构与应用设计的重要性、发展历程和应用领域进行探讨,详细介绍了USB的基本结构与工作原理、接口类型及特点,以及在计算机外设和嵌入式系统中的广泛应用。
指出了USB系统设计中需要注意的事项,并对未来发展方向进行展望,总结了关键要点并展示了USB技术在未来的应用前景。
这篇文章将帮助读者深入了解USB 系统结构与应用设计的重要性和发展趋势,为相关领域的研究和实践提供有益的指导。
【关键词】USB系统结构,应用设计,USB发展历程,USB应用领域,USB 基本结构,工作原理,USB接口类型,特点,计算机外设,嵌入式系统,系统设计注意事项,未来发展方向,关键要点,应用前景。
1. 引言1.1 USB系统结构与应用设计的重要性USB系统结构与应用设计在当今信息化社会中扮演着至关重要的角色。
随着科技的不断发展,USB技术已经成为各种设备之间进行数据传输和通信的基础。
其重要性体现在以下几个方面:USB系统结构与应用设计能够提高设备之间的互联性和兼容性。
通过USB接口,不同厂商生产的设备可以方便地连接到计算机或其他主机上,实现数据传输和共享。
这极大地方便了用户的使用体验,促进了不同设备之间的互操作性。
USB系统结构与应用设计有助于提升设备的性能和功能。
USB接口的高速传输能力和稳定性,使得设备能够更快速地进行数据交换,提高工作效率。
通过USB接口还可以实现设备的功能扩展,比如连接外部存储设备、打印机、摄像头等,为用户提供更多的功能选择。
USB系统结构与应用设计还能够降低设备制造成本和提高市场竞争力。
相比于传统的接口设计,USB接口具有统一的标准和规范,可以降低设备的生产成本和研发周期。
USB接口也更符合市场需求,增强了设备的销售吸引力和竞争优势。
USB系统结构与应用设计的重要性不言而喻。
它不仅为设备之间的连接和通信提供了便利,还为设备的性能和功能提升提供了可能,同时也为设备制造商降低了成本并提高了市场竞争力。
USB设计概要
USB协议归纳一.USB的描述符及其之间的关系描述符的作用:记录了设备的类型,厂商ID、产品ID(通常依靠他们加载对应的驱动程序)、端点情况、版本号等众多信息。
种类:设备描述符,配置描述符,接口描述符,端点描述符及字符串描述符。
各描述符的关系:一个USB设备只有一个设备描述符。
设备描述符里决定了该设备有多少种配置,每种配置都有一个配置描述符,而每个配置描述符中又定义了该配置里有多少个接口,每个接口都有一个接口描述符,接口描述符里定义了该接口有多少个端点,每个端点都有一个端点描述符,端点描述符定义了端点的:设备描述符:主要记录设备所使用的USB协议版本号、端点0的最大包大小、厂商ID(VID)和产品ID(PID)、设备版本号、厂商字符串索引、产品字符串索引、设备序列号索引、可能的配置熟等。
配置描述符:主要记录配置所包含的接口数、配置的编号、供电方式、是否支持远程唤醒、电流需求量等。
接口描述符:主要记录接口的编号、接口的端点数、接口所使用的类、子类、协议等。
端点描述符:主要记录端点号及方向、端点的传输类型、最大包长度、查寻时间间隔等。
字符串描述符:主要提供一些方便人们阅读的信息,它不是必须的。
二.设备的枚举过程控制传输{建立过程:开始于一个SETUP令牌包,后面紧跟一个DATA0数据包数据过程:{控制读传输:数据过程输入数据控制写传输:数据过程输出数据建立过程:数据长度为0,就是没有数据过程。
状态过程{控制读传输:数据过程输出数据控制写传输:数据过程输入数据(状态过程用来确认所有的数据是否已经正确传输完成)设备的枚举框图 {{ 再次获取设备描述符配置描述符 配置描述符集合 如果有字符串描述符还要获取。
像HID 设备还有报告描述符。
枚举过程完成了剩下的工作就不多了。
三.USB 的包结构及传输过程USB 必须按照一定的关系把不同的包组织成事务才能传输。
事务通常有两个或者三个包组成:令牌包、数据包、和握手包数据包的分类:令牌包、数据包、握手包主机 设备 设备描述符标准请求(这是一个建立过程)设备描述符(数据过程)(没错误情况)0长度的确认数据包(状态过程) 主机对设备再次复位 设置地址请求请求(建立过程)数据包中包含新地址 连接以后 主机对设备复位几次,设备地址为0.、 输入令牌包(没有数据过程) 0长度状态数据包(状态过程) ACK 应答包(收到应答包之后启用新地址) 具体的新地址有主机负责管理,主机会分配一个唯一的地址给设备、{令牌包{INOUTSETUPSOF 数据包{DATA0DATA1握手包{ACKNAKSTALL 特殊包:PRE包的结构:一个包被分成了不同的域,根据不同的包所包含的域是不一样的。
自己动手做USB
自己动手做USB1、USB-HUB 概述目前USB2.0 标准分为高速(480Mb/s), 全速(12Mb/s),和低速(1.5Mb/s)三个版本现在绝大部分是高速标准了,USB2.0全速相当于USB 1. 1 标准,已经属于淘汰产品;USB 低速等同于USB 1. 0二手市场才能偶遇到这种老东西了。
现在最新的USB 规范是USB 3.0 。
品牌USB Hub附带的USB线直径明显更粗,通常采用编织线+铝箔双层屏蔽+四根抗拉线+四根传输芯线的USB 2.0标准,线阻低、屏蔽性好,可以提供更佳的供电能力和信号传输距离。
极少数优质USB线的两端还带有磁环,可以提供更出色的电气性能,减轻与其它设备的电磁干扰。
在USB Hub长时间工作后,可以触摸其外壳感受温度,温度越低越好,这意味着产品发热量小,能够长时间稳定工作。
2、HUB主要芯片方案:主要品牌有慧荣、擎泰、联盛安国、创惟等。
USB控制芯片选型:(1)NEC 最早参与制定USB 标准的企业之一,其USB 2.0 控制芯片一向以稳定快速著称,早年受到众多发烧友的追捧。
UPD720114GA 价格还是有点小贵的,相对而言,6个大洋。
下面是网友晒出一个产品不错的设计。
目测成本还是在20RMB以上。
做工还是很不错的。
(2)汤铭科技,后起之秀,其研发是专注于USB HUB 控制芯片领域,目前主打产品是FE1.1 USB 2.0 四口和FE2.1 USB 2.0 七口控制芯片。
其最大工作特色是极低的工作温度;FE1.1 USB 控制芯片采用了MultiTRAK 多重交易转译器(MTT)技术,相对于目前市场上大多的USB HUB 只内建一个交易转译器,当USB HUB 插入设备时,内部带宽将被多个设备分享,从而造成数据传输时拥堵;相比之下,采用MTT技术的USB HUB 会让每一个USB 接口独享带宽,不出现数据拥堵、速度下降的情况。
此外,FE系列控制芯片还具备10米以上的信号驱动强度,并且全系列具备LED信号灯指示技术。
快速USB学习
USB的优点相信大家都知道了,而且还很赚钱,嘿嘿,这里就不多说,不懂的就去看看书吧,这里要说的是如何快速掌握USB技术。
这篇文章一方面是我对USB学习的一个总结,另一方面是为了方便初学者入门学习。
学习USB,一本好的教材是少不了的,我以前看过了很多关于USB的书,但是大部分的书都看得不明不白,原因是编者没有从初学者的角度来考虑问题,这里要推荐的书是由马伟编著的《计算机USB系统原理及其主/从机设计》,书中非常系统地向读者展示了USB的原理体系。
在进入学习之前,先认识一下USB的重要关键字,这些关键字也是在以下的学习里面将出现的字眼:1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定位置,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)2、帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。
3、上行、下行:设备到主机为上行,主机到设备为下行下面以一问一答的形式开始学习吧。
问题一:USB的传输线结构是如何的呢?答案一:一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500MA(可以在编程中设置的,至于硬件的实现机制,就不要管它了)。
问题二:数据是如何在USB传输线里面传送的答案二:数据在USB线里传送是由低位到高位发送的。
问题三:USB的编码方案?答案三:USB采用不归零取反来传输数据,当传输线上的差分数据输入0时就取反,输入1时就保持原值,为了确保信号发送的准确性,当在USB总线上发送一个包时,传输设备就要进行位插入操作(即在数据流中每连续6个1后就插入一个0),从而强迫NRZI码发生变化。
这个了解就行了,这些是由专门硬件处理的。
学USB的一点心得
学USB的一点心得1、目标:用USB取代232。
原因:1、提高速度,2、适应没有232的电脑笔记本,3、上档次。
2、知识点:1、USB协议,比起232协议难多了,需要数字通信的基础,难。
2、USB接口器件的硬件知识和编程,硬件易懂,编程难。
3、PC的驱动程序和编程。
编驱动极难,厂商通常提供,仅特殊情况时要自己编。
编程用API函数,通常有VC的例子,较难。
3、方案:1、买世面上出售的232<=>USB线,>100RMB。
好处是不用任何学习,但速度提高不多。
用的是一个USB-232的片子,软件是安装一个驱动,就会多出一个Com3来,实际上也就是USB,然后你照操作普通串口的方式去操作它就很容易了。
2、用一个USB-232的芯片自己作,比如FTDI公司的FTDI232A。
大量应用才有必要。
3、用其他的USB芯片,那么PC端的程序一定要改动,但是速度可以做得很高。
USB芯片分两类,一种内含MCU例如EZ—USB,另一种不含MCU例如PDIUSBD12。
后一种的开发费用低。
线路板一般需要改动,单片机的程序一般也要改。
4、我的方案:将d12+89C52放在一个小线路板上,用以取代MAX232。
好处是可以塞进现用的机箱(^_^我的机箱大),并可以继续使用光藕隔离。
原有线路板就不用改动了,单片机的程序也不用改(我把串口速率提高为128000)。
PC那里用软件调用一个DLL(周立功公司作的,速度15KB/s),仅仅四个函数,很简单的。
速度(下行)达到8KB/s,够我用的。
试验已经成功了,马上要去做板了。
5、速度:对于USB来说8KB/S的速度是很慢的,USB1.1版速度可达900KB/s。
但是对于89C52的串口来说,这已经很快了(如果是上行难度更大),如果不涉及到串口,89C52(24MHZ)的通信速度至少可达80KB/s。
想再快就要用其他的MCU,比如AVR的8515。
PC机那边要用API函数来作,或者干脆自己用API写一个DLL出来,这样以后使用比较方便。
USB接口设计
管道 一个USB管道是驱动程序的一个数据缓冲区与一个外设端点的连接 它代表了一种在两者之间移动数据的能力 一旦设备被配置 管道就存在了 管 道有两种类型 数据流管道 其中的数据没有USB定义的结构 与消息管道 其 中的数据必须有USB定义的结构 管道只是一个逻辑上的概念
2.3.1 Hub
Hub在USB结构中是一个关键 它提供了附加的USB节点 这些节点被称为端 口 Hub可以检测出每一个下行端口的状态 并且可以给下端的设备提供电源 图 2.4是一个典型的Hub
Port Port Port
#1
#2
#3
HUB Upstream
Port
Port #4
Port Port Port #7 #6 #5
第5页
清华大学毕业设计论文
2.3.3 设备的电源
USB设备的电源可以由USB总线供给 也可以自备电源 一个USB设备可以具 有这两种供电方式 但同一时刻只能由一种方式供电 这两种供电方式是可以切 换的
2.3.4 设备的挂起
为了节电 当设备在指定的时间内没有总线传输 USB设备自动进入挂起状态 如果设备所接的Hub的端口被禁止了 设备也将进入挂起状态(称之为选择挂起) 当然主机也可以进入挂起状态
第3页
清华大学毕业设计论文
端点 每一个USB设备在主机看来就是一个端点的集合 主机只能通过端点 与设备进行通讯 以使用设备的功能 每个端点实际上就是一个一定大小的数据 缓冲区 这些端点在设备出厂时就已定义好 在USB系统中 每一个端点都有唯 一的地址 这是由设备地址和端点号给出的 每个端点都有一定的特性 其中包 括 传输方式 总线访问频率 带宽 端点号 数据包的最大容量等等 端点必 须在设备配置后才能生效(端点0除外)
