包、事务与传输
包
USB总线上传输数据是以包为基本单位的;USB规定了4类包:令牌包、数据包、握手包、特殊包。
事务
虽然在USB总线上传输数据的最小单位是包,但需要按照一定关系将不同的包组织成事务,才能传输数据。事务通常由两个或者三个包组成:令牌包、数据包(可选)、握手包;
传输
USB定义了四种传输类型:控制传输,批量传输,同步传输和中断传输;
不同的传输方式使用的事务类型各不相同,适用的场景也各不相同。
控制传输
控制传输包括三个过程(建立过程、数据过程、状态过程),通常用于命令和状态操作,如枚举过程就是控制传输。
批量传输
批量传输是使用批量事务来传输数据;批量传输数据吞吐量大、对数据准确性的要求高,但是对数据实时性要求则不高;常用于如USB打印机、USB扫码机、U盘大容量存储设备等应用。
同步传输
同步传输使用的同步事务,只有两个阶段,即令牌阶段和数据阶段,因为不关心数据的正确性,所以没有握手阶段。
同步传输的数据吞吐量也大,对数据实时性要求高,但是对准确性则不高,适用于如摄像头的USB视频传输应用等。
中断传输
中断传输是使用中断事务,此处的中断与MCU中的中断意义不同,是指主机保证在不大于某个时间间隔内安排一次传输;在设备的端点描述符中可以设置中断端点的查询间隔,适用于对响应实时性高的应用中,如键鼠设备等。