数据传输的大致步骤:
配置传输方法——选择事务——发送各种令牌、数据、握手包
传输方法
既然USB是用来进行数据传输的,那么必然会涉及到配置传输方法:
批量传输、中断传输、同步传输、控制传输。
1、批量传输
适用于数据量大,对数据实时要求不高的场合;
比如USB打印机,扫描仪,大容量存储设备等;
当是批量出入事务时:
当是批量输出事务时:
而在USB2.0协议中,还多了一种特殊的传输事务:
2、中断传输
适合于数据量不大,对时间实时要求严格的场合
比如有鼠标、键盘、轨迹球等;
这里的中断并不是外部触发对的中断,而是主机自发的,主机要先确定查询频率,然后在此期间安排一次传输,如此一来就保证了查询频率。
中断传输中对应的事务是中断事务:
3、同步传输
同步传输又称为等时传输,适用于数据量大,对实时要求高的场合。
比如音频、视频等;
等时传输中是没有应答握手包的,那么传输数据的对错有数据包中的CRC检验。
4、控制传输
在采用USB通信协议中,主机需要获取设备的各种描述符,设置设备地址,配置各种参数等等,这些操作一般用的都是控制传输。
相比于上面三种传输方法,控制传输看起来有点复杂,但也正是这种复杂,保证了传输中的数据完整性。
枚举
配置完出传输方法后,就需要进行数据传输了,那么需要传输的到底是什么数据呢?
就是主机从设备那里获取到的各种描述符,如设备描述符、配置描述符、接口描述符、端点描述符,这一个过程,称之为枚举。
以下是枚举过程的步骤:
1、检测到有USB设备接入,复位USB设备,将其地址复位为0地址;
2、通过0地址的0端口获取设备描述符;
3、对USB设备再一次复位,给其设置唯一地址;
4、主机通过设备的新地址再一次获取设备描述符;
5、获取设备配置集合,在这个集合中就有设备的配置描述符、接口描述符、端点描述符、类特殊描述符(这个有可能没有);