USB协议层和USB数据传送类型

      USB协议层描述了USB主机与USB设备交互时的语法和协议,并且定义了字段、包、事务和传输的结构,以及由字段到包、由包到事物、由事物到传输所组成的组织层次关系。
      USB规范定义了四种传送类型:控制传送、批量传送、等时(同步)传送和中断传送。它们的不同之处在于:单个事务能携带的数据量能否保证特定的周期或延迟,能否自动校正错误。实际上,给定类型的端点(控制、批量、中断、等时)总是使用对应类型的传输。
      控制传输在主机和控制端点之间传送控制信息。控制传输是一种纠错传输,在遇到传输错误时重试三遍,如果错误仍存在就放弃传输并向上层软件报告错误。控制端点所能指定的最大数据传输长度为8、16、32、64字节。一个单独的事务可以包含少于最大数据传输长度的数据,但不能超过最大数据传输长度。控制事务在USB中具有最高优先级。设备必须先处理控制事务。此外,总线驱动程序为控制事务保留了10%的带宽。对于轻量级的负载,主机能确保在1毫秒内完成一个控制事务。对于重量级的负载,未完成的控制传输将被强制到下一帧中传输,因此会产生一些延迟。每个USB设备至少应有一个编号为0的控制端点以响应控制事务的输入输出。严格地讲,端点应属于配置,但端点0是一个例外,因为它是设备默认控制管道的终点。端点0甚至在设备被配置前就被激活而不管其它端点是否有效。除了端点0,一个设备没有必要拥有另外的控制端点(尽管USB规范中允许有这种可能),因为端点0对于大部分控制请求都可以很好地完成。如果定义了一个厂商专用的请求并且该请求不能在一帧中完成,就应该创建额外的控制端点以防止设备接收器被新事务抢先。每个控制事务包括一个SETUP令牌,之后可以带一个可选的数据阶段和一个握手阶段,在握手阶段设备会发出ACK包或者STALL包,或者根本就不响应。设备必须在任何时间都能接受控制传输,并且不能用NAK响应控制端点。向控制端点发送一个无效请求将导致STALL响应,但当设备再次接收到一个SETUP包时会自动清除停止状态。这个特殊的sTALL在UsB规范中被称为协议停止(Protocal stall)。
     批量(Pack)传输是纠错传输,但没有任何延迟保证。批量传输能在主机和批量端点间一次传输最多64字节的数据。如果主机发现帧中除了预定带宽外还有剩余,它就把等待的批量传输送往总线。传输开始于表明传输方向的IN或OUT令牌,这些令牌同时还指定目标设备和端点。对于输出事务,后面是一个数据阶段,把数据从主机送到设备,最后在握手阶段设备向主机提供状态反馈。如果端点正忙不能接收新数据,它就在握手阶段发出一个NAK包,主机以后会重试该事务。如果端点处于停止(STALL)状态,它就在握手阶段发出一个STALL包,主机在重试前必须清除端点的停止状态。如果端点正确地接收并处理了数据,将在握手阶段返回一个ACK包。最后一种情况是端点因为某种原因没有正确地接收数据并且在握手阶段也没有发出应答包,主机将检查端点是否应答,并且自动重试三次原事务。IN令牌后面是一个批量输入传输。如果端点将数据准备好,设备将把数据发往主机,主机或者回应一个ACK包指出数据无误地接收,或者保持沉默并指出发生了某种错误。如果主机查出一个错误,ACK的缺发将使设备数据保持有效,之后主机将重试输入操作;如果端点忙或停止,设备将会在数据阶段发出NAK或STALL握手包而不是数据。NAK指出主机应在以后重试该输入操作,STALL需要主机先清除端点的停止特征再重试输入操作。
      中断(Interrupt)传输能把最大64字节的数据无误地在主机和中断端点间传输。在总线操作和涉及设备方面上几乎与批量传输完全相同,和批量传输仅有的不同是它必须考虑延迟。中断端点需指定一个范围在1-255毫秒内的询查周期。主机保留足够的带宽以确保在指定频率上直接向中断端点发出顶或OUT事务。

      等时(Isochronous)传输有周期保证,因此特别适用于时间敏感的数据传输,等时传输可以在一个总线帧内最多传输1024字节数据。但这种周期保证是有代价的,等时传输在数据出错时不会自动重试。USB设备开发人员必须假定等时数据流的接收者允许偶尔的数据丢失。传输由NI或OUT令牌阶段后跟一个数据阶段组成。因为不进行数据纠错,所以等时传输没有握手阶段。
     

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值