令牌包用来启动一个事务,总是由主机发送。
数据包传送数据,可以从主机到设备,也可以从设备到主机,方向由令牌包决定。
握手包的发送者通常为数据接收者,当数据接收正确后,发送握手包。设备也可以用NAK握手来决定数据还未准备好。
批量传输:
使用批量事务传输数据。三阶段:令牌包、数据包、握手包。批量传输分为批量读和批量写。应用在数据量大、对数据的实时性要求不高的场合。
批量输入事务:
IN OUT 令牌包含设备地址和端点地址。
如果设备解码令牌包时出错,直接进入空闲状态。
PING令牌用来探测设备是否有空间接收数据,它没有数据阶段,只有握手阶段,设备根据实际情况返回握手包。
ACK握手包表示有空间接收设备,NAK表示没空间接收,STALL表示握手包端点挂起。
批量输入:主机发送IN令牌包,主机切换到数据接收状态,等待设备返回数据。如果主机收到设备发送的数据包并解码正确后,使用ACK握手包应答。如果设备没数据返回,则使用NAK响应主机。如果该端点处于挂起,返回STALL握手包。
批量输出:主机发送OUT令牌包,再发一个DATA包,主机切换到接受模式。如果设备解析令牌包和数据包无误,使用ACK握手包或NYET握手包来应答主机。如果没有保存数据,则返回NAK握手包。如果设备检测到数据正确,但端点挂起,则返回STALL握手包给主机。
控制传输:
建立过程、可选的数据过程、状态过程
建立过程使用一个建立事务。
建立事务:输出一个数据包
建立过程使用SETUP令牌包
SETUP只能使用DATA0包
设备只能采用ACK应答
控制传输可以没有数据过程。
控制读传输,数据事务是输入。控制写传输,数据事务是输出。
一旦数据传输方向发生改变,就会认为进入到状态过程,数据过程的第一个包必须是DATA1包,每次在DATA1/DATA0之间交换。
Status阶段是序列的最后一个事务。高速运行的设备的状态阶段还包括PING协议。状态阶段使用 DATA1 PID。如果数据阶段是OUT,则状态阶段是IN。
中断传输:
保证查询速率的传输
中断端点在端点描述符中要报告它的查询时间。主机保证不大于某个时间间隔内安排一次传输。
等时传输:
适合数据量大、对实时性要求高的场合,例如音频设备、视屏设备等。数据错误,不能进行重传。数据是否正确,可以由数据包的CRC校验确认。