阅读:1313回复:4
D12 下枚举的问题
为什么我的BUS HOUND 获取的数据一直是这样子
7.0 CTL 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 ..3....`2....... 189.2.0 fd ff 00 c0 fc ff 00 00 fe ff 40 00 fe ff 80 00 fe ff 64 ..........@..... 251.1.0 7.0 CTL 80 06 00 02 00 00 ff 00 GET DESCRIPTOR 252.1.0 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 ..3....`2....... 252.2.0 fd ff 00 c0 fc ff 00 00 fe ff 40 00 fe ff 80 00 fe ff 64 ..........@..... 252.2.32 大哥门救救我啊,我的CPU是ARM7 |
|
沙发#
发布于:2005-01-04 19:32
枚举都没能通可,应该是你的驱动程序还没写好!
|
|
板凳#
发布于:2005-01-04 20:08
可能出错的地方只有这两个子程序,可是我也不知道错哪了?画线的地方
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)); } 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; [编辑 - 1/4/05 by dxyldl] [编辑 - 1/4/05 by dxyldl] |
|
地板#
发布于:2005-01-04 21:53
我觉得还是直接买个开发板比较方便 我觉得http://devking.51.net/不错 |
|
|
地下室#
发布于:2005-01-05 14:10
80 06 00 01 00 00 40 00 GET DESCRIPTOR
7.0 DI 12 01 00 01 DC 00 是通过这句读出来得吗? D12_WriteBuffer(unsigned char endp ,unsigned char *buf,unsigned char len) 我看过画线的这句,所有的值正确,是12 01 00 01 DC......但在BUS HOUND上看不到,为什么啊,急救~~~~~~~~~~~~~~~~~~ for(i=0; i<len; i++) { outportb(D12_DATA, *(buf+i)); } outportb(D12_COMMAND,0xFA); //使缓冲区有效 |
|