学习USB协议笔记<一>
最近比较闲,开始学习一下USB协议,及利用STM32开发板的来实现USB设备。在这里记录一下学习过程中的点点滴滴。
一、USB描述符
设备描述符 ---只有一个,决定该设备有多少种配置,包含USB协议版本号,设备类型,端点0 / | \ 最大包大小,VID,PID 等设备信息
配置描述符1 配置描述符2 配置描述符3 。。---定义了该配置有多少个接口,配置编号、供电方式、电流需求等
/ | \
接口描述符1 接口描述符2 接口描述符3 。。。---定义该接口有多少个端点,接口号,类,子类,协议等
/ | \
端点描述符1 端点描述符2 端点描述符3 。。。。。。 ---定义了每个端点的大小、类型,方向,最大包 长,查询时间间隔等
在主机获取描述符时,首先获取设备描述符,在获取配置描述符,然后根据配置描述符中的配置集合的总长度,一次将配置描述符、接口描述符、类描述符(如果有)、端点描述符一次读回。
二、USB设备枚举流程
控制传输模式包括三个过程:建立过程,可选数据过程,状态过程