阅读:1202回复:3
这两句有问题吗?
void get_descriptor(void)
{ unsigned char bDescriptor = MSB(ControlData.DeviceRequest.wValue); if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) //01|01 { code_transmit((unsigned char *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR)); /*现在主要是怀疑这句的问题,sizeof(USB_DEVICE_DESCRIPTOR)值是12,哦还有我的CPU是ARM7的,不需要CODE */ } else stall_ep0(); } 还有 ********************************* void code_transmit(unsigned char * pRomData, unsigned short len) //len返回是12 { ControlData.wCount = 0; if(ControlData.wLength > len) //ControlData.wLength 是40 { ControlData.wLength = len;//发送数据长度限制 } ControlData.pData = pRomData; if( ControlData.wLength >= EP0_PACKET_SIZE) { // 如果发送代码大于包长度 D12_WriteBuffer(1, ControlData.pData, EP0_PACKET_SIZE); ControlData.wCount += EP0_PACKET_SIZE; 为什么抓到的数据是这样?80 06 00 02 00 00 ff 00 GET DESCRIPTOR 7.0 DI 0a 02 33 00 01 01 00 60 32 00 00 f0 ff ff 80 f0 ff ff 00 00 01 02 01 00 00 00 98 1f 00 02 00 00 至少第一第二个数据是12,01为什么???????大佬门看看哦 [编辑 - 1/5/05 by dxyldl] [编辑 - 1/5/05 by dxyldl] |
|
沙发#
发布于:2005-01-05 13:25
void get_descriptor(void) 从数据可以肯定是你的指针问题,DeviceDescr是怎样定义的? |
|
|
板凳#
发布于:2005-01-06 08:13
typedef
struct _USB_DEVICE_DESCRIPTOR { UCHAR bLength; UCHAR bDescriptorType; USHORT bcdUSB; UCHAR bDeviceClass; UCHAR bDeviceSubClass; UCHAR bDeviceProtocol; UCHAR bMaxPacketSize0; USHORT idVendor; USHORT idProduct; USHORT bcdDevice; UCHAR iManufacturer; UCHAR iProduct; UCHAR iSerialNumber; UCHAR bNumConfigurations; } USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR; **************************************** USB_DEVICE_DESCRIPTOR DeviceDescr= { sizeof(USB_DEVICE_DESCRIPTOR), //bLength =12H USB_DEVICE_DESCRIPTOR_TYPE, //bDescriptorType =01H 0x0110, //bcdUSB =1.10 USB_CLASS_CODE_TEST_CLASS_DEVICE, //bDeviceClass =0dch 0, //bDeviceSubClass 设备子类 设备协议 0, //bDeviceProtocol EP0_PACKET_SIZE, //bMaxPacketSize0 =10H 端点0的最大数据包 0x0471, //idvendor 厂商,设备ID 0x0666, //idproduct 0x0100, //bcddevice 设备系列号, 0, //iManufactory 索引 0, //iProduct 0, //iSerialNumber 1 //bNumConfigurations,可能配置数 //25 };我的是小端输出,不需要SWAP语句,还有CPU是ARM7的 |
|
地板#
发布于:2005-01-06 13:12
老大帮我看看啊,可能是硬件的问题吗?
我的 VOUT33是悬空的,VDD接5V电源A0是接CPU的 是 ADS的问题,,SIZEOF的问题 [编辑 - 1/6/05 by dxyldl] [编辑 - 2/22/05 by dxyldl] |
|