USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能。计算机通过这些描述符来获得USB设备的功能。
USB描述符包括: USB标准设备描述符,USB集线器描述符。HID描述符,这里主要讲解USB描述符。
USB标准设备描述符包括:设备描述符,端点描述符,接口描述符,配置描述符,设备限定描述符,其他描述符。这些所有的描述符都在 官方固件中的 dscr.a51 文件中,注意!!!!!
1.设备描述符
一共18个字节,14个字段。在官方给的固件程序中的描述如下图:
上图中42行是用宏定义描述符长度,一共18个字节。
43行描述符类型,其固定为01H,现也用一个宏定义;
44行是表示该USB设备所遵循的USB规范版本号, 一般为0002H,对于高速USB,版本为USB2.0,设置为0200H。
45行设备类别,对于显示类别(04H),01H(CRT显示器),02H(平面显示器),03H(3D显示器),官方固件设置为00H。46行也一样,
47行是协议子类,该字段为0时,表示不使用任何设备类协议。
48行最大数据包大小,对于全速设备,8/16/32/64,对于高速设备,设置为64.
51行到53行是设置上设备的VID&PID&Version ID,这个修改可以重新配置USB的签名,请参看博客《USB驱动安装及固件程序编写》
其他不用设置,保持默认即可。
2.配置描述符
USB配置描述符9个字节,8个字段。在官方固件中给出了如下描述:
71和72固定。
73和74分别是USB配置总的信息长度。
75行是接口数量,最少为1.
77行配置字符串,若是没有配置字符串,为0。
注意78行是USB设备配备属性。第6位置1为使用总线电源,第5位置1表示支持远程唤醒功能,第0~4位置为0即可,第7位置为1.注意,笔者设计的板卡是从USB端取电,应该配置78行为10100000b。
79行是USB设备运行时所需要消耗的最大电流。以2mA为单位。这里更改为250mA,因为USB口能够提供的最大电流为500mA。
3.字符串描述符
修改162到187内容即可。
4.接口描述符
注意一下128行的端点数,除了0端点以外,还有2,4,6,8四个端点。其中2和4能作为输出和输入,6和8能作为输出和输入。
5.端点描述符
此部分的设置和接口描述符中的端点数要一一对应,若是使用了一个端点,那么需要更改接口描述符中的128行,设为1.若是使用了两个端点,则设为2,一次类推。
官方固件上面给了两个端点数,一个作为入,一个作为出。
还要注意138行和147行,此设置是端点类型,USB传输类型,包括 中断传输,控制传输,块传输,同步传输。
其中 控制传输:少量数据,无传输时间要求,传输有严格保证;
块传输:大数据量,无传输时间要求和传输速率要求;
同步传输:大量数据,速率恒定,有周期性;
中断传输:少量或中量数据,有周期性要求;
6.设备限定符
和设备描述符差不多。
7.其他速率配置描述符
官方给的固件中,将上述的6种描述符集合在速率配置描述中,有全速和高速两个状态。如下图所示:
以上是对描述符的简单介绍,这些是学习其他方面的基础。