前言
USB的包构成了USB的事务类型,而USB事务构成了USB的传输类型,USB的传输类型有:
- 控制传输
- 批量传输
- 中断传输
- 同步传输
控制传输(Control Transaction)
控制传输通常用在初始化配置(寄存器读写),地址分配、时序位矫正,共分为3个阶段:
首先是建立阶段(指明数据流向,控制读还是控制写);
其次是数据阶段(数据传输),该阶段可选;
最后是状态阶段(指示此次控制传输的结束);
注意:控制传输都以DATA0开始,DATA1结
在建立阶段(Setup Stage),USB主机总是发起第一个Packet,首先发送Setup令牌包,随后发起以DATA0为起始数据包,最后USB设备回应握手包结束一次交互。
如果有数据阶段(Data Stage),USB主机发起第一个Packet—读或写的令牌包,根据该令牌包的类型,如果为读令牌包,则由设备发送以DATA1为起始的数据包,以主机发送握手包结束;如果为写令牌包,则由主机发送以DATA1为起始的数据包,以设备发送握手结束一次交互。若数据未发送完毕,则继续,按照DATA0-DATA1-DATA0的数据包的方式进行。
最后是状态阶段(Status Stage),首先由USB主机发起第一个Packet—读或写的令牌包,根据该令牌包的类型,如果为读令牌包,则由设备发送以DATA1为起始的零长度数据包,以主机发送握手包结束;如果为写令牌包,则由主机发送以DATA1为起始的零长度数据包,以设备发送握手结束一次交互。
批量传输(Bulk Transaction)
批量传输由一个或n个相同的事务(读事务/写事务)组成。
在批量传输中,首先由主机发送第一个Packet——读或写的令牌包,表示要开始传输数据了,随后根据令牌包,主机或设备进行DATA1或DATA0为起始的数据包,开始一次交互,最后根据令牌包,主机或设备发送握手包完成一次交互。
若数据未传递完成,则重复该过程
中断传输(Interrupt Transaction)
中断传输由定时器中断触发,间隔进行数据传输;
当定时器中断(Tick时间)触发,后续过程同批量传输
同步传输(Isochronous Transaction)
同步传输实际上就是没有握手包的中断传输,过程同中断传输,但是没有握手包;
同步传输和中断传输二者虽然都是时间触发,但是中断传输需要ACK应答,而同步传输不需要,这意味着同步传输是一种非可靠传输,但是换来了更多的USB传输时间