在USB通讯里,从主控器发出来的第一个配置包就是设备描述符配置包,目的只有一个,就是获取插入的USB属性,以便加载合适的驱动程序。现在就来详细地分析一下设备描述符包的定义。 在USB2.0的协议里找到9.3 USB Device Requests里就找到这个结构的定义,这里我使用C的定义结构如下: typedef struct _USB_SETUP_
数据包包含包标识符(PID)和0到多个字节的数据,数据包类型总共四种,DATA0、DATA1、DATA2和MDATA。数据包格式定义如下: 数据包实例如下: 上图为SETUP请求数据包,用于读取设备的设备描述符。 握手包格式 握手包有三种ACK、NAK和STALL,其中ACK表示数据传输完成并且无错误,NAK表示设备不能接收数据或者没有数据上传,STALL...
--建立令牌只用在控制传输中,他跟输出令牌的作用一样,也是通知设备将要输出一个数据包,区别在于:SETUP令牌包后只使用DATA0数据包,且只能发送到设备的控制端点,并且设备必须要接收。而OUT包没有这些限制。 --帧起始包在每帧开始时发送,以广播形式发送,所有USB全速设备和高速设备都可以接收到SOF包,在所有令牌包中,...
创建UsbSetupPacket对象,并通过设置各种属性来填充设置数据包。 根据传输的方向,启动一个异步操作,通过这些方法发送控制传输: SendControlInTransferAsync SendControlOutTransferAsync 在示例中找到它:请参阅名为Scenario2_ControlTransfer的文件。 读取或写入大容量数据 ...
控制传输类型是所有里面最复杂额,因为他为了保证数据的传输正确性,同时还是一个综合的过程。控制传输主要有三个过程组成建立过程,数据过程,状态过程。 建立过程:使用建立事物,主机发送SETUP令牌包,然后发送主机数据(DATA0)到设备,设备接收到数据并且回应ACK(必须的)后开始处理。(实际上是一个批量输出的过程) ...
2、USB包类型 令牌包类型(Token): 令牌包有以下几种PID类型: OUT令牌:主机想要输出数据 IN令牌:主机想要接收数据 SETUP令牌:主机开始一个控制传输,后文会介绍什么叫控制传输 数据包类型: 数据包有以下几种PID类型: DATA0:后文介绍如何使用 DATA1:后文介绍如何使用 ...
SYNC+PID(注上面每种包都有不同类型的,USB1.1共定义了十种包,具体请见问题五)(三)事务:分别有IN事务、OUT事务和SETUP事务三大事务,每一种事务都由令牌包、数据包、握手包三个阶段构成,这里用阶段的意思是因为这些包的发送是有一定的时间先后顺序的,事务的三个阶段如下:...
SETUP建立数据包 SOF帧起始数据包 OUT输出:用来通知从机,主机要给你发送一个数据包了,接好咯; IN输入:用来通知从机,你要给本大人发一个数据包,不得抗命; SETUP建立:这个令牌包只存在于控制传输的建立过程中,也是用来告诉从机,主机要给你发送一个数据了,接好咯。功能跟OUT输出是一样的,唯一不同的是,SETUP...
USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),包的基本格式如下图: 2.1 PID类型(即包类型) 2.2 Token Packets 此格式适用于IN、OUT、SETUP、PING。 PID 数据传输方向 IN Device->Host ...
1.1 PID类型(即包类型)1.2 Token Packets Token Packets用于控制传输,包括IN、OUT、SETUP、PING。不同类型的Token Packets表示了不同的数据传输方向。1.3 Start-of-Frame (SOF) Packets SOF包由Host发送给Device,用于同步。它的发送频率根据USB总线的速度而定。1.4 Data Packets Data Packets用于携带数据,...