dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1312回复:4

D12 下枚举的问题

楼主#
更多 发布于:2005-01-04 18:27
为什么我的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  
hero_xue
驱动牛犊
驱动牛犊
  • 注册日期2004-11-15
  • 最后登录2005-02-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-04 19:32
枚举都没能通可,应该是你的驱动程序还没写好!
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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]
yyouking
驱动老牛
驱动老牛
  • 注册日期2003-12-18
  • 最后登录2020-04-28
  • 粉丝0
  • 关注0
  • 积分967分
  • 威望114点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-01-04 21:53



我觉得还是直接买个开发板比较方便
我觉得http://devking.51.net/不错
提供: AT89S52+D12开发套件 W78E54+Sl811HST单片机读写U盘套件 PL2303HX-串口转USB 网站http://www.devking.cn 联系 sl811hs@yahoo.com.cn QQ:14441292
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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);  //使缓冲区有效
游客

返回顶部