阅读:1118回复:1
D12数据缓冲区问题!拨120求急救
各位高手:
大家好! 我用D12的端点2在单片机上实现U盘功能,出现往D12的缓冲区里写数据时,最大只能发送13Bytes的数据,当超过该值时,用Bushound不能抓到(小于时可以)。请高手指教! 附上一些信息以便解决问题: // d12.c //设备描述符 code USB_DEVICE_DESCRIPTOR DeviceDescr = { sizeof(USB_DEVICE_DESCRIPTOR), USB_DEVICE_DESCRIPTOR_TYPE, 0x0110, 0x00 , 0x00 , 0x00 , 0x10 , 0x0400, 0x04C0, 0x0101, 0, 0, 0, 1 }; //配置描述符 code USB_CONFIGURATION_DESCRIPTOR ConfigDescr = { sizeof(USB_CONFIGURATION_DESCRIPTOR), USB_CONFIGURATION_DESCRIPTOR_TYPE, SWAP(CONFIG_DESCRIPTOR_LENGTH), 0x01, 0x01, 0x00, 0x80, 0x64 }; //接口描述符 code USB_INTERFACE_DESCRIPTOR InterfaceDescr = { sizeof(USB_INTERFACE_DESCRIPTOR), USB_INTERFACE_DESCRIPTOR_TYPE, 0, 0, NUM_ENDPOINTS, 0x08, 0x06, 0x50, 0 }; //端点描述符 code USB_ENDPOINT_DESCRIPTOR EP2_TXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), USB_ENDPOINT_DESCRIPTOR_TYPE, 0x82, 0x02, 0x40, 0x00 }; code USB_ENDPOINT_DESCRIPTOR EP2_RXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), USB_ENDPOINT_DESCRIPTOR_TYPE, 0x02, 0x02, 0x40, 0x00 }; // 主函数 //main.c // 主端点IN控制 void main_txdone(void) { char s[4] ; if(g_stCommVar.ucSendDataFlag == TRUE ) { //D12_WriteEndpoint(3, sizeof(Ep1Buf), Ep1Buf) ; if (g_stUsbCtrlData.iSizeof >= SEND_UNIT ) { D12_WriteEndpoint(5, SEND_UNIT, &Ep2Buf[SEND_UNIT]) ; g_stUsbCtrlData.iSizeof -= SEND_UNIT ; sprintf(s,\"2:%d\\n\",g_stUsbCtrlData.iSizeof) ; Tx_str(s) ; Tx_str(\"\\r\\nEP2_IN_2\\r\\n\"); } else if (g_stUsbCtrlData.iSizeof > 0) { D12_WriteEndpoint(5, g_stUsbCtrlData.iSizeof, &Ep2Buf[2*SEND_UNIT]) ; Tx_str(\"\\r\\nEP2_IN_3\\r\\n\"); g_stUsbCtrlData.iSizeof = 0; g_stCommVar.ucSendDataFlag = FALSE ; } else { Tx_str(\"\\r\\nEP2_IN_4\\r\\n\"); D12_WriteEndpoint(5, 0, 0) ; g_stCommVar.ucSendDataFlag = FALSE ; } } else { Tx_str(\"\\r\\nEP2_IN_5\\r\\n\"); D12_WriteEndpoint(5, 0, 0) ; } D12_ReadLastTransactionStatus(5); // 清中断标志位 } // 主端点OUT控制 void main_rxdone(void) { D12_ReadLastTransactionStatus(4); // 清中断标志位 D12_ReadEndpoint(4,64, Ep2Buf); // 接收数据 USB_RespondUsbHostRequest(Ep2Buf,31) ; } 以上是我的主要处理程序 请高人过目 发现问题请指教,谢谢! |
|
沙发#
发布于:2004-06-02 08:32
不会吧
怎么没有人跟贴呢 难道大家都没有碰到过类似问题? :( |
|