1:usb包结构概述
usb总线上传输数据是以包为基本单位的,一个包被分成不同的域,根据不同类型的包,所包含的域是不一样的。不过,所有的包都有共同的特点,就是都要以同步域开始,紧跟着一个包标识符PID,最终以包结束符EOP来结束这个包。同步域就是sync总线信号,包结束符就是EOP总线信号;PID用来标识一个包的类型,总共8位,高4位标识包的类型,低4位是高4位的取反,用来检验PID,usb协议规定了4中类型的包,分别是:
以下是usb1.1版本的PID类型图:
1.1:令牌包
指定数据包去向或者来源的设备地址和端点,从而保证了只有一个设备对呗广播的数据包/令牌包做出响应;简单的说就是主机发送一个令牌来通知哪个设备进行响应以及如何响应;
令牌包有四种:输出(OUT)、输入(IN)、建立(SETUP)、帧起始(SOF);
OUT:告知usb功能设备将要输出一个数据包;
IN:告知usb功能设备返回一个数据包;
SETUP:用于枚举阶段的控制传输中,通知设备将要输出数据包,输出数据包格式只能是DATA0数据包,且只能发送到设备的默认控制端点,并且usb功能设备必须要接收;
SOF:数据在usb总线上的传输以包为单位,包只能在帧内传输,高速usb总线的帧周期为125uS,全速以及低速usb总线的帧周期为1mS。帧的起始有一个特定的SOF包表示,帧尾为EOF,EOF不是包,而是一种电平状态,EOF期间不允许有数据传输;
OUT/IN/SETUP令牌包结构图,如下:
SOF令牌包结构图,如下:
1.2:数据包
数据包:包含usb传输过程中的具体的数据;
数据包结构图如下: