【USB笔记】USB 2.0 数据PID排序data PID sequencing

本文详细介绍了USB2.0协议中高带宽等时端点的数据PID排序,用于确保数据接收的正确性和检测事务丢失。对于高速高带宽等时IN端点,数据包PID遵循DATA2-DATA1-DATA0的序列,而OUT端点则根据事务数量使用DATA0、MDATA或DATA2。这种排序机制帮助主机和设备检测并处理通信中的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

USB笔记 USB 2.0 数据PID排序data PID sequencing

说明

介绍的是USB 2.0协议中的数据PID排序(data PID sequencing)。

介绍

数据PID排序(data PID sequencing)用于为数据接收器提供每个微帧(microframe)的事务数,并且检测每个微帧(microframe)的一个或多个丢失/损坏的包。

高带宽等时端点High bandwidth isochronous endpoints(IN和OUT)必须支持数据PID排序(data PID sequencing)。在用于高速高带宽等时端点(high-speed high bandwidth isochronous endpoints)的数据PID排序(data PID sequencing)中,使用了全部四个数据PID(data PIDs):DATA0、DATA1、DATA2和MDATA。

高速高带宽等时IN端点

高速高带宽等时IN端点(high-speed high bandwidth isochronous IN endpoint)的数据PID排序(data PID sequencing)对微帧(microframe)中每个事务(transaction)的数据包采用DATA2、DATA1、DATA0 PID的重复序列。如果微帧中只有一个事务(transaction),则只使用DATA0数据包PID。如果每个微帧有两个事务(transaction),则第一个事务数据包使用DATA1,第二个事务数据包使用DATA0。如果每个微帧有三个事务(transaction),第一个事务数据包使用DATA2,第二个事务数据包使用DATA1,第三个事务数据包使用DATA0。在任何情况下,数据PID排序都会在下一个微帧中重新开始。下图是高带宽等时IN端点(high-bandwidth isochronous IN endpoints)在一个微帧内,不同情况下使用的数据包PID的顺序。

Data Phase PID Sequence for Isochronous IN High Bandwidth Endpoints

主机知道IN端点每个微帧允许的最大事务数。主机要求端点在第一个事务的响应中告知本次的微帧所请求的事务数是多少,所以通过第一个事务的响应所用的数据PID,来获取该微帧需要多少个事务。当端点需要使用三个事务传输数据时,端点必须使用DATA2响应第一个事务的IN令牌。 当它需要两个事务时,它必须对第一个事务使用DATA1响应,而当它仅需要一个事务时,必须使用DATA0响应。 在第一个事务处理之后,端点将按照上述数据PID排序(data PID sequencing)进行操作。

如果主机没有收到任何事务正确无误的响应,主机就不得再向该微帧的端点发出任何事务。当主机收到来自端点的DATA0数据包时,不得再向端点发出该微帧的任何事务。

高速高带宽等时OUT端点

高速高带宽等时OUT端点(high-speed high bandwidth isochronous OUT endpoint)的数据PID排序(data PID sequencing)与IN端点的排序不同。当每个微帧(microframe)只有一个事务(transaction)时,主机必须发出一个DATA0数据包。当每个微帧有两个事务时,主机必须为第一个事务发出一个MDATA,为第二个事务发出一个DATA1。当每个微帧有三个事务时,主机必须发出两个MDATA事务和一个DATA2用于第三次事务。这些序列允许端点检测在一个微帧中是否有丢失/损坏的事务。下图显示了高带宽等时OUT端点的微帧内,不同情况下使用的数据包PID的顺序。

Data Phase PID Sequence for Isochronous OUT High Bandwidth Endpoints

如果端点检测到错误的OUT事务,那么在微帧期间传输的所有数据都必须被当作遇到了错误。需要注意的是,对于每个微帧有三个MDATA事务丢失的情况,USB没有提供任何方法让端点确定两个MDATA事务中哪个丢失。可能有一些特定于应用程序的方法可以更精确地确定丢失了哪些数据,但USB没有提供在总线级别上这样做的方法。


参考资料

Universal Serial Bus Specification Revision 2.0

USB Complete, 5th Edition


本文链接:https://blog.csdn.net/u012028275/article/details/113806338

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值