NULL_Qian
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1117回复:1

D12数据缓冲区问题!拨120求急救

楼主#
更多 发布于:2004-06-01 17:44
各位高手:
大家好!
我用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) ;

}

以上是我的主要处理程序 请高人过目 发现问题请指教,谢谢!

NULL_Qian
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-02 08:32
不会吧
怎么没有人跟贴呢
难道大家都没有碰到过类似问题?
:(
游客

返回顶部