我现在用的是ch375,usb设备的配置描述符从开始一直到接口描述,端点描述结束,一共318个字节 ,现在我用的是issue_token的底层来写的,但是在375中它的缓冲区一共只有64个字节,而且第一个字节是后面数据的长度,但是我的318byte是占2个字节的,这个难道是占用开头的2个字节,但是实际调试的时候,我发现出来的只是318的低位,高位不见了,我怎么样才能分次从设备中把这个描述符读出来啊???
而且从你的例子里面这个函数 unsigned char rd_usb_data( unsigned char *buf ) 看它返回的值都是1个字节,那我的318应该是两个字节013eH阿,375对于USB设备的配置描述符开始到结束长度大于64的,那如果一次性读出它的这些值,存在375中的长度是2个字节么,如果可以是2个字节,那怎么在实际过程中,发现375中的那个长度只能是1个字节
你所说的获取配置描述符的第一个字节的长度应该是配置描述符本身的长度0X09吧,配置描述符总的长度应该在第三\四个字节,占两个字节啊. 你可以这样:先用issue_token命令发命令包(0x80,0x06,0x02,0x00,0x00,0x00,0x00,0x09)来获取长度为9个字节的配置描述符本身,再次发上面的命令包(不过将要获取的长度改为前面读出的描述符总的长度),再将这些长度的描述符读出就行了.
实际上是你用外置固件程序来获取描述符的话,375一次只能读取到8个字节长度的数据,还有就是你上面的理解可能有点问题,你可以仔细的看下USB协议,里面有详细的介绍描述符的每一位的功能,配置描述符里面包括配置描述符本身,接口描述符,断点描述符字符串描述符以及一些类的描述符等等,所以第1位是代表配置描述符本身的长度,第3位和第4位才是整个描述符的长度(小端格式),所以你可以先获取总的描述符的长度,在获取整个描述符就可以了。 其次,就是你在发送获取描述符命令的时候,最后面2位是代表你要获取描述符的长度,可以先设置成0X09,也就是先获取到总的描述符的长度之后,在获取整个的描述符。 最后就是上面的函数的返回值你可以用一个全局变量来存放你的数据长度,不一定要返回的啊!这个只是我们做的一个例子程序