USB系统概述

2.1主机是主控者
主机是唯一的主控者,这是最基本的USB概念。在USB系统中仅有一个支配者,那就是主机。USB设备将会等待主机的请求而加以响应。因此,USB是无法在其间相互进行信息传递的,USB并不支持点对点的拓扑结构。
然而,存在一种情况似得USB设备无需主机介入即可发出开始信号,那就是有主机将设备置入低功耗带起模式之后,设备可发出远程唤醒信号,这是唯一的一种设备可以开始发送信号情况。除此情况外,除非主机发送设备请求,然后设备才会加以响应。
利用这种以主机为中心的模式,USB实际工程师应当特别留心产品的成本,可以设计尽量低成本的外围设备,而将复杂的部分尽量放置在pc主机一侧。当然,如果将USB结构设计为点对点的方式,则每个USB设备可能需要性能更好,相对来说设计产品的成本也将更高。
2.2USB方向222au
由于主机总是总线的主控者,这样就很容易记得USB的方向:out是指从主机到设备,而in是指设备到主机。Fx2的术语采用这个约定。例如,一个端点发送数据到主机,则定义为in端点。
刚刚开始接触,可能会不太理解,为什么fx2发送数据到主机反而定义为in呢?其实in和out主要是从哪个方向看的问题。相应地,fx2通过从主机out端点接收数据。
2.3令牌和pid码
USB数据交换中,包含了特殊程序代码所定义的数据包,即所谓的信息包id或pid。Pid表示何种信息包正在传送信息。表2,2列出了四种pid类型
图2.1所示为USB传输示意图。信息包1为out令牌,用来指示outpid。Out令牌表示数据从主机传动到总线。信息包2包含了数据,用来指示data1pid。信息包3为握手包,在此,设备会送出ackpid给主机,以表示正确无误的接受主机所传送的数据。
同样,在图2.1中,用户可以看到第二个数据交换是由另一个out令牌4开始的,而后在跟随更多的数据5.在这一时刻用户使用了另一个data0pid。最后,设备再一次以握手包6ackpid来说明已经成功的传送来数据。
当工作在全速方式时,每一个out传输都发送out数据(即使此时设备因为忙而无法接收数据)。当工作在高速方式时,通过采用新的pingpid来补偿USB带宽的微小的闲置。主机向
out端点首次发送短ping令牌,询问外围设备是否有空间接受out数据,只有当ping令牌得到ack的回答,主机才发送out令牌和数据。
USB设计者采取非常周密的错误检测,这也就是为什么会采用两个datapid(data0和data1)的原因。正如前面提到的一样,ack握手是用来指示主机和外围设备已经无错误的接收了数据(包最后的crc字段是用来检测错误的)。但是,如果握手包本身在传输过程中就已经扭曲或损坏又当如何呢?
为了检测这个错误,可在每一侧(主机和外围设备)维护datatoggle位,用于在每个包传输时加以togle位的状态,将会与到达伴随数据的pid相比较,如data0或data1。当送出数据时,主机和外围设备交替发送data0pid和data1pid,通过内部toggle位的状态与datapid相比较的方式,主机和外围设备就能检测到错误或损坏的握手包
Setup令牌仅供控制传输使用,其中放了8字节的前导数据,用于主机的设备请求进行译码。在全速的方式下,sof(start of frame)令牌每1ms产生一次,用来表示USB帧的到达;而在高速的方式下,每一个USB帧中包含8额sof令牌。
有4 种握手pid用来表示USB传输的状态:
肛门充气
Ack(acknowledge)表示一个令牌或数据包接成功。
Nak(negative acknowledge)表示接收机当前太忙或没有资源来处理令牌或数据包。他表示的是“忙,再试一次”,不要误解为nak表示的是错误。它不是表示发生了错误,USB通常会通过无响应来表示发生了错误。外围设备可对除了setup令牌以外的任何事物处理nak握手。
Stall(停滞)表示发生了一些无法预料的错误(可能是通信错误导致,也可能是主机与外围设备软件之间无法配合的原因)。设备发送stall握手包用来表示不了解这个设备的请求,这可能是在外围设备端发生了错误,或者是主机试图尝试存取一些不存在的资源这个状态有点儿像“停止(halt)”,但是情况要好些,因为此时USB会提供从stall恢复(recover)的方法。
Nyet(not yet)表示的意思与ack相同,即数据接收无误,但是,它表示端点还没有准备好接受“另外的”out传输。Nyet pid仅在高速方式时有效。
此外,pre(preamble——前导)pid置于低速(1.5mb/s)USB传输之前,而EZ-USB FX2
只支持全速(12mb/s)和高速(40mb/s)的USB传输方式,它将忽略pre包以及其后跟随的低速传输。
1. 从主机接受数据
为了发送数据到USB外围设备,主机会在数据之后发出out令牌包。如果外围设备还有容量空间,并能无错误的接受数据,就会回复ack,让主机知道。如果处在忙状态,则以nak来取代传输。假如发现了一个错误,则不传输任何消息。对于后两种情况,主机会在稍后传输数据。
2. 发送数据到主机
USB设备不会“自然的”将数据传输到主机上,为了传输,EZ-USB FX2-USBfx2的固件或外部逻辑任何时刻都能装载数据到fx2端点缓冲区“保持(arm)”。然而,直到主机向fx2 端点发出in请求,这些数据才不被传输。如果主机一直不发in令牌,则这些数据是否还保存在fx2的端点缓冲区就不一定了。
2.4USB帧
对于所有USB设备,USB主机通过每1ms传输一个sof(帧起始)包来作为时间基准。Sof包包含对每一帧进行累加记数的11位计数值。当前的帧计数值[0—207]可在任何时刻从fx2内部寄存器中读到。
在高速(480m/s)方式下,每1ms帧被分为8个125us“微帧”,每一个微帧都由sof包作为前导,而帧计数值。为了保持当前的微帧计数值[0-7],fx2提供了一个可读的微帧计数器。
只要fx2接收到一个sof,他它就生成一次中断请求(全速方式时,每1ms一次;高速方式时,每125us一次)。这个sof中断非常有用,例如可以用于同步端点数据传输等。
乳化液废水处理
2.5USB传输类型
USB定义了4中传输类型,这些类型必须符合通过总线来传输不同数据类型的需求。
1. 批量传输
批量传输是一种突发的传输模式,此种传输模式中,在全速方式时,以8、16、32、64字节信息包传输;在高速方式下,以512字节信息包传输。此外,由于其具有自动的错误数
据校验机制(crc),所以批量传输能够确保其正确性。若总线上有可用的带宽时,则主机会安排批量信息包。使用批量传输的典型外围设备有打印机、扫描仪和调制/解调器等。另外,批量传输可通过握手包所提供的内建流程来控制。批量传输示意图如图2.2所示。
2中断传输
中断传输有点儿类似于批量传输。中断传输的信息包大小在全速方式时为1—64字节而在高速方式时可达到1024字节。中断端点必须必须设置轮询间隔,以保证经过主机做有规则的询问(接受in令牌)。因此,此种中断传输方式有点儿像pc主机轮询方式。早期的USB1.0协议,仅具备中断in传输;而在USB1.1以后的协议,则增加了中断out传输。中断传输示意图如图2.3所示。
3同步传输
同步传输具有时间临界的特性,应用在如音频和视频的数据流中,一个同步信息包,在全速方式时可达到1023字节;而在高速方式时可达到1024字节。对于同步传输,传输的时间是最重要的请求信息。在每一个USB帧中,会声明某些贷款给同步传输是使用。为了减轻
带宽分配的负担,同步传输没有设置任何的握手包(ack/nak/stall/nyet),而且也不会在发生错误时重试。错误检测仅限于16crc错误校验码。由于同步传输没有采用data-toggle机制,所以在全速方式中,同步传输仅使用了data0;而在高速方式中,同步传输使用了data0、data1、data2、和mdata。在全速方式下,每一个端点,每一帧仅只有一个同步信息包能被传输;而在高速方式下,可以有3个同步信息包。同步传输示意图如图2.4所示。
4.控制传输
控制传输用于配置设备和给发送命令。由于控制传输的作用是如此重要,所以传输中采用了最强的USB错误校验。对于控制传输,主板在每一USB帧中都有留有余量(一般为10%)。控制传输示意图如图2.5所示。
控制传输2-3个阶段。其中,setup阶段中包含了8个USBconteol数据。如有必要,可执行data阶段,此阶段包含有更多的数据。在status(或握手)阶段中,允许设备指示一个控制操作已经成功完成。
上面讨论了4中传输类型,需要注意的是这些内容必须与以后讨论的有关端点的知识相结合,每一种传输类型都是通过相应的端点来实现的。
2.6设备枚举
当用户大打开计算机,将USB设备连接到USB总线后,主机的windows系统将自动检测设备并连接设备,经过很短的时间将会发现USB设备已经神奇的与计算机连接好了。一般都有这样的经验,当要将一个声卡安装到计算机中时,要设置很多跳线,安装驱动,设置io/中断/dma等。这时我们都在想,如果能够实现即插即用就好了,而USB则将此变为了现实。
这一切是如何进行的呢?在每一个USB设备的内部都有一个设备描述表,在这个设备描述表中包含了设备的全部要求和特性。在USB设备插入主机后,主机就会执行认证程序,这个过程称为设备枚举。可将这个程序简化为如下5个步骤:
1使用预设的地址0取得设备描述符;
经络拍2设定设备的新地址;
3使用新地址取得设备描述符;
4取得配置描述符;
5设定配置描述符。
由此可知,设备枚举就是通过主机与设备之间的控制传输来辨识和配置新连接上的USB设备过程。如果主机成功的对设备进行了枚举,在windows系统中的注册表编辑器中就可以发现设备相应的vid和pid码(制造商码和产品码)。
EZ-USB FX2芯片符合USB2.0协议的规定,而USB2.0协议要求高速(480mb/s)设备也能在全速方式下完成设备枚举。实际上,所有高速设备在枚举的开始阶段都是工作在全速方式;只有当当机额设备“同意”工作在高速方式时,才切换到高速方式。如果主机是全速的,那么fx2将在全速方式下进行设备枚举。如果连接到了高速的主机,那么它将自动切换到高速模式。
无线数据传输
2.7 串行接口引擎
每一个USB设备都有串行接口引擎(SIE)。SIE用于连接USB数据线(D+和D-)以及从USB设备发送和接受字节数据。如图,SIE的功能是对信息包PID进行译码,利用传输的CRC位进行错误检测,并且传输下载数据到USB设备。

本文发布于:2024-09-21 16:24:37,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/129401.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:传输   设备   错误   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议