阅读:1241回复:7
请教
D12的固件程序中,可以看到如下用来发送描述符的程序:
if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) { code_transmit((unsigned char code *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR)); } else if (bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE) { code_transmit((unsigned char code *)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH); } 但是只有发送设备和配置描述符的程序,没有看到发送端点描述符的程序,请问是怎么回事? |
|
沙发#
发布于:2003-08-07 10:09
无分不答
|
|
|
板凳#
发布于:2003-08-07 10:14
请问想要多少分,如何给分?如肯指教,一定给分
|
|
地板#
发布于:2003-08-07 11:59
配置描述符与端点描述符是用一个程序发送的。
在一个数据表中。 如下表一样。 typedef struct { USB_config_desc_t uja_dev_config_desc; USB_interface_desc_t uja_interface_desc; USB_hid_desc_t uja_dev_hid_desc; USB_endpoint_desc_t uja_dev_endpoint1_desc; } USB_long_config_desc_t; 你的是不是 PC发出这样的数据: USB EP0 Revice Value:[80] [6] [0] [2] [0] [0] [9] [0] 这时,你就发出配置描述符的前9个(USB_long_config_desc_t)。 PC又发出: USB EP0 Revice Value:[80] [6] [0] [2] [0] [0] [ff] [0] 这时你就把:(USB_long_config_desc_t)配置描述符与端点描述符发送出去,就可以进行下一步 了。 祝你好运。 |
|
地下室#
发布于:2003-08-07 12:54
D12的固件程序中,可以看到如下用来发送描述符的程序: 老兄,怎么会没有呢,ENDPOINT描述符就是载你上面那个else里面呀!配置、接口、端点描述符是在一起的。 你可以看看你那个ConfigDescr的定义,找不到再程序里搜一下呀,把相关的几个东西都看看不就知道怎么回事了吗? |
|
5楼#
发布于:2003-08-07 13:06
程序中将配置描述符,接口描述符及端点描述符放在一起发给PC的。你可以从CONFIG_DESCRIPTOR_LENGTH的定义
#define CONFIG_DESCRIPTOR_LENGTH sizeof(USB_CONFIGURATION_DESCRIPTOR) + sizeof(USB_INTERFACE_DESCRIPTOR) + (NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR)) 中可以知道的。 |
|
6楼#
发布于:2003-08-07 13:57
ConfigDescr里面定义了描述符的总长CONFIG_DESCRIPTOR_LENGTH ,是不是这样用ConfigDescr就可以将接口、端点描述符一起发送?USB_CONFIGURATION_DESCRIPTOR、USB_INTERFACE_DESCRIPTOR、USB_ENDPOINT_DESCRIPTOR这三个描述符是定义在不同的结构体里面,还是定义在同一个结构体里面?
|
|
7楼#
发布于:2003-08-08 15:32
谢谢david_liuccy jinghuiren stanleyhe三位的帮助,我已经枚举成功了。
|
|