USB通信底层基础(一)USB Protocol Layer

512 阅读2分钟

本文目的是对Android底层USB通信做辅助理解

1.USB协议层次

USB协议层次从大到小为:Transfer、Transaction、Packet。Packet是基本的传输单元,一个Transaction包含数个Packet,一个Transfer又包含数个Transaction。


2.USB最顶层协议---Transfer

四种

  1. 控制(Control)传输
  2. 中断(Interrupt)传输
  3. 批量(Bulk)传输
  4. 同步(Isochronous)传输

控制传输: 功能是通过控制管道向USB设置控制信息。控制管道是USB设备中必须拥有的部分。控制管道分为令牌阶段、数据传送阶段、握手阶段三个部分。

中断传输: 传输数据流量很小,主要是用来通知Host事件的发生,如USB键盘按键按下释放等操作,可通过中断通道传送到Host。中断事务也分为令牌阶段、数据传输阶段、握手阶段三部分。

批量传输: 用于传输大流量数据,如U盘等大容量存储器,也有令牌阶段、数据传输阶段、握手阶段三部分。

同步传输: 为了保证传输信息的同步性,通常在USB摄像头传输视频数据时会采用。同步事务能够保证每秒中的固定传输量,能够允许细微的误码存在,保持实时性。由于对数据正确性的要求较低,同步传输事务仅有令牌阶段、数据阶段两个部分


3.Transaction分为:Setup transaction、In transaction、Out transaction

设置事务 Setup transaction: setup packet(H->D)、data packet(H->D)、handshake packet(D->H)

输入事务 In transaction: in packet(H->D)、data packet(D->H)、handshake packet(H->D)

输出事务 Out transaction: out packet(H->D)、data packet(H->D)、handshake packet(D->H)


4.Packet分为: Token packet、Data packet、Handshake packet、Special packet,packet 以包标识字段PID来区分

更基础底层的理解可以看

  • Token packet: SETUP packet、OUT packet、IN packet、SOF packet
  • Data packet: DATA0 packet、DATA1 packet、DATA2 packet、MDATA packet
  • Handshake packet: ACK packet、NAK packet、STALL packet、NYET packet
  • Special: PRE packet、ERR packet、SPLIT packet、PING packet

Setup Packet、Data Packet、Handshake Packet、SOF Packet 包标识字段(PID)长度为8bit,由低4bit的类型字段和高4bit的校验字段组成。校验字段是类型字段的反码。

  • Setup packet:
    1
  • Data packet
    2
  • Handshake packet
    3
  • SOF packet
    4

PID Types image.png


5.例子

Control Transfer(Get Descriptor)实例

image.png

Interrupt Transfer(In Transaction)实例

image.png

对原文进行了一些删减,留下需要部分,详细的看原文
顺便放上Android文档链接,方便自己查看哈哈哈哈
Android:tool.oschina.net/uploads/api…
原文链接:blog.csdn.net/killf_123/a…