2. USB通讯原理

  1、 Transfer(传输)

        USB通信是由一系列Transfer(传输)组成的。共有四种传输类型:

  • Control Transfers 控制传输
  • Isochronous Transfers 同步传输
  • Interrupt Transfers 中断传输
  • Bulk Transfers 批量传输

2、 Transaction(事务)

        每一次Transfer(传输)包含多个Transaction(事务)。

3、Packet(包)

        每一次Transaction又由不同的Packets所组成。

        一个USB事务一般包含三种包:

  • 令牌包,指名了该事务的传输的类型,包括目标设备的地址和端点。
  • 数据包,有些事务可以没有数据,数据的长度不得超过该端点的最大包大小。
  • 握手包,对有数据或无数据传输的结果进行反馈,如SET_ADDRESS请求就无数据包。

4、数据包格式

4.1 PID

        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事务的专用数据包。
1100PRE令牌包低速数据的先导包
1100特殊用途ERRSPLIT事务中表示出现错误
1000特殊用途SPLIT高速主使用事该SPLIT事务解决从高速模式到低速和全速模式的转换
0100特殊用途PING仅用于高速模式下主机使用该事务判断设备是否可以接收数据

4.2 包目标地址Addr

        包目标地址Addr占7位,所以一条USB总线上最多可以有127个USB设备,其可使用的地址范围为1~127,其中地址0用于设备在枚举过程中尚未分配地址前的过程通讯。

        设备地址由主机分配,使用USBRESS实现。在设备分配地址前使用地址0,在分配地址后启用新的地址与主机进行数据通讯。

        USB设备复位或者掉电或者从主机被拨开后,再次枚举需要重新分配地址。

        USB主机发出的令牌包是广播在USB总线上的,所以每一个挂接在该总线上的设备都可以收到该令牌包,所以USB设备需要对收到的令牌包进行过滤,过滤的条件就是使用包目标地址Addr和设备自身的地址Addr进行比较,如果匹配,则处理,否则丢弃。

4.3 帧号

        一个11位的包帧号,所以帧号的数值范围为0~2047,当到达最大值2047后,从0开始重新计数。

参考资料

USB中文网 - USB技术开发交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值