赞
踩
USB通信是由一系列Transfer(传输)组成的。共有四种传输类型:
Control Transfers
控制传输Isochronous Transfers
同步传输Interrupt Transfers
中断传输Bulk Transfers
批量传输每一次Transfer(传输)包含多个Transaction(事务)。
每一次Transaction又由不同的Packets所组成。
一个USB事务一般包含三种包:
USB协议定义PID由8位组成,第四位是类型字段,高4位时低4位的补码。
PID | 含义 | 说明 |
---|---|---|
0001 | 令牌OUT | 主机发送数据到USB设备 |
1001 | 令牌IN | 主机接收USB设备发出的数据 |
0101 | 令牌SOF | 此时作为一个帧或者小帧的开始信息 |
1101 | 令牌SETUP | 主机向USB设备发送配置信息 |
0010 | 握手ACK | 数据正确接收 |
1010 | 握手NAK | 数据未正确接收 |
1110 | 握手STALL | 使用的端点被挂起 |
0110 | 握手NYET | 接收方没有响应 |
0011 | 数据DATA0 | 数据包偶数包 |
1011 | 数据DATA1 | 数据包奇数包 |
0111 | 数据DATA2 | 此为作为一个高速同步事务的专用数据包 |
1111 | 数据MDATA | 此时作为一个SPLIT事务的专用数据包。 |
1100 | PRE令牌包 | 低速数据的先导包 |
1100 | 特殊用途ERR | SPLIT事务中表示出现错误 |
1000 | 特殊用途SPLIT | 高速主使用事该SPLIT事务解决从高速模式到低速和全速模式的转换 |
0100 | 特殊用途PING | 仅用于高速模式下主机使用该事务判断设备是否可以接收数据 |
包目标地址Addr占7位,所以一条USB总线上最多可以有127个USB设备,其可使用的地址范围为1~127,其中地址0用于设备在枚举过程中尚未分配地址前的过程通讯。
设备地址由主机分配,使用USBRESS实现。在设备分配地址前使用地址0,在分配地址后启用新的地址与主机进行数据通讯。
USB设备复位或者掉电或者从主机被拨开后,再次枚举需要重新分配地址。
USB主机发出的令牌包是广播在USB总线上的,所以每一个挂接在该总线上的设备都可以收到该令牌包,所以USB设备需要对收到的令牌包进行过滤,过滤的条件就是使用包目标地址Addr和设备自身的地址Addr进行比较,如果匹配,则处理,否则丢弃。
一个11位的包帧号,所以帧号的数值范围为0~2047,当到达最大值2047后,从0开始重新计数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。