bbybati
驱动牛犊
驱动牛犊
  • 注册日期2004-12-10
  • 最后登录2005-04-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1141回复:3

ISP1161不能发数据给主机IN包??!!急着求救阿

楼主#
更多 发布于:2004-12-10 16:20
各位老大们!!

我现在做isp1161,我的设备能收到主机发过来的setup包,并且能够ACK它,但却不能发零长度的包给紧接来的IN包?是不是我的程序有问题啊?
枚举过程的图片如附件所示
写端点的程序如下:
int isp116x_dc_WriteEndpoint(int reg, void *buf, int length)
{
int i;
int cnt;
u16 *pData;
 
pData = (u16 *)buf;
_REG_U16(USB_DC_CMD)  = reg;
_REG_U16(USB_DC_DATA) = length; //write length to IN buf
cnt = length >> 1;
    for(i = 0; i < cnt; i++) //write the buffer
    {
        _REG_U16(USB_DC_DATA) = pData;
    }

    isp116x_dc_ValidBuffer(reg); //cmd+0x60 for valid buffer
    return cnt;
}

响应setup包的一段程序如下:
switch (pData->bRequest)
{    
   case USB_REQ_SET_ADDRESS: //设置地址
        isp116x_dc_AcknowledgeSETUP();  //先应答,再设置地址

        addr = pData->wValue & 0x007f;  //低字节为新地址的值
        isp116x_dc_SetAddress(addr);  
                        
isp116x_dc_WriteEndpoint(USB_Control_IN_Buffer,0,0);  
                      //send zero_length packet to host

    break;
   
        case USB_REQ_SET_CONFIGURATION: //设置配置

             isp116x_dc_AcknowledgeSETUP();
             isp116x_dc_WriteEndpoint(USB_Control_IN_Buffer,0,0);  
             //send zero_length packet to host

             break;
            
        default: //其他请求,暂且不做处理
             isp116x_dc_AcknowledgeSETUP();    
             _PRINT("Received undo Request nr");
             return 1;
}

跪求大家帮忙啊!!

[编辑 -  12/10/04 by  bbybati]
tsingkong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-18 12:40
修改一下顺序:

//send zero_length packet to host
isp116x_dc_WriteEndpoint(USB_Control_IN_Buffer,0,0);
addr = pData->wValue & 0x007f; //低字节为新地址的值
isp116x_dc_SetAddress(addr);
呵呵。。。

mailto:tsingkong@163.com
bbybati
驱动牛犊
驱动牛犊
  • 注册日期2004-12-10
  • 最后登录2005-04-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-13 10:24
我用usb分析仪测试的,主机端是收到了ACK,并且发出了IN包,但设备端是NAK。。。

大家可以看看我抓下来的图片
chenlingyan
驱动牛犊
驱动牛犊
  • 注册日期2004-11-17
  • 最后登录2005-01-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-10 18:18
怎么确定能够ACK呢?
游客

返回顶部