tchtc2008
驱动牛犊
驱动牛犊
  • 注册日期2004-06-30
  • 最后登录2012-11-22
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望162点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:1758回复:6

救命:枚举过程中出现问题

楼主#
更多 发布于:2005-04-14 16:31
我在用ISP1581时,枚举不能成功。具体表现为下位机接受到下面9条枚举命令后就接收不到命令了
80 06 00 01 00 00 40 00
00 05 01 00 00 00 00 00
80 06 00 01 00 00 12 00
80 06 00 02 00 00 09 00
80 06 00 02 00 00 FF 00
80 06 00 01 00 00 12 00
80 06 00 02 00 00 09 01
00 09 01 00 00 00 00 00
80 08 00 00 00 00 01 00

对应的固件程序

void get_configuration(void)
{
if(XmtBuff.cmd.cmd_byte[0] == 0x80)
{
    U_EptIndex = 0x01;
         U_EptBLength = 1;
         U_DATA =configurationValue;;     U_EptCtrl = 0x08;
}else
{
Stall_EP0();
}
}

void set_configuration(void)
{
char j;
if (XmtBuff.cmd.cmd_byte[0] == 0x00)
{
U_EptIndex = 0x01;
U_EptBLength = 0x00;
U_EptCtrl = 0x08 | 0x02;
j = XmtBuff.cmd.cmd_byte[2];
if(j == 0x00)
{
configurationValue=0;
}
else if(j == 0x01)
{
configurationValue=1;
}
}
else
{
Stall_EP0();
}
}

而且用Bus Hound无法看到任何数据。
我是否可以理解为上面的8条命令执行是正确的,只是第9条命令出了问题?会不会是上面的驱动存在问题?
tchtc2008
驱动牛犊
驱动牛犊
  • 注册日期2004-06-30
  • 最后登录2012-11-22
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望162点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-15 08:55
这是BUS HUND捕获的数据
13  CTL    80 06 00 01 - 00 00 12 00  GET DESCRIPTR
13  DI     12 01 00 02 - 00 00 00 40  .......@
           71 04 90 08 - 01 01 00 00  q.......
           00 01                      ..        
13  CTL    80 06 00 02 - 00 00 09 01  GET DESCRIPTR
13  DI     09 02 2e 00 - 01 01 00 c0  ........
            c8 09 04 00 - 00 04 00 00  ........
            00 00 07 05 - 01 02 40 00  ......@.
            01 07 05 81 - 02 40 00 01  .....@..
 13  CTL    00 09 01 00 - 00 00 00 00  SET CONFIG
 13  CTL    80 08 00 00 - 00 00 01 00  GET CONFIG
 13  DI     01                         .        
 13  CTL    81 0a 00 00 - 00 00 01 00  GET INTERFACE
 13  DI     ff                         .          
 13  USTS   00 0e 00 c0                error  
从数据中看,好像是GET INTERFACE命令出了问题,但是我下位机并没有收到GET INTERFACE命令,它返回的FF是如何来的?
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-15 11:02
从你的数据上分析,你的设备是01类设备,不是标准设备.
你的程序是否对GET INTERFACE命令进行解析和处理?你查查看你在
GET INTERFACE程序里干了什么.如果没有对他进行处理的话,查查协
议看看对01类设备的要求是什么.
另:你可以将你的设备类改为标准类(00),然后再试试看能否正常枚举
新手上路,请多关照.
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-15 13:14
mail 你了,试试
tchtc2008
驱动牛犊
驱动牛犊
  • 注册日期2004-06-30
  • 最后登录2012-11-22
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望162点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-21 19:08
你说的太对了,我用BUS HUND看,就是GET INTERFACE命令后就停止了,好像返回的数据是FF,然后提示USB状态出错。我的GET INTERFACE函数没有进行解析。请问如何改成00类,或者如何解析?谢谢,郁闷了好多天。

niufen21
驱动牛犊
驱动牛犊
  • 注册日期2009-04-15
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2009-04-17 23:48
你是怎么解决问题的???
lang5312
驱动牛犊
驱动牛犊
  • 注册日期2005-10-08
  • 最后登录2009-08-25
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望284点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2009-08-12 14:44
解决方法说来看看啊!
游客

返回顶部