详解USB控制传输


usb的枚举过程是通过控制端点0使用控制传输方式来实现对usb 设备信息的获取和配置的,相对于其他传输方式,控制传输过程相对麻烦些,这里进行下说明。

一、USB控制传输

1 传输过程

usb 控制传输分为三个过程,分别为建立过程、可选的数据过程、和状态过程。

1)建立过程

建立过程细分为3步,分别是 host 发送sendup token ,host发送8字节的控制指令的数据包,device 返回ack应答包。其中数据包的类型必须为DATA0。

2)数据过程

数据过程是可选的,一个控制传输可能没有数据过程。如果有的话,那么其数据过程可以包含一笔或者多笔的数据。不过需要注意的是,如果是多笔数据,这些数据的传输方向是同向的。
比如数据过程是多笔输出数据,其多笔数据的过程为:
(host)OUT包-> (host)DATA1包-> (device)ACK ->(host)OUT包-> (host)DATA0包-> (device)ACK ->(host)OUT包-> (host)DATA1包-> (device)ACK …
其数据包均为OUT包。
比如数据过程是多笔输入数据,其多笔数据的过程为:
(host)IN包-> (device)DATA1包-> (host)ACK ->(host)IN包-> (device)DATA0包-> (host)ACK ->(host)IN包-> (device)DATA1包-> (host)ACK…
其数据包均为OUT包。

3)状态过程

状态过程使用的数据包类型必须为DATA1.
如果有数据过程的话,那么状态过程的传输方向与数据过程是相反的方向,即数据过程如果是输出包,那么状态过程就是输入包,反之,则为输出包。
如果没有数据过程,那么状态过程为输入包。

二、示例

下面展示使用逻辑分析仪抓到的full speed下一个控制传输过程:

1)建立过程

建立过程中的数据包总是DATA0
在这里插入图片描述

2)数据过程

在这里插入图片描述

3)状态过程

状态过程方向与数据过程方向相反,且数据类型为DATA1类型
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值