USB3.0协议(中文) - 图文 下载本文

LatencyValue (ns)——容忍值(ns) LatencyScale——延迟容忍级别 00b Reserved

01b LatencyValue 乘以1024 10b LatencyValue 乘以32,768 11b LatencyValue 乘以 1,048,576

8.5.6.3 总线轮询周期调整消息设备通知

Bus Interval Adjustment:这个域是一个二进制补码值( 范围为-32768 到+32767)

8.5.6.4 功能唤醒通知

如果使能了远程唤醒功能,则设备可以通过发送功能唤醒设备通知给主机告知它想要从设备挂起(在转变链路为U0之后)或功能挂起中退出。详情参考9.2.5章。

8.5.6.5 延时容忍消息(LTM)

容忍度消息是一种利用记录的BELT(Best Effort Latency Tolerance)值来使能更多电源有效平台操作的标准USB电源管理特性(最大可能的更节省电源?)。

BELT值是设备没有获得主机服务的最大时间(作为所有配置了的端点的服务需要因素),尤其,BELT值是在主机接收到来于设备的ERDY和主机发送对ERDY的应答之间的时间。

设备指示它们是否能使用在BOS descriptor中的SUPERSPEED_USB Device Capability descriptor的LTM Capable域 来发送LTM TP。LTM使能特性选择器 能使LTM设备发送LTM TPs。

8.5.6.5.1 可选择的标准LTM和BELT请求

一般设备请求:

·LTM TPs应该只被外围设备发送

·LTM TPs适用于除了同步端点以外的所有端点类型(可能同步端点无法忍受延迟请求)

29

·一旦BELT值被设备发送给主机,所有被配置的端点应该期待在指定的BELT时间内被服务。

·设备应该发送BELT域为tBELTdefault的LTM TP,作为tMinLTMStateChange的LTM使能状态下任何改变的应答。

·设备应该确保它的BELT值尽快的被决定,以便于在需要改变BELT值之前能提供设备服务延迟容忍的合理参考。除此之外,应该符合下面条件:

---最大的LTM TPs数是由tBeltRepeat约束 ---每个LTM TP应该有一个不同BELT值

·系统应该默认所有设备的BELT为1ms(参考Table 8-33) ·BELT的最小值为125us(参考Table 8-33)、

设备要求管理建立BELT值:

·LTM机制应该利用U1SEL和U2SEL来提供系统延迟信息给设备。在这里,系统延迟是在设备发送ERDY和在最深允许链路状态为U1或U2时将收到来自于主机的事务包(ACK TP?)之间的时间。这些值被设备用来正确调整它们的BELT值。

-----允许它们的链路进入U1,但不进入U2的设备应该从总容忍延迟中减去U1系统退出延迟(U1SEL),将结果作为LTM TP的BELT域值发送。

-----允许它们的链路进入U1和U2的设备应该从它的总容忍延迟中减去U2SEL,将结果作为LTM TP的BELT域值发送。

8.5.6.6 总线间隔调整消息(真的难看懂- -)

这个设备通知可以被设备发送用来请求一个总线间隔长度的增加或减少。这典型被设备用来试着与主机外部时钟的总线周期时钟同步。总线周期的调整请求是相对于当前总线周期,例如,如果设备请求增加一个总线间隔调整

(BusIntervalAdjustmentGranularity)单元,然后又请求增加两个单元,那么总共主机请求增加了三个单元。

主机应该支持-37268 到37267的绝对范围的总线间隔调整单元。设备不应该每8个总线周期超过一次请求调整。直到设备等待足够长时间而精确知道之前的总线轮询周期调整请求对随后ITPs时间戳值的影响 ,设备才应该发送另外的总线周期调整请求。设备不应该单次请求BusIntervalAdjustment单元超过-4096到+4096.设备可以随着时间多次请求BusIntervalAdjustment总共超过4096个单元. 直到设备在过去125us里接收到ITP,才可以请求总线周期调整。ITP包含一个其值等于0或者等于设备地址的总线周期调整控制域,此时设备在地址或配置状态。

一次只能有一个设备控制总线间隔长度。主机控制器使用先来先服务原则来处理总线周期调整请求。当主机控制器开始操作,它应该发送带有总线周期调整控制域为0的请求的ITPs。当主机控制器首先收到一个总线周期调整控制请求时,它会设置随后的ITPs(由主机广播)的Bus Interval Adjustment Control域值为发送请求的设备地址,一旦域值被设置为非0值,主机应该忽略来于其他所有设备的总线周期调整请求。如果被控制的设备断开了连接,主控制器应该复位Bus Interval Adjustment Control 域值为0. 主控制器可以给软件提供一种方式,不顾总线周期调整控制域的默认行为,而选择一个控制设备。主控制器应该在收到调整请求的两个总线周期内开始应用新调整的周期。

最小的总线周期调整(一个BusIntervalAdjustmentGranularity)要求主机做一个8x4096个总线间隔的平均调整。主机被允许在单个总线周期中做此调整,常用于产生ITP所需时钟,总线轮询周期不需要一个比8个高速位时间小的周期。主机应该在有规律的

30

轮询周期中进行总线轮询周期调整。当主机需要每4096个总线平均做多次8个高速位时间调整时,应该按下面的约束均匀分布:

·包含不止一个8高速位时间的轮询周期调整要涉及到最大调整总线轮询周期。而其他轮询周期不用

·在任何总线轮询周期中做的8个高速位时间的调整次数不应该超过任何其他总线轮询周期调整的高速位时间调整数

·在两个连续最大调整总线轮询周期之间的差值不应该变化??

直到之后主机收到那个有效的总线周期调整请求的总线周期,总线周期调整的平等分配和平均调整请求才应该在主机收到调整请求后的一个总线周期中应用。

下面是一个主机为指定有效总线周期调整请求操作的例子。上电后,在第X-1个总线周期中,主机收到一个增加10个BusIntervalAdjustmentGranularity单元的总线周期调整请求。主机控制器使用带有一个8个高速位时间周期的时钟来驱动产生时间戳和总线周期的计数器,主机控制器把额外的8个高速位时间时钟节拍在每一个以下总线周期中添加到它的计数器上:X+409, X+819, X+1228, X+1638, X+2048, X+2457, X+2867, X+3276, X+3686, X+4096, X+4505,….

8.5.7 PING事务包(只能被主机发送)

这种TP只能被主机发送。它是被主机用来在开始同步传输之前将所有连到设备的链路转回成U0。详情参考这种TP使用的Appendix C。只有与ACK TP不同的区域被描述。

设备应该在tPingResponse time时间内通过发送PING_RESPONSE TP (参考Section 8.5.8)给主机,以此对PING TP应答。

设备应该保持它的链路处在U0直到随后它收到一个来自主机的包,或者直到tPingTimeout time超时。

8.5.8 PING_RESPONSE Transaction Packet(只能被设备发送)

这种TP只能被设备发送给主机作为PING TP的应答。一个

31

PING_RESPONSE TP应该为每个收到的PING TP被发送作为应答。只有与ACK TP不同的区域被描述:

Direction:这个区域和PING TP的Direction域值一样?PING TP与PING RESPONSE一样方向?

8.6 数据包(DP)

这种包能被主机或者设备发送。主机使用这种包发送数据给设备。设备使用这种包返回数据给主机作为一个ACK TP应答。所有的数据包由DPH和DPP组成。只有与ACK TP不同的区域被描述:

数据包格式:

End Of Burst (EOB)/Last Packet Flag (LPF). = 突发结束/最后包标志:

解析:对于非同步端点,这个区域用来指示(EOB)突发结束;对于同步端点,用于指示最后一个包(LPF)

对于非同步IN端点,这个区域被用来确认这是突发的最后一个包。当设备准备继续传输时,应该发送一个ERDY通知主机。注意:一个端点应该在重发DP中重新计算EOB值。如果设备返回的数量比在收到最后的ACK TP包NumP

32