数据通信协议部分是USB的核心内容。主要包括:以差模串行信号为载体传送二进制代码来传输信号;数据包作为最基本的完整信息单元,包含一系列数据信息。数据包可以分解为更小的单元—域;以包为基础,构成USB的三种事务。进而,组合不同的传输类型,传输各种类型的数据,实现USB的各种功能。
       包是USB最基本的数据单元,每个包,基本包含一个完整的USB信息。按照其在整个USB数据传输中的作用不同,包分为三类:令牌包、数据包和握手包。他们之间的区别是由更小的单元—域来划分的。域又分为七类:同步序列域、包标识域、地址域、端点域、帧号域、数据域和CRC校验域。
      以包为基础,USB定义了四种数据的传输类型:控制传输、中断传输、批量传输和同步传输。每一种类型都由一定的包按照某种特定的格式组成。不同的传输类型的最大传输速度、占用USB总线的带宽、传输数据的总量和应用场合等都是不同的。传输是一种比较笼统的说法,在实际的数据传输中,往往还需要细分为多个数据交换过程,每一次的数据交换过程既不能叫做某种传输,也不是包,而是另外一个重要的概念—处理事务。每种传输方式都由多个处理事务来完成,每一笔处理事务由底层包组成。域、包、处理事务和传输的关系就是实现USB通信的过程。
      为了细化USB的通信机制,USB协议的开发者采用了分层的概念,每一层传输的数据结构对其他逻辑层是透明的,USB设备和USB主机通信的逻辑结构和每层的逻辑通道。为了便于理解USB协议,将USB通信逻辑上分成了三层:信号层、协议层和数据传输层。信号层用来实现在USB设备和主机的物理连接之间传输位信息流的信息。协议层用来实现USB设备和USB主机端的系统协议软件之间传输包字节流的信息,它们在信号层被编码成NRZI位信息后传送出去。数据传输层用来实现在USB主机端的客户端驱动程序和设备端的功能接口之间传输有一定意义的信息,这些信息在协议层被打包成包格式。协议将信号层传输的位信息流称为包,将协议层传输的包信息流称为处理事务,将数据传输层传输的信息流称为传输。所有的传输最终都以比特流的方式在信
号层上实现通信。
数据传输类型
     USB的传输,是USB面向用户的最高级的数据结构。USB定义了四种数据传输类型,即控制传输、中断传输、批量传输和同步传输,用以完成各种类型的数据传输。
     处理事务和传输的关系是核心。传输是由一个或多个处理事务组成的,而处理事务按照其特点分为三种类型:输入(工n)处理事务、输出(Out)处理事务和设置(SetuP)处理事务。任何一种传输都是由这三种处理事务组成,不同的只是这三种处理事务的组合和搭配情况。
      中断传输由In处理事务或Out处理事务组成,主要用于如鼠标、键盘等自ID设备的数据传输中。中断传输中,“中断”的概念并不等同于PC系统中硬件设备的中断,USB主机是以周期性的方式对设备进行轮询,以确定设备是否有数据发送。中断传输没有固定的传输速率,低速、全速和高速设备均支持中断传输,只是对传送的数据包的大小要求不同。
      批量传输由In处理事务或Out处理事务组成,主要用于大容量数据的传输中,如硬盘、光盘刻录机及数码相机等。批量传输对传输速率和宽带没有固定的要求,当总线“忙”时,USB会优先考虑其他类型的数据传输,而暂停批量传输。低速设备不支持批量传输,只有全速和高速设备才支持批量传输。
      同步传输由In处理事务或Out处理事务组成,主要用于音频流恒定传输速率的数据传输中,如音箱、显示器和摄像头等设备。同步传输讲究的是数据传输速率的恒定,而对数据的准确性的要求不如批量传输严格。所以,同步传输中没有握手包,不对发送错误的数据进行重试。需要说明的是,与中断传输和批量传输不同的是,对于全速设备,同步传输不支持数据包的交替触发机制,只能以Data0发送。而高速设备在一定条件下
支持触发机制,由于情况复杂,不予讨论。低速设备不支持同步传输,只有全速和高速设备才支持同步传输。
      控制传输是最复杂、最重要的传输类型,也是USB枚举阶段最主要的数据交换方式。当USB设备初次连接到主机之后,主机通过控制传输来交换信息、设备地址和读取设备的描述符来识别该设备,并安装相应的驱动程序,在此基础之上其余三种可能的传输方式才能够使用。进行USB系统开发时,首要的任务就是利用控制传输实现设备的枚举过程,提供各种设备信息。控制传输由In处理事务、Out处理事务和Setup处理事务组成,
其中核心是Setup处理事务。