djsnake
驱动牛犊
驱动牛犊
  • 注册日期2002-10-29
  • 最后登录2003-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1305回复:4

版主:帮帮小弟,不然小弟就无法毕业了,谢谢(还是枚举问题)

楼主#
更多 发布于:2003-07-04 21:56
我在调试D12枚举程序时,用BUSHOUND得到的数据如下:这可能时什么原因?谢谢!!!!!
Device  Phase  Data                       Description       Time   Cmd.Phase.Ofs(rep)
------  -----  -------------------------  ----------------  -----  ------------------
   7.0  CTL    a3 00 00 00 - 02 00 04 00  CLASS             994ms         1.1.0        
   7.0  DI     03 01 00 00                ....               40us         1.2.0        
   7.0  CTL    23 03 04 00 - 02 00 00 00  CLASS              23us         2.1.0        
   7.1  DI     04                         .                  89ms         3.1.0        
   7.0  CTL    a3 00 00 00 - 02 00 04 00  CLASS              27us         4.1.0        
   7.0  DI     03 01 10 00                ....               26us         4.2.0        
   7.0  CTL    23 01 14 00 - 02 00 00 00  CLASS               4us         5.1.0        
   7.0  CTL    80 06 00 01 - 00 00 40 00  GET DESCRIPTOR     20ms         6.1.0        
   7.0  CTL    a3 00 00 00 - 02 00 04 00  CLASS             5.5sc         7.1.0        
   7.0  DI     03 01 00 00                ....               43us         7.2.0        
   7.0  CTL    23 03 04 00 - 02 00 00 00  CLASS              24us         8.1.0        
   7.1  DI     04                         .                  89ms         9.1.0        
   7.0  CTL    a3 00 00 00 - 02 00 04 00  CLASS              26us        10.1.0        
   7.0  DI     03 01 10 00                ....               24us        10.2.0        
   7.0  CTL    23 01 14 00 - 02 00 00 00  CLASS               6us        11.1.0        
   7.0  CTL    80 06 00 01 - 00 00 40 00  GET DESCRIPTOR     20ms        12.1.0        
   7.0  CTL    23 01 01 00 - 02 00 00 00  CLASS             5.5sc        13.1.0        
   7.0  CTL    80 00 00 00 - 00 00 02 00  GET STATUS        6.8sc        14.1.0        
   7.0  DI     01 00                      ..                6.9ms        14.2.0        


[编辑 -  7/4/03 by  djsnake]

[编辑 -  7/4/03 by  djsnake]
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-05 08:56
“7.0 CTL 80 06 00 01 - 00 00 40 00 GET DESCRIPTOR 20ms”后“7.0 CTL a3 00 00 00 - 02 00 04 00 CLASS 5.5sc”5.5 秒超时了,你应答不及时。有可能你没有应答,或者回复错误。

NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-05 09:27
你的发送或者接收程序有问题!
djsnake
驱动牛犊
驱动牛犊
  • 注册日期2002-10-29
  • 最后登录2003-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-05 13:41
大家来看看我的发送和接受子程序:
void ep0_rxdone(void)
{
unsigned char ep_last, i;

ep_last = D12_ReadLastTransactionStatus(0); // Clear interrupt flag

if (ep_last & D12_SETUPPACKET)
        {

ControlData.wLength = 0;
ControlData.wCount = 0;

if( D12_ReadBuffer(0,(unsigned char *)(&(ControlData.DeviceRequest)),sizeof(ControlData.DeviceRequest)) != sizeof(DEVICE_REQUEST))
{

D12_SetEndpointStatus(0, 1);
D12_SetEndpointStatus(1, 1);
bEPPflags.bits.control_state = USB_IDLE;

return;
  }

ControlData.DeviceRequest.wValue = SWAP(ControlData.DeviceRequest.wValue);
ControlData.DeviceRequest.wIndex = SWAP(ControlData.DeviceRequest.wIndex);
ControlData.DeviceRequest.wLength = SWAP(ControlData.DeviceRequest.wLength);

// Acknowledge setup here to unlock in/out endp
D12_AcknowledgeEndpoint(0);
D12_AcknowledgeEndpoint(1);

ControlData.wLength = ControlData.DeviceRequest.wLength;
ControlData.wCount = 0;



if (ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
       {
bEPPflags.bits.setup_packet = 1;
bEPPflags.bits.control_state = USB_TRANSMIT; /* get command */ }

else
{
if (ControlData.DeviceRequest.wLength == 0)
                {
bEPPflags.bits.setup_packet = 1;
bEPPflags.bits.control_state = USB_IDLE; /* set command */
}
else
{
if(ControlData.DeviceRequest.wLength > MAX_CONTROLDATA_SIZE)
{
bEPPflags.bits.control_state = USB_IDLE;
D12_SetEndpointStatus(0, 1);
D12_SetEndpointStatus(1, 1);
}
else
{
bEPPflags.bits.control_state = USB_RECEIVE; /* set command with OUT token */
}
} // set command with data
} // else set command
} // if setup packet

else if (bEPPflags.bits.control_state == USB_RECEIVE)
{ i =D12_ReadBuffer(0, ControlData.dataBuffer + ControlData.wCount,EP0_PACKET_SIZE);

ControlData.wCount += i;

if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength)
{
bEPPflags.bits.setup_packet = 1;      
bEPPflags.bits.control_state = USB_IDLE;
}
}

else
{
bEPPflags.bits.control_state = USB_IDLE;
}

}
//control  in function
void ep0_txdone(void)
{
short i = ControlData.wLength - ControlData.wCount;

D12_ReadLastTransactionStatus(1); // Clear interrupt flag

if (bEPPflags.bits.control_state != USB_TRANSMIT)

{
return;     }
//-------------------------

   if( i >= EP0_PACKET_SIZE)
    //ControlData.pData=&ControlData.dataBuffer;
D12_WriteBuffer(1, ControlData.pData + ControlData.wCount,EP0_PACKET_SIZE);

ControlData.wCount += EP0_PACKET_SIZE;

bEPPflags.bits.control_state = USB_TRANSMIT;
     }
     else if( i != 0)
     { D12_WriteBuffer(1,ControlData.pData + ControlData.wCount,i);

ControlData.wCount += i;

bEPPflags.bits.control_state = USB_IDLE;
      }
      else if (i == 0)
      {
D12_WriteBuffer(1, 0, 0); // Send zero packet at the end ???

bEPPflags.bits.control_state = USB_IDLE;
      }
}

[编辑 -  7/5/03 by  djsnake]
djsnake
驱动牛犊
驱动牛犊
  • 注册日期2002-10-29
  • 最后登录2003-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-05 15:20
而且单步执行时,D12_ReadLastTransactionStatus(0)的输出值为0X03,SETUPPACKET位为零,正好不是安装包,这是为什么?
游客

返回顶部