编辑: 梦三石 | 2018-02-20 |
80 06
00 01
00 00
12 00 再次收到获取设备描述符的配置包,由于第一次不知道设备描述符有多大,因而总是发送一个最大数据的包,就是64个字节大,现在知道描述符的大小为0x0012个大小了,就把它发送下来了.所以USB设备再次回应设备描述符就可以了. ? REQUEST_STANDARD=0x6 USB_DEVICE_DESCRIPTOR_TYPE(1) USB_DataInStage,cnt=18,EP0Data.Count=18
12 01
10 01
00 00
00 40
00 80
00 80
00 01
04 2C 4A
01 在这里再次回应设备描述符. ? USB_EVT_IN,USB_DataInStage USB_DataInStage,cnt=0,EP0Data.Count=0 ? 4.收到配置描述符包 ? Setup m=0,n=0,val=45
80 06
00 02
00 00
09 00 根据USB协议可以知道,这是一个配置描述符的包,也就是让USB设备发送本设备有多少个配置方式给主控器.由于USB的设备是多种多样,满足不同的用户需要的.比如鼠标和键盘,就是不同的设备了.还有MP3播放器,还有各种数码相机等等,都是不一样的设备了.就可以通过下面的方式来说明这个配置有多少种方式,主要是通讯的方式. REQUEST_STANDARD=0x6 USB_CONFIGURATION_DESCRIPTOR_TYPE(2)(Offset=0x0) USB_DataInStage,cnt=9,EP0Data.Count=9
09 02
22 00
01 01
00 01
32 这里就是USB设备返回配置描述符给主控器的,它主要说明了这个设备有多少个配置,比如定义端点的类型,端点的传送方式,还有这个设备使用USB总线的电源多少. USB_EVT_IN,USB_DataInStage USB_DataInStage,cnt=0,EP0Data.Count=0 ? ? 5.收到字符串描述符包 ? Setup m=0,n=0,val=45
80 06
00 03
00 00 FF
00 这里收到获取字符串描述符.由于在设备描述符里已经说明字符串描述符在那里,主要是偏移地址,比如04就是厂家的描述符. REQUEST_STANDARD=0x6 USB_STRING_DESCRIPTOR_TYPE(3)(Offset=0x0) USB_DataInStage,cnt=4,EP0Data.Count=4
04 03
09 04 这里返回偏移地址为0的字符串描述,其实那里是保存字符串描述符的语言描述标识,这里英语的标识,0X0409. USB_EVT_IN,USB_DataInStage USB_DataInStage,cnt=0,EP0Data.Count=0 ? ? 6.收到字符串描述符包 ? Setup m=0,n=0,val=45
80 06 4A
03 09
04 FF
00 这时收到获取字符串描述符,根据偏移地址,就知道它是想返回0x4A的字符串,也就是字符串描述符里的偏移地址. REQUEST_STANDARD=0x6 USB_STRING_DESCRIPTOR_TYPE(4)(Offset=0x4A) USB_DataInStage,cnt=36,EP0Data.Count=36
24 03
43 00
41 00
49 00
32 00
30 00
30 00
37 00
30 00
33 00
32 00
35 00
20 00
31 00 2E
00 30
00 2E
00 30
00 USB设备返回0x4A的字符串给PC.这里是我放置的字符串: CAI20070325 1.0.0 它作为产品的序列号.由于采用UNICODE编码,所有高位字节全是0.由于USB协议是使用小端格式来发送数据,所以都低位在前,高位在后.这样在PC那里就可以看到USB设备的产品序列号了.又前进了一步. USB_EVT_IN,USB_DataInStage USB_DataInStage,cnt=0,EP0Data.Count=0 ? 7.收到第二个配置描述符包 ? Setup m=0,n=0,val=45
80 06
00 02
00 00 FF
00 这里收到是第二个配置描述符包,与第一个的区别是返回长度不同. 第一个配置包返回的长度是9个字节,而这里的长度是255. REQUEST_STANDARD=0x6 USB_CONFIGURATION_DESCRIPTOR_TYPE(5)(Offset=0x0) USB_DataInStage,cnt=34,EP0Data.Count=34
09 02
22 00
01 01
00 01
32 09
04 00
00 01
03 00
00 6E
09 21
00 01
00 01
22 24
00 07
05 81
03 40
00 20 在这里返回全部配置描述给PC,让PC知道USB设备所有的配置.在这里包括设备配置,接口配置,端点配置,还有设备特别配置信息. USB_EVT_IN,USB_DataInStage USB_DataInStage,cnt=0,EP0Data.Count=0 ? ? 8.收到字符串描述符包 ? Setup m=0,n=0,val=45